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 makes sharing a breeze.

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

Reply via email to