You are viewing a plain text version of this content. The canonical link for it is here.
Posted to java-user@axis.apache.org by Ali Sadik Kumlali <as...@yahoo.com> on 2006/03/15 13:27:19 UTC

[Axis2] SimpleHTTPServer port conflict for multiple EchoNonBlockingDualClient threads

Dear all,

I simply changed EchoNonBlockingDualClient sample to make it run as threads and created two threads. First one successfully starts SimpleHTTPServer on port 6060 and the second one gets an  "java.net.BindException: Address already in use: JVM_Bind" while trying to start the server.

Doesn't I have an option to listen all the responses for its dedicated port? For example 6060 for first request, 6061 for the second, and so on. Or, should i assume Axis2 to use the same port for the responses of all the long running transactions?

Thanks a lot for any help.

Ali Sadik Kumlali

--------------------------------------------------------------------------------------------------
Error Message I Get
--------------------------------------------------------------------------------------------------
testEchoNonBlockingDualClient:
     [java] [CLIENT1] Outgoing message
     [java] <example1:echo xmlns:example1="http://example1.org/example1"><exampl
e1:Text>Axis2 Echo String </example1:Text></example1:echo>
     [java] - Deploying module : addressing
     [java] [CLIENT2] Outgoing message
     [java] <example1:echo xmlns:example1="http://example1.org/example1"><exampl
e1:Text>Axis2 Echo String </example1:Text></example1:echo>
     [java] - Deploying module : addressing
     [java] - java.net.BindException: Address already in use: JVM_Bind
     [java] org.apache.axis2.AxisFault: Address already in use: JVM_Bind; nested
 exception is:
     [java]     java.net.BindException: Address already in use: JVM_Bind
     [java]     at org.apache.axis2.transport.http.SimpleHTTPServer.start(Simple
HTTPServer.java:220)
     [java]     at org.apache.axis2.client.ListenerManager.makeSureStarted(Liste
nerManager.java:73)


--------------------------------------------------------------------------------------------------
 Modified EchoNonBlockingDualClient.java
--------------------------------------------------------------------------------------------------
 public class EchoNonBlockingDualClient implements Runnable {
    private static EndpointReference targetEPR = new EndpointReference(
            "http://127.0.0.1:8080/axis2/services/MyService");

    private String name;

    public EchoNonBlockingDualClient(String name) {
        this.name = name;
    }

    public OMElement getPayload() throws XMLStreamException,
            FactoryConfigurationError {
        OMElement payload = ClientUtil.getEchoOMElement();

        // Log the outgoing payload
        StringWriter writer = new StringWriter();
        payload.serialize(XMLOutputFactory.newInstance().createXMLStreamWriter(
                writer));
        writer.flush();
        System.out.println("[" + name + "] Outgoing message\n"
                + writer.toString());
        return payload;
    }

    public Options getOptions() {
        Options options = new Options();
        options.setTo(targetEPR);
        options.setTransportInProtocol(Constants.TRANSPORT_HTTP);
        options.setUseSeparateListener(true);
        return options;
    }

    public void makeRequest() {
        try {
            OMElement payload = getPayload();
            Options options = getOptions();

            // Callback to handle the response
            Callback callback = new Callback() {
                public void onComplete(AsyncResult result) {
                    try {
                        StringWriter writer = new StringWriter();
                        result.getResponseEnvelope().serialize(
                                XMLOutputFactory.newInstance()
                                        .createXMLStreamWriter(writer));
                        writer.flush();
                        System.out.println("[" + name + "] Incoming message\n"
                                + writer.toString());
                        try {
                            Thread.sleep(1000);
                        } catch (InterruptedException e) {
                            // TODO Auto-generated catch block
                            e.printStackTrace();
                        }

                    } catch (XMLStreamException e) {
                        onError(e);
                    }
                }

                public void onError(Exception e) {
                    e.printStackTrace();
                }
            };

            // Non-Blocking Invocation
            ServiceClient sender = new ServiceClient();
            sender.setOptions(options);
            sender.sendReceiveNonblocking(payload, callback);

            // Wait till the callback receives the response.
            while (!callback.isComplete()) {
                System.out.println("[" + name
                        + "] I'm waiting for the response from the server");
                Thread.sleep(1000);
            }
            // Need to close the Client Side Listener.

        } catch (AxisFault axisFault) {
            axisFault.printStackTrace();
        } catch (Exception ex) {
            ex.printStackTrace();
        }
    }

    public void run() {
        makeRequest();
    }

    private static final void wait(int ms) {
        try {
            Thread.sleep(ms);
        } catch (InterruptedException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }

    public static void main(String[] args) {
        Thread client1 = new Thread(new EchoNonBlockingDualClient("CLIENT1"));
        client1.start();

        wait(1000);

        Thread client2 = new Thread(new EchoNonBlockingDualClient("CLIENT2"));
        client2.start();
    }

}
		
---------------------------------
Yahoo! Mail
Bring photos to life! New PhotoMail  makes sharing a breeze. 
__________________________________________________
Do You Yahoo!?
Tired of spam?  Yahoo! Mail has the best spam protection around 
http://mail.yahoo.com 

Re: [Axis2] SimpleHTTPServer port conflict for multiple EchoNonBlockingDualClient threads

Posted by Ali Sadik Kumlali <as...@yahoo.com>.
Hi Deepal,

I'm currently running 1.0RC5 and still have the same problem.

May be, as you said, I need somehow to use ListenerManager. Could you
please tell me what to do?

Thanks,

Ali Sadik Kumlali

--- Deepal Jayasinghe <de...@opensource.lk> wrote:

> Hi Sadik;
> 
> In the current code base we done a major improvements in our
> transport
> freamwork with the introduction of ListenerManager. So in the next
> release onword you wont have such a problem.
> 
> Ali Sadik Kumlali wrote:
> 
> > Dear all,
> >
> > I simply changed EchoNonBlockingDualClient sample to make it run as
> > threads and created two threads. First one successfully starts
> > SimpleHTTPServer on port 6060 and the second one gets an
> > "java.net.BindException: Address already in use: JVM_Bind" while
> > trying to start the server.
> >
> > Doesn't I have an option to listen all the responses for its
> dedicated
> > port? For example 6060 for first request, 6061 for the second, and
> so
> > on. Or, should i assume Axis2 to use the same port for the
> responses
> > of all the long running transactions?
> >
> > Thanks a lot for any help.
> >
> > Ali Sadik Kumlali
> >
> >
>
--------------------------------------------------------------------------------------------------
> > Error Message I Get
> >
>
--------------------------------------------------------------------------------------------------
> > testEchoNonBlockingDualClient:
> >      [java] [CLIENT1] Outgoing message
> >      [java] <example1:ec ho
> > xmlns:example1="http://example1.org/example1"><exampl
> > e1:Text>Axis2 Echo String </example1:Text></example1:echo>
> >      [java] - Deploying module : addressing
> >      [java] [CLIENT2] Outgoing message
> >      [java] <example1:echo
> > xmlns:example1="http://example1.org/example1"><exampl
> > e1:Text>Axis2 Echo String </example1:Text></example1:echo>
> >      [java] - Deploying module : addressing
> >      [java] - java.net.BindException: Address already in use:
> JVM_Bind
> >      [java] org.apache.axis2.AxisFault: Address already in use:
> > JVM_Bind; nested
> >  exception is:
> >      [java]     java.net.BindException: Address already in use:
> JVM_Bind
> >      [java]     at
> > org.apache.axis2.transport.http.SimpleHTTPServer.start(Simple
> > HTTPServer.java:220)
> >      [java]     at
> > org.apache.axis2.client.ListenerManager.makeSureStarted(Liste
> > nerManager.java:73)
> >
> >
> >
>
--------------------------------------------------------------------------------------------------
> > Modified EchoNonBlockingDualClient.java
> >
>
--------------------------------------------------------------------------------------------------
> > public class EchoNonBlockingDualClient implements Runnable {
> >     private static EndpointReference targetEPR = new
> EndpointReference(
> >             "http://127.0.0.1:8080/axis2/services/MyService");
> >
> >     private String name;
> >
> >     public EchoNonBlockingDualClient(String name) {
> >         this.name = name;
> >     }
> >
> >     publ ic OMElement getPayload() throws XMLStreamException,
> >             FactoryConfigurationError {
> >         OMElement payload = ClientUtil.getEchoOMElement();
> >
> >         // Log the outgoing payload
> >         StringWriter writer = new StringWriter();
> >       
> > 
>
payload.serialize(XMLOutputFactory.newInstance().createXMLStreamWriter(
> >                 writer));
> >         writer.flush();
> >         System.out.println("[" + name + "] Outgoing message\n"
> >                 + writer.toString());
> >         return payload;
> >     }
> >
> >     public Options getOptions() {
> >  & nbsp;      Options options = new Options();
> >         options.setTo(targetEPR);
> >         options.setTransportInProtocol(Constants.TRANSPORT_HTTP);
> >         options.setUseSeparateListener(true);
> >         return options;
> >     }
> >
> >     public void makeRequest() {
> >         try {
> >             OMElement payload = getPayload();
> >             Options options = getOptions();
> >
> >             // Callback to handle the response
> >             Callback callback = new Callback() {
> >                 public void onComplete(AsyncResult result) {
> >                     try {
> >                         StringWriter writer = new StringWriter();
> >                         result.getResponseEnvelope().serialize(
> >                                 XMLOutputFactory.newInstance()
> >                                        
> .createXMLStreamWriter(writer));
> >                         writer.flush();
> >                         System.out.println("[" + name + "] Incoming
> > message\n"
> >                                 + writer.toString());
> >                         try {
> >                             Thread.sleep(1000);
> >                         } catch (InterruptedException e) {
> >                             // TODO Auto-generated catch block
> >                             e.printStackTrace();
> >                         }
> >
> >                     } catch (XMLStreamException e) {
> >                         onError(e);
> >                     }
> >                 }
> >
> >                 public void onError(Exception e) {
> >                     e.printStackTrace();
> >                 }
> >             };
> >
> >             // Non-Blocking Invocation
> >             ServiceClient sender = new ServiceClient();
> >             sender.setOptions(options);
> >             sender.sendReceiveNonblocking(payload, callback);
> >
> >             // Wait till the callback receives the response.
> >             while (!callback.isComplete()) {
> >                 System.out.println("[" + name
> >                         + "] I'm waiting for the response from the
> > server");
> >                 Thread.sleep(1000);
> >             }
> >             // Need to close the Client Side Listener.
> >
> >         } catch (AxisFault axisFault) {
> >             axisFault.printStackTrace();
> >         } catch (Exception ex) {
> >             ex.printStackTrace();
> >         }
> >     }
> >
> >     public void run() {
> >         makeRequest();
> >     }
> >
> >     private static final void wait(int ms) {
> >         try {
> >             Thread.sleep(ms);
> >         } catch (InterruptedException e) {
> >             // TODO Auto-generated catch block
> >             e.printStackTrace();
> >         }
> >     }
> >
> >     public static void main(String[] args) {
> >         Thread client1 = new Thread(new
> > EchoNonBlockingDualClient("CLIENT1"));
> >         client1.start();
> >
> >         wait(1000);
> >
> >         Thread client2 = new Thread(new
> > EchoNonBlockingDualClient("CLIENT2"));
> >         client2.start();
> >     }
> >
> > }
> >
> >
>
------------------------------------------------------------------------
> > Yahoo! Mail
> > Bring photos to life! New PhotoMail
> >
>
<http://pa.yahoo.com/*http://us.rd.yahoo.com/evt=39174/*http://photomail.mail.yahoo.com>
> > makes sharing a breeze.
> >
> > __________________________________________________
> > Do You Yahoo!?
> > Tired of spam? Yahoo! Mail has the best spam protection around
> > http://mail.yahoo.com
> >
> 
> -- 
> Thanks,
> Deepal
> ................................................................
> ~Future is Open~ 
> 
> 
> 


__________________________________________________
Do You Yahoo!?
Tired of spam?  Yahoo! Mail has the best spam protection around 
http://mail.yahoo.com 

__________________________________________________
Do You Yahoo!?
Tired of spam?  Yahoo! Mail has the best spam protection around 
http://mail.yahoo.com 

Re: [Axis2] SimpleHTTPServer port conflict for multiple EchoNonBlockingDualClient threads

Posted by Deepal Jayasinghe <de...@opensource.lk>.
Hi Sadik;

In the current code base we done a major improvements in our transport
freamwork with the introduction of ListenerManager. So in the next
release onword you wont have such a problem.

Ali Sadik Kumlali wrote:

> Dear all,
>
> I simply changed EchoNonBlockingDualClient sample to make it run as
> threads and created two threads. First one successfully starts
> SimpleHTTPServer on port 6060 and the second one gets an
> "java.net.BindException: Address already in use: JVM_Bind" while
> trying to start the server.
>
> Doesn't I have an option to listen all the responses for its dedicated
> port? For example 6060 for first request, 6061 for the second, and so
> on. Or, should i assume Axis2 to use the same port for the responses
> of all the long running transactions?
>
> Thanks a lot for any help.
>
> Ali Sadik Kumlali
>
> --------------------------------------------------------------------------------------------------
> Error Message I Get
> --------------------------------------------------------------------------------------------------
> testEchoNonBlockingDualClient:
>      [java] [CLIENT1] Outgoing message
>      [java] <example1:ec ho
> xmlns:example1="http://example1.org/example1"><exampl
> e1:Text>Axis2 Echo String </example1:Text></example1:echo>
>      [java] - Deploying module : addressing
>      [java] [CLIENT2] Outgoing message
>      [java] <example1:echo
> xmlns:example1="http://example1.org/example1"><exampl
> e1:Text>Axis2 Echo String </example1:Text></example1:echo>
>      [java] - Deploying module : addressing
>      [java] - java.net.BindException: Address already in use: JVM_Bind
>      [java] org.apache.axis2.AxisFault: Address already in use:
> JVM_Bind; nested
>  exception is:
>      [java]     java.net.BindException: Address already in use: JVM_Bind
>      [java]     at
> org.apache.axis2.transport.http.SimpleHTTPServer.start(Simple
> HTTPServer.java:220)
>      [java]     at
> org.apache.axis2.client.ListenerManager.makeSureStarted(Liste
> nerManager.java:73)
>
>
> --------------------------------------------------------------------------------------------------
> Modified EchoNonBlockingDualClient.java
> --------------------------------------------------------------------------------------------------
> public class EchoNonBlockingDualClient implements Runnable {
>     private static EndpointReference targetEPR = new EndpointReference(
>             "http://127.0.0.1:8080/axis2/services/MyService");
>
>     private String name;
>
>     public EchoNonBlockingDualClient(String name) {
>         this.name = name;
>     }
>
>     publ ic OMElement getPayload() throws XMLStreamException,
>             FactoryConfigurationError {
>         OMElement payload = ClientUtil.getEchoOMElement();
>
>         // Log the outgoing payload
>         StringWriter writer = new StringWriter();
>       
>  payload.serialize(XMLOutputFactory.newInstance().createXMLStreamWriter(
>                 writer));
>         writer.flush();
>         System.out.println("[" + name + "] Outgoing message\n"
>                 + writer.toString());
>         return payload;
>     }
>
>     public Options getOptions() {
>  & nbsp;      Options options = new Options();
>         options.setTo(targetEPR);
>         options.setTransportInProtocol(Constants.TRANSPORT_HTTP);
>         options.setUseSeparateListener(true);
>         return options;
>     }
>
>     public void makeRequest() {
>         try {
>             OMElement payload = getPayload();
>             Options options = getOptions();
>
>             // Callback to handle the response
>             Callback callback = new Callback() {
>                 public void onComplete(AsyncResult result) {
>                     try {
>                         StringWriter writer = new StringWriter();
>                         result.getResponseEnvelope().serialize(
>                                 XMLOutputFactory.newInstance()
>                                         .createXMLStreamWriter(writer));
>                         writer.flush();
>                         System.out.println("[" + name + "] Incoming
> message\n"
>                                 + writer.toString());
>                         try {
>                             Thread.sleep(1000);
>                         } catch (InterruptedException e) {
>                             // TODO Auto-generated catch block
>                             e.printStackTrace();
>                         }
>
>                     } catch (XMLStreamException e) {
>                         onError(e);
>                     }
>                 }
>
>                 public void onError(Exception e) {
>                     e.printStackTrace();
>                 }
>             };
>
>             // Non-Blocking Invocation
>             ServiceClient sender = new ServiceClient();
>             sender.setOptions(options);
>             sender.sendReceiveNonblocking(payload, callback);
>
>             // Wait till the callback receives the response.
>             while (!callback.isComplete()) {
>                 System.out.println("[" + name
>                         + "] I'm waiting for the response from the
> server");
>                 Thread.sleep(1000);
>             }
>             // Need to close the Client Side Listener.
>
>         } catch (AxisFault axisFault) {
>             axisFault.printStackTrace();
>         } catch (Exception ex) {
>             ex.printStackTrace();
>         }
>     }
>
>     public void run() {
>         makeRequest();
>     }
>
>     private static final void wait(int ms) {
>         try {
>             Thread.sleep(ms);
>         } catch (InterruptedException e) {
>             // TODO Auto-generated catch block
>             e.printStackTrace();
>         }
>     }
>
>     public static void main(String[] args) {
>         Thread client1 = new Thread(new
> EchoNonBlockingDualClient("CLIENT1"));
>         client1.start();
>
>         wait(1000);
>
>         Thread client2 = new Thread(new
> EchoNonBlockingDualClient("CLIENT2"));
>         client2.start();
>     }
>
> }
>
> ------------------------------------------------------------------------
> Yahoo! Mail
> Bring photos to life! New PhotoMail
> <http://pa.yahoo.com/*http://us.rd.yahoo.com/evt=39174/*http://photomail.mail.yahoo.com>
> makes sharing a breeze.
>
> __________________________________________________
> Do You Yahoo!?
> Tired of spam? Yahoo! Mail has the best spam protection around
> http://mail.yahoo.com
>

-- 
Thanks,
Deepal
................................................................
~Future is Open~