Multi-Client TCP Server /w Swing GUI

Hi everybody,
i have to develop a Multi-Client TCP Server with a Swing GUI. The GUI mainly consists of a JTable which shows various trace messages from processes running on other computers. As the data needs to be filtered i�m using a custom TableModel derived from AbstractTableModel. I�m creating a new thread for every client that connects as shown in http://java.sun.com/developer/onlineTraining/Programming/BasicJava2/socket.html
Now every client thread reads data from its TCP connection and puts it into the JTable by calling the method addRow of the model. But i�m getting strange NullPointerExceptions and IndexOutOfBoundExceptions when data arrives (i�m using ArrayList in the model). These exceptions never show in a single-threaded Swing app (i�ve tested this already, so i don�t think it�s a bug in my model), so i think this is a problem with Swing�s thread unsafety? Do you have any hints on how to get away with it? Also general design tips for a Multi-Client TCP Server /w Swing GUI are greatly appreciated.
Thanks in advance!
Best regards,
Disposable_Hero

Of course, but i don�t think it is the model (as said before it works fine in a single thread swing app)
Here�s the code:
public class LogTableModel extends AbstractTableModel{
private Vector dataVector;
private Vector filterVector;
private String[] columnIdentifiers;
private Vector filteredbyProcess;
private Vector filteredbyLoglevel;
private boolean bEnableRefresh;
/** Creates a new instance of LogTableModel */
public LogTableModel() {
dataVector=new Vector(0);
columnIdentifiers=new String[]{"LogTime","HostName","IP","ProcessName","LogLevel","Handle","PID","TID","LogData"};
filteredbyProcess=new Vector(0);
filteredbyLoglevel=new Vector(0);
filterVector=new Vector(0);
bEnableRefresh=true;
public synchronized void enableRefresh(boolean bEnableRefresh){
this.bEnableRefresh=bEnableRefresh;
if(bEnableRefresh){
this.buildIndexListBasedOnFilter();
public synchronized void addRow(LogLine row){
dataVector.add(row);
if(bEnableRefresh)
this.buildIndexListBasedOnFilter();
public synchronized void addFilter(Filter filter){
filterVector.add(filter);
if(filter.isActive())
this.buildIndexListBasedOnFilter();
public synchronized void setFilterActive(String name,boolean active){
int i;
for(i=0;i<filterVector.size();i++)
if(((Filter)filterVector.elementAt(i)).getName().equals(name))
break;
Filter tmp=(Filter)filterVector.elementAt(i);
tmp.setActive(active);
if(active)
this.buildIndexListBasedOnFilter();
public synchronized void setFilterLoglevel(String name,int Loglevel){
int i;
for(i=0;i<filterVector.size();i++)
if(((Filter)filterVector.elementAt(i)).getName().equals(name))
break;
Filter tmp=(Filter)filterVector.elementAt(i);
tmp.setLoglevel(Loglevel);
if(tmp.isActive()==false)
this.buildIndexListBasedOnFilter();
private void buildIndexListBasedOnFilter(){
filteredbyProcess.clear();
filteredbyLoglevel.clear();
applyProcessFilter();
applyLoglevelFilter();
if(bEnableRefresh)
this.fireTableDataChanged();
private void applyProcessFilter(){
LogLine line=null;
Filter filter=null;
for(int i=0;i<dataVector.size();i++){
for(int j=0;j<filterVector.size();j++){
filter=(Filter)filterVector.elementAt(j);
line=(LogLine)dataVector.elementAt(i);
if(filter.isActive()&&(filter.getName().equals(line.getProcessName()))){
line.setHidden(true);
break;
else{
line.setHidden(false);
if(line.getHidden()!=true)
filteredbyProcess.add(new Integer(i));
private void applyLoglevelFilter(){
for(int i=0;i<filteredbyProcess.size();i++){
int index=((Integer)filteredbyProcess.get(i)).intValue();
LogLine line=(LogLine)dataVector.elementAt(index);
for(int j=0;j<filterVector.size();j++){
if(((Filter)filterVector.elementAt(j)).getName().equals(line.getProcessName())){
Filter filter=(Filter)filterVector.elementAt(j);
if((filter.getLoglevel()&line.getLogLevelAsInt())!=line.getLogLevelAsInt())
line.setHidden(true);
else
filteredbyLoglevel.add(new Integer(index));
break;
public synchronized String getColumnName(int columnIndex){
return columnIdentifiers[columnIndex];
public synchronized void clearData(){
dataVector.clear();
filteredbyProcess.clear();
filteredbyLoglevel.clear();
public synchronized int getColumnCount() {
return columnIdentifiers.length;
public synchronized int getRowCount() {
return filteredbyLoglevel.size();
public synchronized Object getValueAt(int rowIndex, int columnIndex) {
int iIndex=((Integer)filteredbyLoglevel.get(rowIndex)).intValue();// hier krachts warum???
LogLine tmp=(LogLine)dataVector.elementAt(iIndex);
switch(columnIndex){
case 0:
return tmp.getLogTime();
case 1:
return tmp.getHostName();
case 2:
return tmp.getIP();
case 3:
return tmp.getProcessName();
case 4:
return tmp.getLogLevel();
case 5:
return tmp.getHandle();
case 6:
return tmp.getProcessID();
case 7:
return tmp.getThreadID();
case 8:
return tmp.getLogData();
default:
return null;

Similar Messages

  • Conneting Tcp Server from swing

    Hello Techies,
    I have to connect TCP server from swing. I had developed GUI. Now I have to connect TCP server from swing.
    Here question araise where I have to give information about the server details.
    Can any body guide me??
    Thanks,
    Ramu

    presently I can say I am having 2 combo boxes, 1 text field and one submit button.
    When i click on submit i have to connect the TCP server and get the reply.
    How can I do this one.
    regards,
    ramu.

  • Need help in setting up a Multi Client chat server.

    I've been stuck at this problem longer than I should be, and it's starting to get to me.
    In my quest to learn more about networking in Java, I've decided to start with a simple multi client chat program. The problem is that I don't know exactly how to go about setting it up.
    I can't think of any way for multiple threads to be able to send data to the central server so that can then be sent to every other client, and also be able to request data and have it sent back just to the client that requested it.
    I think part of my problem might be that my knowledge of threads is somewhat limited, and that I might be overlooking or over complicating something.

    If you're trying to develop webapplications then I'm not too sure if SunONE 6.1 is the best platform considering that its support for jsp, servlets and the likes is rather outdated. Personally I'd look into http://www.sun.com/download/products.xml?id=446518d5 (Java webserver 7 rc3) if you wish to continue using a webserver with integrated java container.
    Otherwise you might benefit more from https://glassfish.dev.java.net (project glassfish), which is naturally also included in the http://java.sun.com/javaee (Java EE5).
    Just my 2 cents.

  • Connecting TCP server from swing

    Hello Techies,
    From swing application i am trying to connect TCP server. I am able to connect TCP server.
    But I am having problem in action Performed().
    Until i close the Jpanel , the request is not going to the TCP server.
    In my Jpanel, I am having 2 combo boxes, One text field and one button.
    when i click the button this request has to be sent to the TCP server.
    How can i do this one??
    can any body help me.
    Thanks (In advance),
    Ramu

    No body is having answer??

  • Multi-client Server Design

    Hello all,
    I'm really looking for best practices on multi-client UDP or TCP servers. In reading the java tutorials, it seems like the way to go for multi-client TCP servers is a threaded application, with threads for each client connection. I haven't found out what one would do for a multi-client UDP application....
    Anyways, I was hoping you might be able to point me to some tutorials/online learning resources that deal in design/best-practices.

    Hello all,
    I'm really looking for best practices on multi-client UDP or TCP servers. In reading the java tutorials, it seems like the way to go for multi-client TCP servers is a threaded application, with threads for each client connection. I haven't found out what one would do for a multi-client UDP application....
    Anyways, I was hoping you might be able to point me to some tutorials/online learning resources that deal in design/best-practices.

  • My Tcp/ip multi-client server is not passing the data string into the flatten to string vi

    I am using labview Multi-connection cleint and server to build my own multi-client server connection.
      The problem i am having is that the data does not get through the flatten to string vi. Would anyone be kind enough to tell me why is that happening? and what I do to fix it.
      Attached code . My goal is to send data to the client via tcp/ip and use the data to perform certain task.
      Thanks a whole lot
    Attachments:
    multiconnection-server.vi ‏39 KB
    multiconnection-client.vi ‏21 KB

    Instead, I decided to upload the code and recent mods I have made to it .
    see attached
    Attachments:
    multiconnection-clienttest.vi ‏43 KB
    multiconnection-servertest.vi ‏21 KB

  • Client Server Socket With GUI

    Hi,
    As the name of the forum suggests I am very new to this whole thing.
    I am trying to write a client/server socket program that can encrypt and decrypt and has a GUI, can't use JCE or SSL or any built in encryption tools.
    I have the code for everything cept the encryption part.
    Any help, greatly appreciated,

    tnks a million but how do i incorporate that into the following client and server code:
    here's the client code:
    import java.awt.Color;
    import java.awt.BorderLayout;
    import java.awt.event.*;
    import javax.swing.*;
    import java.io.*;
    import java.net.*;
    class SocketClient extends JFrame
              implements ActionListener {
    JLabel text, clicked;
    JButton button;
    JPanel panel;
    JTextField textField;
    Socket socket = null;
    PrintWriter out = null;
    BufferedReader in = null;
    SocketClient(){ //Begin Constructor
    text = new JLabel("Text to send over socket:");
    textField = new JTextField(20);
    button = new JButton("Click Me");
    button.addActionListener(this);
    panel = new JPanel();
    panel.setLayout(new BorderLayout());
    panel.setBackground(Color.white);
    getContentPane().add(panel);
    panel.add("North", text);
    panel.add("Center", textField);
    panel.add("South", button);
    } //End Constructor
    public void actionPerformed(ActionEvent event){
    Object source = event.getSource();
    if(source == button){
    //Send data over socket
    String text = textField.getText();
    out.println(text);
         textField.setText(new String(""));
    //Receive text from server
    try{
         String line = in.readLine();
    System.out.println("Text received :" + line);
    } catch (IOException e){
         System.out.println("Read failed");
         System.exit(1);
    public void listenSocket(){
    //Create socket connection
    try{
    socket = new Socket("HUGHESAN", 4444);
    out = new PrintWriter(socket.getOutputStream(), true);
    in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
    } catch (UnknownHostException e) {
    System.out.println("Unknown host: HUGHESAN.eng");
    System.exit(1);
    } catch (IOException e) {
    System.out.println("No I/O");
    System.exit(1);
    public static void main(String[] args){
    SocketClient frame = new SocketClient();
         frame.setTitle("Client Program");
    WindowListener l = new WindowAdapter() {
    public void windowClosing(WindowEvent e) {
    System.exit(0);
    frame.addWindowListener(l);
    frame.pack();
    frame.setVisible(true);
         frame.listenSocket();
    SERVER Code
    import java.awt.Color;
    import java.awt.BorderLayout;
    import java.awt.event.*;
    import javax.swing.*;
    import java.io.*;
    import java.net.*;
    class SocketServer extends JFrame
              implements ActionListener {
    JButton button;
    JLabel label = new JLabel("Text received over socket:");
    JPanel panel;
    JTextArea textArea = new JTextArea();
    ServerSocket server = null;
    Socket client = null;
    BufferedReader in = null;
    PrintWriter out = null;
    String line;
    SocketServer(){ //Begin Constructor
    button = new JButton("Click Me");
    button.addActionListener(this);
    panel = new JPanel();
    panel.setLayout(new BorderLayout());
    panel.setBackground(Color.white);
    getContentPane().add(panel);
    panel.add("North", label);
    panel.add("Center", textArea);
    panel.add("South", button);
    } //End Constructor
    public void actionPerformed(ActionEvent event) {
    Object source = event.getSource();
    if(source == button){
    textArea.setText(line);
    public void listenSocket(){
    try{
    server = new ServerSocket(4444);
    } catch (IOException e) {
    System.out.println("Could not listen on port 4444");
    System.exit(-1);
    try{
    client = server.accept();
    } catch (IOException e) {
    System.out.println("Accept failed: 4444");
    System.exit(-1);
    try{
    in = new BufferedReader(new InputStreamReader(client.getInputStream()));
    out = new PrintWriter(client.getOutputStream(), true);
    } catch (IOException e) {
    System.out.println("Accept failed: 4444");
    System.exit(-1);
    while(true){
    try{
    line = in.readLine();
    //Send data back to client
    out.println(line);
    } catch (IOException e) {
    System.out.println("Read failed");
    System.exit(-1);
    protected void finalize(){
    //Clean up
    try{
    in.close();
    out.close();
    server.close();
    } catch (IOException e) {
    System.out.println("Could not close.");
    System.exit(-1);
    public static void main(String[] args){
    SocketServer frame = new SocketServer();
         frame.setTitle("Server Program");
    WindowListener l = new WindowAdapter() {
    public void windowClosing(WindowEvent e) {
    System.exit(0);
    frame.addWindowListener(l);
    frame.pack();
    frame.setVisible(true);
         frame.listenSocket();
    Again help on this is very welcomed

  • OSX: multi client server app with NSNetService

    hello
    i have a small osx server app
    that uses NSNetService to manage connection and set up streams
    but it seems to stop advertising as soon as a clients connects
    how can i make it multiclient so it keeps advertising and when a new client connects uses the same streams ?
    thanks in advance
    nonnus

    superdeportivo wrote:
    Hello fellahs, as the title of this post says I'm making a client and server application. The server are supposed to handel several clients, and the communication is done true UDP. Out of interest why have you chosen UDP rather than TCP?
    I have got two questions concerning this. The first one is if a exception is throws in the server should I then send the exception back to the client in serialized form. If I choose to do this then I also would need to handel the exception classen to the client. Or should I send back a regular IOException and use it's init cause to define the exception which occured in the server. That is up to you, you can do either. I would do the first option.
    The second question is concerning the multi client support. If this is going to work then I would need to time-out the connection i the server environment, and I have not a clue about how long it should be?It should be long enough that you don't timeout a valid connection. There is no simple answer to this.

  • Handle Received data of Multiple TCP clients on TCP Server by displaying them into Datagrid

    Hello All,
    I have developed a C# based TCP server GUI application which is accepting the data from multiple TCP clients on TCP server.
    The data i am receiving from TCP clients is a 32 bit data. In my application multiple TCP client data goes like this:
    00012331100025123000124510321562
    01112563110002512456012451032125 and so on...
    Now i want those data of the TCP clients to be parsed into 4 bits first and display it in 8 columns (32/4=8) of (say) datagrid as each 4 bit represents some characteristics of the TCP client. The same thing
    should work for next TCP client on second row of datagrid.            
    Can you give me some suggestion or an example how to go about this? Any help would be appreciated.
     Thank you in advance.
    Here is my code for receiving data from multiple TCP clients.
    void m_Terminal_MessageRecived(Socket socket, byte[] buffer)
    string message = ConvertBytesToString(buffer, buffer.Length);
    PublishMessage(listMessages, string.Format("Sockets: {0}", message));
    // Send Echo
    // m_ServerTerminal.DistributeMessage(buffer);
    private string ConvertBytesToString(byte[] bytes, int iRx)
    char[] chars = new char[iRx + 1];
    System.Text.Decoder d = System.Text.Encoding.UTF8.GetDecoder();
    d.GetChars(bytes, 0, iRx, chars, 0);
    string szData = new string(chars);
    return szData;

    Now i want those data of the TCP clients to be parsed into 4 bits first and display it in 8 columns (32/4=8) of (say) datagrid as each 4 bit represents some characteristics of the TCP client. The same thing
    should work for next TCP client on second row of datagrid
    If mean it's a Windows Forms application and you want to display those bits in a DataGridView control, then please see these threads:
    Add row to datagridview
    Programmatically add new row to DataGridView
    We are trying to better understand customer views on social support experience, so your participation in this interview project would be greatly appreciated if you have time. Thanks for helping make community forums a great place.
    Click
    HERE to participate the survey.

  • How to call ejb from a Swing gui application client?

    Hi Everyone,
    I am new to EJB and I have question for calling an ejb from a Swing GUI application client. Can anyone give me an example of how my Swing GUI can call an EJB from a SUN ONE Application Server. If anyone can give me some insight, I appreciate it.

    I have looked up various sources and just can't get it to work. I know I have to use the lookup() method, but I have also seen lookups using IIOP://servename......
    Context ctx = getInitialContext();
    DemoHome dhome = (DemoHome)ctx.lookup("demo.DemoHome");
    or
    Context ctx = getInitialContext();
    DemoHome dhome = (DemoHome)ctx.lookup(java:comp/......)
    so can anyone tell what is the difference between using iiop://servername..... as the lookup string and java:comp/......
    and if using java:comp/ what does this mean? Does it mean that lookup() method is looking for the ejb somewhere in this directory. I would really appreciate if someone can give an example of a Swing GUI calling a ejb from an application server and how the code is actually doing the lookup in and what are each steps it goes through.
    Thanks

  • Async tcp client and server. How can I determine that the client or the server is no longer available?

    Hello. I would like to write async tcp client and server. I wrote this code but a have a problem, when I call the disconnect method on client or stop method on server. I can't identify that the client or the server is no longer connected.
    I thought I will get an exception if the client or the server is not available but this is not happening.
    private async void Process()
    try
    while (true)
    var data = await this.Receive();
    this.NewMessage.SafeInvoke(Encoding.ASCII.GetString(data));
    catch (Exception exception)
    How can I determine that the client or the server is no longer available?
    Server
    public class Server
    private readonly Dictionary<IPEndPoint, TcpClient> clients = new Dictionary<IPEndPoint, TcpClient>();
    private readonly List<CancellationTokenSource> cancellationTokens = new List<CancellationTokenSource>();
    private TcpListener tcpListener;
    private bool isStarted;
    public event Action<string> NewMessage;
    public async Task Start(int port)
    this.tcpListener = TcpListener.Create(port);
    this.tcpListener.Start();
    this.isStarted = true;
    while (this.isStarted)
    var tcpClient = await this.tcpListener.AcceptTcpClientAsync();
    var cts = new CancellationTokenSource();
    this.cancellationTokens.Add(cts);
    await Task.Factory.StartNew(() => this.Process(cts.Token, tcpClient), cts.Token, TaskCreationOptions.LongRunning, TaskScheduler.Default);
    public void Stop()
    this.isStarted = false;
    foreach (var cancellationTokenSource in this.cancellationTokens)
    cancellationTokenSource.Cancel();
    foreach (var tcpClient in this.clients.Values)
    tcpClient.GetStream().Close();
    tcpClient.Close();
    this.clients.Clear();
    public async Task SendMessage(string message, IPEndPoint endPoint)
    try
    var tcpClient = this.clients[endPoint];
    await this.Send(tcpClient.GetStream(), Encoding.ASCII.GetBytes(message));
    catch (Exception exception)
    private async Task Process(CancellationToken cancellationToken, TcpClient tcpClient)
    try
    var stream = tcpClient.GetStream();
    this.clients.Add((IPEndPoint)tcpClient.Client.RemoteEndPoint, tcpClient);
    while (!cancellationToken.IsCancellationRequested)
    var data = await this.Receive(stream);
    this.NewMessage.SafeInvoke(Encoding.ASCII.GetString(data));
    catch (Exception exception)
    private async Task Send(NetworkStream stream, byte[] buf)
    await stream.WriteAsync(BitConverter.GetBytes(buf.Length), 0, 4);
    await stream.WriteAsync(buf, 0, buf.Length);
    private async Task<byte[]> Receive(NetworkStream stream)
    var lengthBytes = new byte[4];
    await stream.ReadAsync(lengthBytes, 0, 4);
    var length = BitConverter.ToInt32(lengthBytes, 0);
    var buf = new byte[length];
    await stream.ReadAsync(buf, 0, buf.Length);
    return buf;
    Client
    public class Client
    private TcpClient tcpClient;
    private NetworkStream stream;
    public event Action<string> NewMessage;
    public async void Connect(string host, int port)
    try
    this.tcpClient = new TcpClient();
    await this.tcpClient.ConnectAsync(host, port);
    this.stream = this.tcpClient.GetStream();
    this.Process();
    catch (Exception exception)
    public void Disconnect()
    try
    this.stream.Close();
    this.tcpClient.Close();
    catch (Exception exception)
    public async void SendMessage(string message)
    try
    await this.Send(Encoding.ASCII.GetBytes(message));
    catch (Exception exception)
    private async void Process()
    try
    while (true)
    var data = await this.Receive();
    this.NewMessage.SafeInvoke(Encoding.ASCII.GetString(data));
    catch (Exception exception)
    private async Task Send(byte[] buf)
    await this.stream.WriteAsync(BitConverter.GetBytes(buf.Length), 0, 4);
    await this.stream.WriteAsync(buf, 0, buf.Length);
    private async Task<byte[]> Receive()
    var lengthBytes = new byte[4];
    await this.stream.ReadAsync(lengthBytes, 0, 4);
    var length = BitConverter.ToInt32(lengthBytes, 0);
    var buf = new byte[length];
    await this.stream.ReadAsync(buf, 0, buf.Length);
    return buf;

    Hi,
    Have you debug these two applications? Does it go into the catch exception block when you close the client or the server?
    According to my test, it will throw an exception when the client or the server is closed, just log the exception message in the catch block and then you'll get it:
    private async void Process()
    try
    while (true)
    var data = await this.Receive();
    this.NewMessage.Invoke(Encoding.ASCII.GetString(data));
    catch (Exception exception)
    Console.WriteLine(exception.Message);
    Unable to read data from the transport connection: An existing   connection was forcibly closed by the remote host.
    By the way, I don't know what the SafeInvoke method is, it may be an extension method, right? I used Invoke instead to test it.
    We are trying to better understand customer views on social support experience, so your participation in this interview project would be greatly appreciated if you have time. Thanks for helping make community forums a great place.
    Click
    HERE to participate the survey.

  • How can I make a TCP server for muticonnec​tion clients??

    Dear group,
    I try to change a complicated TCP server with only one client posibility to
    a multiclient.
    I've seen the examples, even some solution on the ni web, but I don't
    understand very well how it's works. I need also logging for each client in
    a different file.
    Thanks for your help.

    The best example I have found is this one
    Understanding Client-Server Applications -- Example Code
    There are a couple of good links to tutorials off the page as well.
    If you have questions about the specific example let us know what they are.

  • TCP SERVER labview CLIENT not labview

    Hi
    I maked a little TCP server with labview like the example with little modification (I read data from serial port...)
    If I use client build with labview I launche client and I read every time data until clint disconnect, if I use a client not build in labview I read only one time not in continue (server doens't write after the first time also if client is connect)
    Can you help me?
    best regards
    elisa
    Attachments:
    Multiple Connections - Servercon Seriale.vi ‏161 KB

    HI,
    Can you explain in detail how you modify your program.
    Can you post your working program for both server and client.
    Hopefully, get a reply from you.
    Thank you,
    Hussin

  • RE: vb client - forte server

    Have you thought about tagging a Forte Service Object as an OLE object and
    using that OLE object in VB?
    -----Original Message-----
    From: Adupa Praveen Kumar [mailto:[email protected]]
    Sent: Tuesday, June 30, 1998 11:51 AM
    To: [email protected]
    Subject: vb client - forte server
    Hi friends,
    how can i user forte service object services in vb client application.
    thanks,
    Praveen
    Goldstone Softech Ltd.
    India.
    Get Your Private, Free Email at http://www.hotmail.com
    To unsubscribe, email '[email protected]' with
    'unsubscribe forte-users' as the body of the message.
    Searchable thread archive <URL:http://pinehurst.sageit.com/listarchive/>
    To unsubscribe, email '[email protected]' with
    'unsubscribe forte-users' as the body of the message.
    Searchable thread archive <URL:http://pinehurst.sageit.com/listarchive/>

    The point is you are bound to do VB.Net for web services and it is not VB at all.
    The syntax surely resembles VB but wait till you see what you have instead of good old PRINT!
    VB.Net is not a continuation of VB, it is something radically different that you will have to learn. And if I had to choose between learning VB.Net and Java/Swing, I would go for the latter. I think the third choice, C#, is definitely the winner on all aspects of programming on the Windows platform. The GUI building gap is not as wide as it was with Visual C++ and VB, in fact, it is almost non-existant: .Net's Windows-forms can be developed rapidly either with C# or VB.Net; basically you get the same tool to develop GUIs.
    All things said, there is an excellent article at http://www.theserverside.com/resources/article.jsp?l=SOAP-And-EJB discussing when to opt for SOAP in an EJB environement.
    Hope it helps.

  • Launching Swing GUI from Oracle Forms Web Based

    Hi there,
    I have oracle forms which call a shell script which initiates the java swing gui. I am using host command to run this script. When I am doing it on unix server everything works fine. Now we want same application on web now i am getting problem. The host command is not working in this case. It can not launch the java gui. Can anybody tell me what will be the nice approach to do it.
    Thanks
    Ranjan

    Hi,
    you'll have to create a Java Bean in Forms that calls the runtime. You can also use webutil, available on otn to call a client side host command.
    Frank

Maybe you are looking for