Tony,
Apologies for jumping into this thread on an unrelated issue but i notice you have axis2 deployed on JBoss 4.0. I am about to undertake this task and was wondering if there was any resources on the web to help in it. I dont have a lot of experience with JBoss so not looking forward to it!!
Regards,
Brian

Antony Wilson wrote:


I have not been able to get the EchonNonBlockingDualClient example to work as described in the documentation. In my setup, I have Axis2 deployed to JBoss 4.0.3 and I have modified the userguide.example1.MyService to delay for about 10 seconds before responding (leaving the 'echo' method). After packaging and deploying the MyService.aar to Axis2, I run EchoNonBlockingDualClient example...slightly modified to add a print statement within the while loop...like so

   public static void main(String[] args) {
       try {
           OMElement payload = ClientUtil.getEchoOMElement();

           Options options = new Options();
           options.setTo(targetEPR);
           options.setTransportInProtocol(Constants.TRANSPORT_HTTP);
           options.setUseSeparateListener(true);

           //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(writer.toString());


                   } 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("waiting...");
               Thread.sleep(1000);
           }
           //Need to close the Client Side Listener.

We I run it the code appears to block/wait at the "sender.sendRecieveNonBlocking(...)" line for about 10 seconds. When the program continues, I never see any print statements since the "callback.isComplete()" is true by the time it gets to that point in the code. The really bizarre part is that if I use "options.setUseSeparateListener(false)"...the behavior is exactly what I was originally expecting...I see several "waiting..." print statements before the callback's onComplete is invoked. My operational scenario requires a dual channel transport since my webservice calls can be really long...therefore using a single two-way transport (e.g., options.setUseSeparateListener(false)) is not a viable option.

Bottomline, I can't seem to get the two-way dual channel stuff (EchoNonBlockingDualClient) to work for me. I must be missing something obvious...but I don't see what it is. Any help would be appreciated.

Thanks,
Tony



--
Brian Shields BSc. MSc.,
PhD Candidate,
Department of Information Technology,
National University of Ireland,
Galway,
Ireland.

Reply via email to