2 Java Applications Talking Corba or Socket communication

So, I have 2 Java applications that need to talk to each other remotely. One application send a request to the other with an ID. After the other application processes that request, it send back a status with the ID.
I am not up on Corba, but am familar with Socket based communication. Before I just go and code it with how I am familar, I was wondering if someone had a small summary of why I should try and take the time to learn Corba and code the communication that way.
Creating and using the Sockets in Java is so simplistic, is that the case with Corba? Sorry for the general question, but need some advice from the experts. Thanks....

Normal CORBA (as in Java IDL) is probably way too complicated for what you're trying to do, unless you're thinking of someday having the programs talk with non-Java programs.
I'd start with Java RMI rather than RMI-IIOP since you can probably find more tutorials and docs on it (though the RMI-IIOP 1.4 docs here are really quite good). That way, you're writing everything in Java, at least.
For remote object systems, all the advantaged of object oriented programming come into play, especially extensibility. What if you need to change the wire format to add more information in your socket system but need to maintain compatibility with older clients? What if you need to add security or handle multiple clients at once? What if you'd rather rely on existing serialization methods rather than code your own wire format for everything you want to send (making you write more code)? You can serialize any Java Serializable over Java RMI. That lets you send things without violating encapsulation. What if you want to talk to programs that aren't written in Java? What about automatic failure recovery if the server crashes? etc etc.

Similar Messages

  • Socket communication failure between Java applet and C++ application

    I have a java applet that connects to a C++ application via Java's ServerSocket and Socket objects. THe C++ application is using the Winsock 2 API. The applet and application are running on an NT workstation (SP 6) and using IE (5.5) For a very simple C++ test applications the communictions work fine. Once more code gets added to the C++ application the portion of the socket that C++ listens to seems to close. Upon performing a recv call the return value is a zero. Microsoft insists this is a sign the Java side has shut down the socket. The Java applet can still receive messages from the C++ app but C++ cannot receive responses from the Java side. Java throws no exceptions and an explicit check of the socket shows no errors. Again, what puzzles me is that it works for simple C++ applications. Are there any known conflicts between Java and C++ in this regard?
    I have inlcuded the basic java code segments below.
    / run Method.
      * This method is called by the Thread.start() method. This
      * method is required for the implementation of the Runnable interface
      * This method sets up the server side socket communication and
      * contiuously loops looking for requests from a external
      * socket.
      * @author Chris Duke
      public void run(){
         // create socket connections
         boolean success = false;
         try {
             cServerSocket = new ServerSocket(cPortID);
             System.out.println("Waiting for client to connect...");
             cClientSocket = cServerSocket.accept();
             System.out.println("Client connected");
             // Create a stream to read from the client
             cInStream = new BufferedReader(new InputStreamReader(
               cClientSocket.getInputStream()));
             // Create a stream to write to the client       
             cOutStream = new PrintWriter(
               cClientSocket.getOutputStream(), true);
             success = true;
         }catch (IOException e) {
             System.out.println("CommSocket:Run - Socket Exception(1) " + e);
             success = false;
         // if the socket was successfully created, keep the thread running
         while (success){
             try{
                // check socket to see if it is still available for reading
                if (cInStream != null && cInStream.ready()){
                    // check for an incoming message
                    String message = ReceiveMessage();
                    // Send message to listeners
                    Event(message);
                if (cInStream == null){
                    success = false;
                    System.out.println("CommSocket:Run - shutdown");
             }catch (IOException e){
                System.out.println("CommSocket:Run - Socket not ready exception");
                break;
    // SendMessage method -
      *  Sends a text message to a connected listener through port specified by portID
      * @author Chris Duke
      * @param  String message - This will be the message sent out through the server
      * socket's port specified by portID.
       public void SendMessage(String message){
          cOutStream.println(message);
          if (cOutStream.checkError() == true)
            System.out.println("SendMessage : Flush = Error");
          else{
            System.out.println("SendMessage : Flush - No Error");
       }

    a very simple C++ test applications the communictions work fine. Once more code gets added to the C++ application the portion of the socket that C++ listens to seems to close.
    This quite strongly implicates the extra code in the C++ App. The firstly thing I would try would be telnet. Try connecting to both versions of the C++ Application and manually reproducing a proper exchange.
    a recv call the return value is a zero. Microsoft insists this is a sign the Java side has shut down the socket.
    A correct implementation of recv should return the number of bytes received, or -1 for an error. A zero return indicates no bytes received not a socket closed/error. This sounds like FUD to me.
    Are there any known conflicts between Java and C++ in this regard?
    I can see no obvious faults, though the code is incomplete, I don't think it's an sockets implementation issue, at either end, it sounds more likely to be a protocol/handshaking bug in the C++ App.

  • Java WD and Socket Communication

    Hi,
    Is it possible to use Java Socket Communication with Java Web Dynpro. Or if not what is the best approach to have a Java Socket program integrated with a Web Dynpro Communication.
    Basically, I have an application which provides API for communication via Java Sockets.And this needs to be integrated in our SAP application.
    Thanks,
    CD

    Hi,
    You are currently using JCO to "Connect to a Remote System" - JCO will connect to a back-end with the main purpose of "executing BAPI's" in it.
    When you move to WebDynpro, you have what SAP calls Adaptive RFC Model - this will create a "Model Entity" in you WD Project that will do the same thing your JCO does.
    Assume your JCO now calls "BAPI_GET_FLIGHTS", to return the Flights that are currently available - In your newly create WDP Project, you will manually specify what back-end you wanna use when "Importing" and you will tell also the BAPI name. WDP will generate the class structure that you need in order to execute that function.
    JCO is what SAP created to execute BAPI's. JCO can be used by any "Java" like application that needs to connect to the back-end. But when you move to WDP, you don't need to use this anymore - You will use WDP Models.
    Youi will still need your JCO Destinations created in the Application Server, so behind the scenes WDP creates a "layer" so you don't need to code the JCO calls manually.
    Regards,
    Daniel

  • Use of synchronized queue for java socket communications

    Hi all,
    We have a need for a server socket application (stand alone java application) to process just one command per time coming from a java socket client (JSP Web application). There are a lot of users accessing the java socket client, but the server socket can only handle one command per time, so there is a need of a queue type, so users will have to wait for their time.
    We've been told that we can use "synchronized Queue", but we don't know what it is and how to use. A URL, book etc. with sample code would assist us, since we are new to both java socket communication and queue of commands.
    Can anyone assist us
    cheers
    Trajano
    P.S.
    The server socket java application has two threads:
    1st thread handles the java socket communication;
    2nd thread is a RS-232 serial driver that communicates to several micro-controllers connected on a multi-drop.
    JSP web app client socket users can issue various commands at the same time to the java server socket app, however the server can only service one command per time (just one RS-232 COM1 serial port available). The commands have to somehow be added to a queue for processing.

    I do not have the experience to offer advice. But I just happened to be reading today about Collections.synchronizedList.
    import java.util.List;
    import java.util.LinkedList;
    import java.util.Collections;
    public class Queue {
       private List queue;
       public Queue() {
          queue = Collections.synchronizedList(new LinkedList());
       public Object removeItem() throws InterruptedException {
          synchronized (queue) {
             while (queue.isEmpty())
                queue.wait();
             return queue.remove(0);
       public void addItem(Object item) {
          synchronized (queue) {
             queue.add(item);
             queue.notifyAll();
    class Test {
       public static void main(String[] args) {
          final Queue queue = new Queue();
          //start a thread to process items from the queue
          Runnable work = new Runnable() {
             public void run() {
                try {
                   Object item = queue.removeItem();
                   //do something with item
                } catch (InterruptedException e) {
                   //handle this
          Thread worker = new Thread(work);
          worker.start();
    }Reference: Java Thread Programming, Paule Hyde
    Also, here is Doug Lea's library,
    http://gee.cs.oswego.edu/dl/classes/EDU/oswego/cs/dl/util/concurrent/intro.html

  • Socket communication problem

    hello all,
    i have written a small program to send a message to echo server and get back the response from the server.
    it gives a error as
    COULD NOT GET I/O FOR CONNECTION TO <ip address>
    i am working on win nt version 4 service pack 4 installed on a home computer.
    the code is as below:
    import java.io.*;
    import java.net.*;
    public class net4a {
    public static void main(String[] args) throws IOException{
    Socket echoSocket = null;
    DataOutputStream os = null;
    DataInputStream is = null;
         DataInputStream stdIn = new DataInputStream(System.in);
         InetAddress host = InetAddress.getLocalHost();
    try {
    echoSocket = new Socket(host, 7);
    os = new DataOutputStream(echoSocket.getOutputStream());
    is = new DataInputStream(echoSocket.getInputStream());
    } catch (UnknownHostException e) {
    System.err.println("Don't know about host: " + host);
    } catch (IOException e) {
    System.err.println("Couldn't get I/O for the connection to: " + host);
    if (echoSocket != null && os != null && is != null) {
    try {
    String userInput;
    while ((userInput = stdIn.readLine()) != null) {
    os.writeBytes(userInput);
    os.writeByte('\n');
    System.out.println("echo: " + is.readLine());
    os.close();
    is.close();
    echoSocket.close();
    } catch (IOException e) {
    System.err.println("I/O failed on the connection to: " + host);
    look forward to ur valuable tips on the same.

    Hello,
    Long time java programmer, first time forum user.
    Looks like you looking to looking to get a java applet/program communicating with a web server. This is not an extremely difficult task and I have successfully got apache communicating CGI transactions to and from an applet with no drama�s.
    This is very useful as it is restrictive to have to open up extra sockets across a network as many networks today restrict socket communication often for security or business/organization policies.
    An alternative is to use HTTP request using the POST command to talk to a web server with the web server replying to the request. For example, you may need to ask a database to pull out all customer names from a server-side database. The applet need only send a URLEncoded request to the server, the webserver invokes the CGI process (I use Java to handle the CGI requests but other methods/languages can be used) which returns the result of the transaction.
    I have listed some code that included the a �ping-pong� request to a server. It included the applet function that calls the webserver, the CGI batch script (for win NT/XP) to invoke the java program, the cgi-lib to simply parse the URL request (many thanks to the author) and the server-side java program that responds to the request.
    I hope you find this useful. The download for apache, the webserver, is available at
    http://www.apache.org/
    and is a pretty simple install. Make sure you fix up the httpd.conf file to suit your system.
    Good luck.
    Dale Miller
    CLIENT-SIDE (Java Applet Snippit)
    public class Comm {
         private String server;
         private URL toServer;
         private URLConnection uRLConnection;
         private DataOutputStream dataOutputStream;
         private StringBuffer output;
         private BufferedReader dataInputStream;
         private String result;
         private int resultsLast;
         private String results[] = new String[100];
         private int firstTU;
         //this function starts in its own thread and takes care
         //of logins and there re-tries, the messaging.
         //Please see the actual function for better details
         //private LoginWatcher loginWatcher;
         public Comm(String serverAddress) throws UnsupportedEncodingException{
              System.out.println("loaded Comm class!");
              //First thing we need to do is set up the login watcher
              //loginWatcher = new LoginWatcher();
              this.output = new StringBuffer();
              this.server = serverAddress;
              try {
                   this.toServer = new URL(server + "ping.cgi");
              } catch (MalformedURLException e) {
                   System.out.println("ERROR : in contacting the server");
                   System.out.println("Server : " + server);
                   System.out.println("NOT FOUND!!");
              try {
                   this.uRLConnection = toServer.openConnection();
              } catch (IOException e) {
                   System.out.println("ERROR : Connection to server refused");
              this.uRLConnection.setUseCaches(false);
              this.uRLConnection.setDoInput(true);
              this.uRLConnection.setDoOutput(true);
              this.uRLConnection.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
              try {
                   this.dataOutputStream = new DataOutputStream(uRLConnection.getOutputStream());
              } catch (IOException e) {
                   System.out.println("ERROR : opening dataoutputstream");
              this.output.setLength(0);
              output.append("first=" + URLEncoder.encode("I am", "UTF-8"));
              output.append("&last=" + URLEncoder.encode("number 1", "UTF-8"));
              try {
                   dataOutputStream.writeBytes(new String(output));
              } catch (IOException e) {
                   System.out.println("ERROR : Sending string to cgi ping.cgi");
              try {
                   this.dataInputStream = new BufferedReader(new InputStreamReader(uRLConnection.getInputStream()));
              } catch (IOException e) {
                   System.out.println("ERROR : Setting up input stream");
              String grab = new String();
              System.out.print("Searching for server..");
              try {
                   grab = dataInputStream.readLine();
                   grab = dataInputStream.readLine();
              } catch (IOException e) {
                   System.out.println("ERROR : Reciving ping data from server");
              if (grab.equals("pass")) {
                   System.out.println("OK");
              } else {
                   System.out.println("ERROR\n\nSERVER NOT FOUND!!!");
                   System.exit(-1);
              //loginWatcher.loginWatcherTh.start();
    CGI BATCH TO INVOKE CGI PROGRAM
    #!java -cp c:\ss\ middle
    CGI-LIB TO PARSE HTTP REQUESTS
    import java.util.*;
    import java.io.*;
    * cgi_lib.java<p>
    * <p>
    * Usage: This library of java functions, which I have encapsulated inside
    * a class called cgi_lib as class (static) member functions,
    * attempts to duplicate the standard PERL CGI library (cgi-lib.pl).
    * You must invoke any Java program that uses this library from
    * within a UNIX script, Windows batch file or equivalent. As you
    * will see in the following example, all of the CGI environment
    * variables must be passed from the script into the Java application
    * using the -D option of the Java interpreter. This example
    * UNIX script uses the "main" routine of this class as a
    * CGI script:
    * <pre>
    * (testcgi.sh)
    * #!/bin/sh
    * java \
    * -Dcgi.content_type=$CONTENT_TYPE \
    * -Dcgi.content_length=$CONTENT_LENGTH \
    * -Dcgi.request_method=$REQUEST_METHOD \
    * -Dcgi.query_string=$QUERY_STRING \
    * -Dcgi.server_name=$SERVER_NAME \
    * -Dcgi.server_port=$SERVER_PORT \
    * -Dcgi.script_name=$SCRIPT_NAME \
    * -Dcgi.path_info=$PATH_INFO \
    * cgi_lib
    * </pre>
    * Question and comments can be sent to [email protected].<p>
    * @version 1.0
    * @author Pat L. Durante
    class cgi_lib
    * Parse the form data passed from the browser into
    * a Hashtable. The names of the input fields on the HTML form will
    * be used as the keys to the Hashtable returned. If you have a form
    * that contains an input field such as this,<p>
    * <pre>
    * &ltINPUT SIZE=40 TYPE="text" NAME="email" VALUE="[email protected]"&gt
    * </pre>
    * then after calling this method like this,<p>
    * <pre>
    * Hashtable form_data = cgi_lib.ReadParse(System.in);
    * </pre>
    * you can access that email field as follows:<p>
    * <pre>
    * String email_addr = (String)form_data.get("email");
    * </pre>
    * @param inStream The input stream from which the form data can be read.
    * (Only used if the form data was posted using the POST method. Usually,
    * you will want to simply pass in System.in for this parameter.)
    * @return The form data is parsed and returned in a Hashtable
    * in which the keys represent the names of the input fields.
    public static Hashtable ReadParse(InputStream inStream)
    Hashtable form_data = new Hashtable();
    String inBuffer = "";
    if (MethGet())
    inBuffer = System.getProperty("cgi.query_string");
    else
    // TODO: I should probably use the cgi.content_length property when
    // reading the input stream and read only that number of
    // bytes. The code below does not use the content length
    // passed in through the CGI API.
    DataInput d = new DataInputStream(inStream);
    String line;
    try
    while((line = d.readLine()) != null)
    inBuffer = inBuffer + line;
    catch (IOException ignored) { }
    // Split the name value pairs at the ampersand (&)
    StringTokenizer pair_tokenizer = new StringTokenizer(inBuffer,"&");
    while (pair_tokenizer.hasMoreTokens())
    String pair = urlDecode(pair_tokenizer.nextToken());
    // Split into key and value
    StringTokenizer keyval_tokenizer = new StringTokenizer(pair,"=");
    String key = new String();
    String value = new String();
    if (keyval_tokenizer.hasMoreTokens())
    key = keyval_tokenizer.nextToken();
    else ; // ERROR - shouldn't ever occur
    if (keyval_tokenizer.hasMoreTokens())
    value = keyval_tokenizer.nextToken();
    else ; // ERROR - shouldn't ever occur
    // Add key and associated value into the form_data Hashtable
    form_data.put(key,value);
    return form_data;
    * URL decode a string.<p>
    * Data passed through the CGI API is URL encoded by the browser.
    * All spaces are turned into plus characters (+) and all "special"
    * characters are hex escaped into a %dd format (where dd is the hex
    * ASCII value that represents the original character). You probably
    * won't ever need to call this routine directly; it is used by the
    * ReadParse method to decode the form data.
    * @param in The string you wish to decode.
    * @return The decoded string.
    public static String urlDecode(String in)
    StringBuffer out = new StringBuffer(in.length());
    int i = 0;
    int j = 0;
    while (i < in.length())
    char ch = in.charAt(i);
    i++;
    if (ch == '+') ch = ' ';
    else if (ch == '%')
    ch = (char)Integer.parseInt(in.substring(i,i+2), 16);
    i+=2;
    out.append(ch);
    j++;
    return new String(out);
    * Generate a standard HTTP HTML header.
    * @return A String containing the standard HTTP HTML header.
    public static String Header()
    return "Content-type: text/html\n\n";
    * Generate some vanilla HTML that you usually
    * want to include at the top of any HTML page you generate.
    * @param Title The title you want to put on the page.
    * @return A String containing the top portion of an HTML file.
    public static String HtmlTop(String Title)
    String Top = new String();
    Top = "<html>\n";
    Top+= "<head>\n";
    Top+= "<title>\n";
    Top+= Title;
    Top+= "\n";
    Top+= "</title>\n";
    Top+= "</head>\n";
    Top+= "<body>\n";
    return Top;
    * Generate some vanilla HTML that you usually
    * want to include at the bottom of any HTML page you generate.
    * @return A String containing the bottom portion of an HTML file.
    public static String HtmlBot()
    return "</body>\n</html>\n";
    * Determine if the REQUEST_METHOD used to
    * send the data from the browser was the GET method.
    * @return true, if the REQUEST_METHOD was GET. false, otherwise.
    public static boolean MethGet()
    String RequestMethod = System.getProperty("cgi.request_method");
    boolean returnVal = false;
    if (RequestMethod != null)
    if (RequestMethod.equals("GET") ||
    RequestMethod.equals("get"))
    returnVal=true;
    return returnVal;
    * Determine if the REQUEST_METHOD used to
    * send the data from the browser was the POST method.
    * @return true, if the REQUEST_METHOD was POST. false, otherwise.
    public static boolean MethPost()
    String RequestMethod = System.getProperty("cgi.request_method");
    boolean returnVal = false;
    if (RequestMethod != null)
    if (RequestMethod.equals("POST") ||
    RequestMethod.equals("post"))
    returnVal=true;
    return returnVal;
    * Determine the Base URL of this script.
    * (Does not include the QUERY_STRING (if any) or PATH_INFO (if any).
    * @return The Base URL of this script as a String.
    public static String MyBaseURL()
    String returnString = new String();
    returnString = "http://" +
    System.getProperty("cgi.server_name");
    if (!(System.getProperty("cgi.server_port").equals("80")))
    returnString += ":" + System.getProperty("cgi.server_port");
    returnString += System.getProperty("cgi.script_name");
    return returnString;
    * Determine the Full URL of this script.
    * (Includes the QUERY_STRING (if any) or PATH_INFO (if any).
    * @return The Full URL of this script as a String.
    public static String MyFullURL()
    String returnString;
    returnString = MyBaseURL();
    returnString += System.getProperty("cgi.path_info");
    String queryString = System.getProperty("cgi.query_string");
    if (queryString.length() > 0)
    returnString += "?" + queryString;
    return returnString;
    * Neatly format all of the CGI environment variables
    * and the associated values using HTML.
    * @return A String containing an HTML representation of the CGI environment
    * variables and the associated values.
    public static String Environment()
    String returnString;
    returnString = "<dl compact>\n";
    returnString += "<dt><b>CONTENT_TYPE</b> <dd>:<i>" +
    System.getProperty("cgi.content_type") +
    "</i>:<br>\n";
    returnString += "<dt><b>CONTENT_LENGTH</b> <dd>:<i>" +
    System.getProperty("cgi.content_length") +
    "</i>:<br>\n";
    returnString += "<dt><b>REQUEST_METHOD</b> <dd>:<i>" +
    System.getProperty("cgi.request_method") +
    "</i>:<br>\n";
    returnString += "<dt><b>QUERY_STRING</b> <dd>:<i>" +
    System.getProperty("cgi.query_string") +
    "</i>:<br>\n";
    returnString += "<dt><b>SERVER_NAME</b> <dd>:<i>" +
    System.getProperty("cgi.server_name") +
    "</i>:<br>\n";
    returnString += "<dt><b>SERVER_PORT</b> <dd>:<i>" +
    System.getProperty("cgi.server_port") +
    "</i>:<br>\n";
    returnString += "<dt><b>SCRIPT_NAME</b> <dd>:<i>" +
    System.getProperty("cgi.script_name") +
    "</i>:<br>\n";
    returnString += "<dt><b>PATH_INFO</b> <dd>:<i>" +
    System.getProperty("cgi.path_info") +
    "</i>:<br>\n";
    returnString += "</dl>\n";
    return returnString;
    * Neatly format all of the form data using HTML.
    * @param form_data The Hashtable containing the form data which was
    * parsed using the ReadParse method.
    * @return A String containing an HTML representation of all of the
    * form variables and the associated values.
    public static String Variables(Hashtable form_data)
    String returnString;
    returnString = "<dl compact>\n";
    for (Enumeration e = form_data.keys() ; e.hasMoreElements() ;)
    String key = (String)e.nextElement();
    String value = (String)form_data.get(key);
    returnString += "<dt><b>" + key + "</b> <dd>:<i>" +
    value +
    "</i>:<br>\n";
    returnString += "</dl>\n";
    return returnString;
    * The main routine is included here as a test CGI script to
    * demonstrate the use of all of the methods provided above.
    * You can use it to test your ability to execute a CGI script written
    * in Java. See the sample UNIX script file included above to see
    * how you would invoke this routine.<p>
    * Please note that this routine references the member functions directly
    * (since they are in the same class), but you would have to
    * reference the member functions using the class name prefix to
    * use them in your own CGI application:<p>
    * <pre>
    * System.out.println(cgi_lib.HtmlTop());
    * </pre>
    * @param args An array of Strings containing any command line
    * parameters supplied when this program in invoked. Any
    * command line parameters supplied are ignored by this routine.
    public static void main( String args[] )
    // This main program is simply used to test the functions in the
    // cgi_lib class.
    // That said, you can use this main program as a test cgi script. All
    // it does is echo back the form inputs and enviroment information to
    // the browser. Use the testcgi UNIX script file to invoke it. You'll
    // notice that the script you use to invoke any Java application that
    // uses the cgi_lib functions MUST pass all the CGI enviroment variables
    // into it using the -D parameter. See testcgi for more details.
    // Print the required CGI header.
    System.out.println(Header());
    // Create the Top of the returned HTML
    // page (the parameter becomes the title).
    System.out.println(HtmlTop("Hello World"));
    System.out.println("<hr>");
    // Determine the request method used by the browser.
    if (MethGet())
    System.out.println("REQUEST_METHOD=GET");
    if (MethPost())
    System.out.println("REQUEST_METHOD=POST");
    System.out.println("<hr>");
    // Determine the Base URL of this script.
    System.out.println("Base URL: " + MyBaseURL());
    System.out.println("<hr>");
    // Determine the Full URL used to invoke this script.
    System.out.println("Full URL: " + MyFullURL());
    System.out.println("<hr>");
    // Print all the CGI environment variables
    // (usually only used while testing CGI scripts).
    System.out.println(Environment());
    System.out.println("<hr>");
    // Parse the form data into a Hashtable.
    Hashtable form_data = ReadParse(System.in);
    // Print out each of the name/value pairs
    // from sent from the browser.
    System.out.println(Variables(form_data));
    System.out.println("<hr>");
    // Access a particular form value.
    // (This assumes the form contains a "name" input field.)
    String name = (String)form_data.get("name");
    System.out.println("Name=" + name);
    System.out.println("<hr>");
    // Create the Bottom of the returned HTML page - which closes it cleanly.
    System.out.println(HtmlBot());
    SERVER-SIDE PROGRAM TO RETURN PING
    import java.util.*;
    import java.io.*;
    class ping
         public static void main(String args[]) {
              System.out.println(cgi_lib.Header());
              Hashtable form_data = cgi_lib.ReadParse(System.in);
              String one = (String)form_data.get("first");
              String two = (String)form_data.get("last");
              boolean test;
              test = false;
              if (one.equals("I am")) {
                   if (two.equals("number 1")) {
                        test = true;
              if (test == true) {
                   System.out.println("pass");
              } else {
                   System.out.println("fail");
         //Datavasee
    ENJOY :)

  • Load java applications using PXE or bootp

    hi... i was trying to test the option of booting up a java application using PXE or bootp.. is it possible to do so?? what are the rcommended ways to do it??
    Thanks
    Leonard

    Normal CORBA (as in Java IDL) is probably way too complicated for what you're trying to do, unless you're thinking of someday having the programs talk with non-Java programs.
    I'd start with Java RMI rather than RMI-IIOP since you can probably find more tutorials and docs on it (though the RMI-IIOP 1.4 docs here are really quite good). That way, you're writing everything in Java, at least.
    For remote object systems, all the advantaged of object oriented programming come into play, especially extensibility. What if you need to change the wire format to add more information in your socket system but need to maintain compatibility with older clients? What if you need to add security or handle multiple clients at once? What if you'd rather rely on existing serialization methods rather than code your own wire format for everything you want to send (making you write more code)? You can serialize any Java Serializable over Java RMI. That lets you send things without violating encapsulation. What if you want to talk to programs that aren't written in Java? What about automatic failure recovery if the server crashes? etc etc.

  • Java rmi vs Corba

    Hello guys, I'm currently doing research trying to conduct a performance evaluation on java rmi and corba. To do this I have built a chat application and a file transfer application using both technologies (java rmi and corba) I will be using sockets for the client/server communication, I am currently testing for, memory usage of the client application, average data throughput, total packets sent and lost and cpu times for both client and server, I'm still researching on the best possible way to conduct the test and would appreciate it if anyone could help me on what tools to use and ways to conduct this test, thanks...

    I will be using sockets for the client/server communicationYou will be using RMI or Corba for the client/server communication actually.
    I am currently testing for, memory usage of the client application, average data throughput, total packets sent and lost and cpu times for both client and serverYou should also test latency
    I'm still researching on the best possible way to conduct the test and would appreciate it if anyone could help me on what tools to use and ways to conduct this test, thanks...You could probably automate it using JMeter. Very handy thing. You can write both the client and the server in Java, using either RMI/IIOP or IDLJ for the Corba part. No particular reason not to use RMI/IIOP that I can see, it's just a thin layer over the other, more or less, and it's much easier to program.

  • Problem with socket communications

    I am trying to put together a client server socket communication pair.
    I have one application that runs in the background acting as a server and another that can be started and stopped that acts as a client.
    I can start the server and create a server socket with no problem.
    I can start the client and it connects to the server.
    The server acknowledges the connection and appears to go into a blocking state waiting for the client to send another message.
    The server blocks at the line
    parent.logit("Waiting for message from EVR..... ");
    The problem is that when the client sends another message, the server doesn't hear it.
    I am not sure if the problem is with the client or server communication code.
    If anyone out there is a socket communication guru, I would appreciate it if you could tell me what I am doing wrong.
    Thanks
    Server code:
    import java.io.*;
    import java.net.*;
    public class EVRServer
        extends Thread
      EVRDataLoader parent = null;
      ServerSocket serverSock = null;
      Socket clientSock = null;
      BufferedReader reader = null;
      BufferedWriter writer = null;
      int evrPort = 0;
      int retryLimit = 10;
      int retryCount = 0;
      boolean alive = false;
      boolean killSocket = false;
      boolean evrConnected = false;
      boolean retry = true;
      EVRListener evrListener = null;
    //=============================================================================
    // Full constructor
    //=============================================================================
       * Full constructor.
       * @param dl DataLoader - Parent application
       * @param port int Socket port
      public EVRServer(EVRDataLoader dl, int port)
        parent = dl;
        evrPort = port;
    //=============================================================================
    //  Run method - Main thread executed by start() method
    //=============================================================================
       * Main thread executed by start() method
      public void run()
        while (retry)
          if (retryCount > retryLimit)
            retry = false;
          parent.logit("Retry count = " + retryCount);
          // Create new server socket connection
          if (serverSock == null)
            try
              serverSock = new ServerSocket(evrPort);
              parent.logit("Created Server Socket for EVR on port " + evrPort);
              alive = true;
              killSocket = false;
              evrConnected = false;
            catch (Exception e)
              parent.logit(
                  "ERROR - Could not create Server socket connection for EVR: " +
                  e.toString());
              killSocket = true;
              alive = false;
          // Create new client socket connection
          if (clientSock == null)
            try
              parent.logit("Waiting for EVR to connect");
              clientSock = null;
              clientSock = serverSock.accept();
              retryCount = 0;
              evrConnected = true;
              killSocket = false;
              parent.logit("EVR connected on server Socket Port " + evrPort);
            catch (Exception e)
              parent.logit("ERROR - Error accepting EVR connection: " + e.toString());
              killSocket = true;
            try
              reader = new BufferedReader(new InputStreamReader(
                  clientSock.getInputStream()));
              writer = new BufferedWriter(new OutputStreamWriter(
                  clientSock.getOutputStream()));
              parent.logit( "Created reader "+reader);
              parent.logit( "Created writer "+writer);
            catch (Exception e)
              parent.logit(
                  "ERROR - creating reader or writer to EVR: " + e.toString());
              killSocket = true;
          int nullCount = 0;
          while (killSocket == false)
            try
              parent.logit("Waiting for message from EVR..... ");
    //          sendMessage("Data Controller connected on port " + evrPort);
              String s = reader.readLine();
              parent.logit("EVR - Received message: " + s);
              if (s != null)
                parent.processEvrMessage( s);
              else
                sleep(1000);
                nullCount++;
                if (nullCount > 10)
                  parent.logit("Exceeded retry limit: ");
                  killSocket = true;
            catch (Exception ex)
              parent.logit("Error Reading from EVR: " + ex.toString());
              killSocket = true;
          parent.logit( "After while loop");
          evrConnected = false;
          try
            retryCount++;
            parent.logit("Closing EVR connection. ");
            reader.close();
            writer.close();
            clientSock.close();
            writer = null;
            reader = null;
            clientSock = null;
            try
              sleep(1000);
            catch (Exception ee)
              parent.logit("Error after sleep " + ee.toString());
          catch (Exception e)
            parent.logit("Error closing EVR server socket");
    //=============================================================================
    // Call this method to kill the client socket connection.
    //=============================================================================
       * Call this method to kill the client socket connection.
      public void killConnection()
        killSocket = true;
    //=============================================================================
    // Return RTM connected state
    //=============================================================================
       * Return RTM connected state
       * @return boolean - Returns true if RTM is connected to server, false if not.
      public boolean isRtmConnected()
        return evrConnected;
    //=============================================================================
    // Returns state of server socket.
    //=============================================================================
       * Returns state of server socket.
       * @return boolean - Returns true if server socket is enabled, false if not.
      public boolean isServerSocketAlive()
        return alive;
    //=============================================================================
    // Send a message to the client socket.
    //=============================================================================
         * Send a message to the client socket.
         * @param msg String - Message to send.
         * @return boolean - Returns true if message sent OK, false if not.
      public boolean sendMessage(String msg)
        parent.logit(" In EVR Server - Send Message - got message: " + msg);
        if (evrConnected)
          try
            parent.logit("Sending message to EVR: " + msg);
            writer.write(msg + "\n");
            writer.flush();
            return true;
          catch (Exception e)
            parent.logit("ERROR - Error sending message to EVR: " + e.toString());
            return false;
        else
          parent.logit("EVR not connected, cannot send message: " + msg);
          return false;
    }Client code:
    package evrsimulator;
    import java.net.*;
    import java.io.*;
    class PortConnector
          extends Thread
       ServerSocket serverSock = null;
       boolean isIP = false;
       InetAddress addr = null;
       Frame1 parent = null;
       byte[] rawIP;
        //   String initialMsg = "";
       public PortConnector( Frame1 f )
         parent = f;
       // This method is called when the thread runs
       public void run()
          if ( parent.hostName.indexOf( "." ) > 0 )
             isIP = true;
             byte[] rawIP = parent.getRawIP( parent.hostName );
          try
             System.out.println( "Connecting to host " +
                                            parent.hostName + " on port " +
                                            parent.socketPort );
             if ( isIP )
                addr = InetAddress.getByAddress( rawIP );
             else
                addr = InetAddress.getByName( parent.hostName );
             System.out.println( "Inet address = " + addr );
             SocketAddress sockaddr =
                   new InetSocketAddress( addr, parent.socketPort );
             // Create an unbound socket
             parent.client = new Socket();
             // This method will block no more than timeoutMs.
             // If the timeout occurs, SocketTimeoutException is thrown.
             parent.client.connect( sockaddr, parent.socketTimeOut );
             parent.socketOut =
                   new BufferedWriter( new OutputStreamWriter(
                   parent.client.getOutputStream() ) );
             parent.socketIn = new BufferedReader( new InputStreamReader(
                   parent.client.getInputStream() ) );
             parent.localName = parent.localName +
                   parent.client;
             System.out.println( "Parent socketOut = "+parent.socketOut);
             System.out.println( "Parent socketIn = "+parent.socketIn);
          catch ( UnknownHostException uhe )
             System.out.println( "Unknown Host - " + uhe.getMessage() );
          catch ( SocketTimeoutException ste )
             System.out.println( "Socket time out - " + ste.getMessage());
          catch ( IOException ioe )
             System.out.println( "IO exception - " + ioe.getMessage() );
          // Listen on socket for message from host - thread should block.
          parent.portConnected = true;
          while ( parent.portConnected )
             try
                String msg = parent.socketIn.readLine();
                System.out.println( "Message from Host: " + msg );
                System.out.println( "Message from Host: |" + msg + "|" );
                if( msg.length() > 2)parent.processMessage( msg );
             catch ( IOException ioe )
                System.out.println( "Exception creating server socket." );
          try
             System.out.println(
                   "PortConnection - Closing socket and IO connections" );
             parent.socketIn.close();
             parent.socketOut.close();
             parent.client.close();
             parent.clockRunning = false;
             if( parent.heartBeating) heartBeat.interrupt();
          catch ( IOException ioex )
             System.out.println( "Exception closing socket." );
    }

    Your first problem is that you keep closing and recreating the ServerSocket. Do this once only in the lifetime of the server.
    This is such a basic error that I haven't read the rest of the code. Before you go any further I suggest you read the Custom Networking trail of the Java Tutorial.

  • Why does Java Application not working with Macromedia Flash 5 or MX?

    Why does Java Application not working with Macromedia Flash 5 or MX?

    Who says they don't?
    Although I don't know much about those I'd think they should be able to talk to Java Aps using Sockets or request Servlets ...
    Spieler

  • CF11 is crashing ( application pool suffered a fatal communication error with the Windows Process Activation Service)

    I have a cluster of 2 IIS web servers on Windows Server 2008 R2. They had been running on CF10 for over a year (if not two) with no problems. I upgraded one server to CF11 and now that server is crashing while the CF10 servers is still running fine.
    In the Windows event log I'm seeing 4 instances of this error:
    "A process serving application pool '******' suffered a fatal communication error with the Windows Process Activation Service. The process id was '4652'. The data field contains the error number."
    Then finally:
    "Application pool '******' is being automatically disabled due to a series of failures in the process(es) serving that application pool.".
    Looking at the application pool in the IIS admin it is stopped. Restarting will resolve but it will eventually crash.
    What could be the issue?
    -Phil

    I'm seeing in the CF logs leading up to the crash:
    Jun 04, 2014 11:11:31 AM org.apache.coyote.ajp.AjpProcessor getRealPathFromServer
    SEVERE: Error in getRealPathFromConn
    java.net.SocketException: Connection reset by peer: socket write error
      at java.net.SocketOutputStream.socketWrite0(Native Method)
      at java.net.SocketOutputStream.socketWrite(Unknown Source)
      at java.net.SocketOutputStream.write(Unknown Source)
      at org.apache.coyote.ajp.AjpProcessor.getRealPathFromServer(AjpProcessor.java:402)
      at org.apache.coyote.ajp.AbstractAjpProcessor.getRealPath(AbstractAjpProcessor.java:1276)
      at org.apache.naming.resources.FileDirContext.doGetRealPath(FileDirContext.java:202)
      at org.apache.naming.resources.BaseDirContext.getRealPath(BaseDirContext.java:424)
      at org.apache.catalina.core.StandardContext.getRealPath(StandardContext.java:4660)
      at org.apache.catalina.core.ApplicationContext.getRealPath(ApplicationContext.java:432)
      at org.apache.catalina.core.ApplicationContextFacade.getRealPath(ApplicationContextFacade.ja va:333)
      at coldfusion.runtime.ServletContextWrapper.doGetRealPath(ServletContextWrapper.java:184)
      at coldfusion.runtime.ServletContextWrapper._doGetRealPath(ServletContextWrapper.java:116)
      at coldfusion.runtime.ServletContextWrapper.getRealPath(ServletContextWrapper.java:98)
      at coldfusion.filter.FusionContext.getRealPath(FusionContext.java:999)
      at coldfusion.filter.FusionContext.getRealPath(FusionContext.java:937)
      at coldfusion.runtime.RuntimeServiceImpl.resolveTemplatePath(RuntimeServiceImpl.java:866)
      at coldfusion.tagext.lang.IncludeTag.setTemplate(IncludeTag.java:420)
      at cfApplication2ecfc1835967654.runPage(C:\Data\http\domain\apps\Application.cfc:3)
      at coldfusion.runtime.CfJspPage.invoke(CfJspPage.java:246)
      at coldfusion.filter.SilentFilter.invoke(SilentFilter.java:47)
      at coldfusion.runtime.TemplateProxyFactory.resolveComponentHelper(TemplateProxyFactory.java: 538)
      at coldfusion.runtime.TemplateProxyFactory.resolveName(TemplateProxyFactory.java:248)
      at coldfusion.runtime.TemplateProxyFactory.resolveName(TemplateProxyFactory.java:159)
      at coldfusion.runtime.TemplateProxyFactory.resolveFile(TemplateProxyFactory.java:120)
      at coldfusion.cfc.CFCProxy.<init>(CFCProxy.java:138)
      at coldfusion.cfc.CFCProxy.<init>(CFCProxy.java:84)
      at coldfusion.runtime.AppEventInvoker.<init>(AppEventInvoker.java:64)
      at coldfusion.filter.PathFilter.resolveApplicationScope(PathFilter.java:195)
      at coldfusion.filter.PathFilter.invoke(PathFilter.java:124)
      at coldfusion.filter.ExceptionFilter.invoke(ExceptionFilter.java:94)
      at coldfusion.filter.ClientScopePersistenceFilter.invoke(ClientScopePersistenceFilter.java:2 8)
      at coldfusion.filter.BrowserFilter.invoke(BrowserFilter.java:38)
      at coldfusion.filter.NoCacheFilter.invoke(NoCacheFilter.java:58)
      at coldfusion.filter.GlobalsFilter.invoke(GlobalsFilter.java:38)
      at coldfusion.filter.DatasourceFilter.invoke(DatasourceFilter.java:22)
      at coldfusion.filter.CachingFilter.invoke(CachingFilter.java:62)
      at coldfusion.CfmServlet.service(CfmServlet.java:219)
      at coldfusion.bootstrap.BootstrapServlet.service(BootstrapServlet.java:89)
      at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.j ava:303)
      at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
      at coldfusion.monitor.event.MonitoringServletFilter.doFilter(MonitoringServletFilter.java:42 )
      at coldfusion.bootstrap.BootstrapFilter.doFilter(BootstrapFilter.java:46)
      at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.j ava:241)
      at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
      at sun.reflect.GeneratedMethodAccessor118.invoke(Unknown Source)
      at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
      at java.lang.reflect.Method.invoke(Unknown Source)
      at com.intergral.fusionreactor.j2ee.filterchain.WrappedFilterChain.doFilter(WrappedFilterCha in.java:97)
      at com.intergral.fusionreactor.j2ee.filter.FusionReactorRequestHandler.doNext(FusionReactorR equestHandler.java:472)
      at com.intergral.fusionreactor.j2ee.filter.FusionReactorRequestHandler.doHttpServletRequest( FusionReactorRequestHandler.java:312)
      at com.intergral.fusionreactor.j2ee.filter.FusionReactorRequestHandler.doFusionRequest(Fusio nReactorRequestHandler.java:192)
      at com.intergral.fusionreactor.j2ee.filter.FusionReactorRequestHandler.handle(FusionReactorR equestHandler.java:507)
      at com.intergral.fusionreactor.j2ee.filter.FusionReactorCoreFilter.doFilter(FusionReactorCor eFilter.java:36)
      at sun.reflect.GeneratedMethodAccessor117.invoke(Unknown Source)
      at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
      at java.lang.reflect.Method.invoke(Unknown Source)
      at com.intergral.fusionreactor.j2ee.filterchain.WrappedFilterChain.doFilter(WrappedFilterCha in.java:79)
      at sun.reflect.GeneratedMethodAccessor116.invoke(Unknown Source)
      at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
      at java.lang.reflect.Method.invoke(Unknown Source)
      at com.intergral.fusionreactor.agent.filter.FusionReactorStaticFilter.doFilter(FusionReactor StaticFilter.java:53)
      at com.intergral.fusionreactor.agent.pointcuts.NewFilterChainPointCut$1.invoke(NewFilterChai nPointCut.java:41)
      at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java)
      at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:220)
      at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:122)
      at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:501)
      at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:170)
      at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:98)
      at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116)
      at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:422)
      at org.apache.coyote.ajp.AjpProcessor.process(AjpProcessor.java:198)
      at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.jav a:607)
      at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:313)
      at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
      at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
      at java.lang.Thread.run(Unknown Source)

  • How to manage socket communications

    i need to learn about how to manage socket communications. does any one has sample codes to share that illustrates how to manage sockets? Im going to create an application that listens over a socket. My socket listener should be able to read over the socket continuously without user intervention. If there's no data, it would wait until something comes in. If some data come in, the listener should be able to read it automatically, and save data in db.
    Im thinking of an infinite loop here, but the problem
    arises when the socket is waiting for data to come in. The application consumes 100% CPU resources. And im only running one instance of my socket listener. My solution here is to use threads and let the thread SLEEP for a while when no there's no data yet.
    Any advise on this matter is very much appreciated. Thank you.

    It sounds, that you are using non-blocking read from a socket inside a busy wait loop. You should do a blocking read, which means your process/thread will be suspended by OS untill something is available on your socket.
    I'm new to Java and I can not say how actually to implement this, but look for "blocking/non-blocking read" in network interface documentation.
    Zhenya.

  • JCO-Java application unable to open a Frontend GUI session

    Hello,
    <P>
    I am having a problem opening a GUI session on a client PC through the JCo java call. It works on some PC's when I am logged in, but not on my PC. But other persons who login on my PC do not have a problem with the application opening a GUI session. I am at a loss. I have had a basis consultant look into this and he could not find a reason for the problem. I have submitted a customer message to SAP and am being told to file this issue in the forum, so here it is. If this is the wrong forum, please let me know which forum would be the correct one.
    </P>
    <P>
    Problem:</br>
    For test purposes, I have created a Java application using the SAP standalone SAPJCO3 vers. 3.0.1. The R/3 backend is 4.6C. The SAPGui version is 7.1 patch level 13 installed on a Windows XP Pro client PC. The application is supposed to start a Frontend GUI session as part of the initial process. This is not working on all PCu2019s for all users. The following are scenarios for two different users on two different PCu2019s, logged on and executing the Java application. The parameters for the Java application are: User, Password, and System Id in this order on the command line after the Java applicationu2019s name. The system Id in our example is PRP in uppercase. This problem happens while connecting to any of our R/3 instances.
    </P>
    <P>
    Testing of the issue:</br>
    Scenario 1:</br>
    User gmcghie: This user is the primary user of his/her PC. This PC has not had its registry entries cleaned up for a long time. Starting the Java application from the Windows command line with the supplied parameters, the program is executed and makes the initial connection with the R/3 backend. When the R/3 system sends back a request to start the GUI session, the SAP Logon is executed and opens on the PC. Nothing seems to happen after this.
    <P>
    Here is the JCO exception from the log file:
    JCoException eDest: (136)com.sap.conn.jco.JCoException: (136) JCO_ERROR_ILLEGAL_STATE: Launching SAP GUI failed, though it was requested (error message: Communication with SAPGUI timed out)
    </P>
    <P>
    When you right click on the SAP Logon icon that is in the Windows System Tray on the PC you see an entry that shows a session for Client 000. This is the wrong client being called by the application. The client being called is 600 in this particular scenario.
    </P>
    <P>
    Here is the connection string sent to backend for scenario 1:</br>
    TYPE=A DEST=PRP USER="gmcghie" PASSWD=********** CLIENT=600 LANG=E ASHOST=10.212.120.53 SYSNR=00 TRACE=1 PCS=1 USE_SAPGUI=2
    </P>
    <P>
    Scenario 2:</br>
    User mshin: This user is the primary user of his/her PC. This PC has had the OS re-installed on it within the last few years, hence the registry is likely more clean. Starting the Java application from the Windows command line with the supplied parameters, the program is executed and makes the initial connection with the R/3 backend. When the R/3 system sends back a request to start the GUI session, the SAP Logon is executed and opens on the PC. The connection is made to Client 600 and the process ends. The screens that appear above for the other scenario are not present when the connection is successful. The log file is not included for this as it was empty because it succeeded.
    </P>
    <P>
    Here is the connection string sent to backend for scenario 2:</br>
    TYPE=A DEST=PRP USER="mshin" PASSWD=********** CLIENT=600 LANG=E ASHOST=10.212.120.53 SYSNR=00 TRACE=1 PCS=1 USE_SAPGUI=2
    </P>
    I have the same issue on my PC as the first scenario.
    <P>The steps I took to try to get this to work are as follows.</br>
    1. Un-installed and re-installed the SAPGui, several times with no change.</br>
    2. Compared the registry settings of SAPGui between working and non-working PCu2019s. These were essentially the same.</br>
    3. Compared the system variables between working and non-working PCu2019s. These were essentially the same.</P>
    It should also be noted that if user u2018gmcghieu2019 from scenario #1 logs into another PC, the program executes correctly (for most other PCs but not all). Finally, if user u2018mshinu2019 from scenario #2 (certain other users as well) logs into Windows on the primary PC for user u2018gmcghieu2019 from scenario #1, and user u2018gmcghieu2019 is used to connect to SAP using the Java program, the program executes correctly. It seems that this would indicate some problem with the useru2019s Windows account on certain PCs.</P>
    Why is the connection information being dropped? How is the process of opening the SAPGui on the frontend done?</P>
    Any help with this issue is greatly appreciated.</P>
    Thanks,</br>
    Mark Shirkey

    Created Customer Message and got answer. There were settings in Windows Registry for starting the SAP Logon Launch Pad which had to have a value of 1.

  • How do I use Java Button to launch a separate Java application?

    I have created separate Java applications using NetBean. Once the user has entered information on one application screen, I would like the a second screen (created as an application) to open once the "OK" Button is clicked. How do I make this separate program an action Listener?
    Thanks,
    JR

    jamroman wrote:
    I have a general understanding of JFrames and containers, etc. But my question is if, as an independent application, can a JFrame be called upon?Yes, sure. There are at least 3 ways a second JFrame can be created from within an existing Java application.
    1) Call the JFrame's constructor
    2) Call the JFrame's main(String[])
    3) Create a Process via. ProcessBuilder.
    For more specific help, you'll need to ask a more specific question.
    Note that if you already knew how to use buttons and action listeners, it would have been a good idea to either:
    a) Not mention buttons at all, or..
    b) Post an SSCCE that shows both the button and action listener. (AKA - Let the code do the talking.)

  • How can i invoke an Oracle Report w/in a Java application?

    I have a custom java application that I would like to integrate with a report tool. I am reviewing Oracle Reports but I was not sure how I would integrate an Oracle Report.
    I have read that I can use Active-X but. Has anyone ever done this? Also - is there any support for a java bean?
    I am also wondering how I could pass in report parameters.
    It is my understanding that Oracle will generate either pdf or html output which could be viewed through the browser or adobe acrobat reader.
    Is this correct?
    Please advise.
    Thanks in advance.

    Bonnie,
    I create a URL that calls Oracle Reports Server running under IAS, using PDF or html as the output. The Java code calls up the commandline and starts the default browser with the specified URL, which then talks to Oracle Reports Server... and voila... the report shows up in your browser!
    have fun...
    void execURL ( String pURL )
    System.out.println(pURL);
    if (System.getProperty("os.name").equals("Windows NT") )
    try
    Runtime.getRuntime().exec("cmd /c start "+pURL);
    catch (Exception e1) {System.out.println(e1.getMessage()); }
    else
    try
    Runtime.getRuntime().exec("start "+pURL);
    catch (Exception e2) {System.out.println(e2.getMessage());}
    null

  • How can i convert java application of bibeans to java applet?

    Hi Bibeans PMTeam,
    Bibeans provide two type client:java application and web client(JSP/Servlet),because web client's function is weaker than java app,so we want to convert java app to java applet,thus,we can embed java applet into web browser(our system framework is in web browser).
    That is,we want one applet client that commution with a server side service(can by socket,just like oracle 9i form service)that provide the data that applet need,or the applet connect to olap server and bibeans catalog server by socket(this need security authentication if olap server,bibeans catalog,web server is not in one machine).
    so we need you provide whole resolve scheme,thanks a lot,if this answer is not clarity,please connect:[email protected],thanks a lot!

    hi tomsong
    well, in my experience 20mb are quite large for an applet. also take into account that you need a certain jvm that supports this type of application (my guess is that internet explorers native vm isnt an option)
    i personally would tend to deliver the functionality via java webstart (look at the sunsite):so you can centrally manage the software, download it once and opertae an application on your client (i mean an APPLICATION and not an applet)
    regarding 2: well but there is NO bibean service in ias: so you have to open the former mentioned jdbc connection to the olap service from your client
    for the availability: you have to check with the pm team
    in the meantime: what about the following approach: give power users a java application and lightweight or random users a handy html client ?
    regards,
    thomas

Maybe you are looking for