Hi Michele,

If I use the default ServiceClient, the addressing module isn't found, though I put the axis2 lib in the classpath. Then I set the System.properties with key Constants.AXIS2_REPO and the value is my axis2 directory, no exception is thrown but the callback is still not called.

Sorry, if this problem takes quite some time.

Thanks,

Santoso




Michele Mazzucco wrote:
Hi Santoso,

no, the header looks like ok. What I think is that the problems comes
from the call:

ConfigurationContext configContext =
ConfigurationContextFactory.createConfigurationContextFromFileSystem("c:\\MyJavaStuff\\axis2",
null);

try to use the default constructor for ServiceClient (you'll need the
axis2 libs in the classpath in order to engage the addressing module)


Michele

Santoso Nugroho wrote:
Hi Michele,

The soapaction is correct, and I got  AxisFault :  Invalid message addition
What is meant by "Invalid Message Addition"? is it because of the headers?

here are the sample soap message sent
<?xml version='1.0' encoding='utf-8'?>
<soapenv:Envelope
xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/";
xmlns:wsa="http://www.w3.org/2005/08/addressing";>
 <soapenv:Header>
<wsa:To>http://localhost:8081/axis2/services/AsynchWrappedService</wsa:To>
   <wsa:ReplyTo>
<wsa:Address>http://192.168.1.22:6060/axis2/services/__ANONYMOUS_SERVICE__/__OPERATION_OUT_IN__</wsa:Address>

   </wsa:ReplyTo>
   <wsa:MessageID>urn:uuid:C3B147D7E64C6C375111564787858281</wsa:MessageID>
   <wsa:Action>requestData</wsa:Action>
 </soapenv:Header>
 <soapenv:Body>
   <ns:requestData xmlns:ns="http://www.example.org/AsynchWrappedService";>
     <ns:key>hello, this is the key</ns:key>
   </ns:requestData>
 </soapenv:Body>
</soapenv:Envelope>

here are the exception i got

<?xml version='1.0' encoding='utf-8'?>
<soapenv:Envelope
xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/";>
 <soapenv:Header />
 <soapenv:Body>
   <soapenv:Fault>
     <faultcode>soapenv:Client</faultcode>
     <faultstring>Invalid message addition , operation context
completed</faultstring>
     <detail>
       <Exception>
         org.apache.axis2.AxisFault: Invalid message addition ,
operation context completed&#13;
         at
org.apache.axis2.description.InOnlyAxisOperation.addMessageContext(InOnlyAxisOperation.java:62)&#13;

         at
org.apache.axis2.context.OperationContext.addMessageContext(OperationContext.java:85)&#13;

         at
org.apache.axis2.receivers.AbstractInOutSyncMessageReceiver.receive(AbstractInOutSyncMessageReceiver.java:35)&#13;

         at
org.apache.axis2.engine.AxisEngine.receive(AxisEngine.java:454)&#13;
         at
org.apache.axis2.transport.http.HTTPTransportUtils.processHTTPPostRequest(HTTPTransportUtils.java:284)&#13;

         at
org.apache.axis2.transport.http.AxisServlet.doPost(AxisServlet.java:136)&#13;

         at
javax.servlet.http.HttpServlet.service(HttpServlet.java:709)&#13;
         at
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)&#13;
         at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252)&#13;

         at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)&#13;

         at
org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213)&#13;

         at
org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:178)&#13;

         at
org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:126)&#13;

         at
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:105)&#13;

         at
org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:107)&#13;

         at
org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:148)&#13;

         at
org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:868)&#13;

         at
org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:663)&#13;

         at
org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:527)&#13;

         at
org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:80)&#13;

         at
org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:684)&#13;

         at java.lang.Thread.run(Unknown Source)&#13;
       </Exception>
     </detail>
   </soapenv:Fault>
 </soapenv:Body>
</soapenv:Envelope>

Thanks,

Santoso

Michele Mazzucco wrote:
Hi Santoso,

are you sure that the soap action is correct, i.e. the same declared
into services.xml? It should look like

<operation name="requestData">
        <messageReceiver
class="org.apache.axis2.receivers.RawXMLINOutMessageReceiver" />
        <actionMapping> requestData </actionMapping>
</operation>


Are you sure that your service is called? Try to add some logging
statements inside your code


Hope this helps,
Michele

On 24 Aug 2006, at 04:30, Santoso Nugroho wrote:

Hi Michele,

I've change the return type, however the callback is still not called.
Here is my service code :
public OMElement requestData(OMElement element) {
       OMElement result = buildResponse(element);
       return result;
}

Here is my client code :
OMElement payload = getPayload();
       Options options = new Options();
       options.setAction("requestData");
       options.setTransportInProtocol(Constants.TRANSPORT_HTTP);
       options.setUseSeparateListener(true);
       EndpointReference epr = new
EndpointReference("http://localhost:8081/axis2/services/AsynchWrappedService";);

       options.setTo(epr);
             Callback callback = new Callback() {
           public void onComplete(AsyncResult arg0) {
               System.out.println("completed, result =
"+arg0.getResponseEnvelope());
           }

           public void onError(Exception arg0) {
               arg0.printStackTrace();
           }
                 };
             ServiceClient serviceClient = null;
       try {
ConfigurationContext configContext = ConfigurationContextFactory.createConfigurationContextFromFileSystem("c:\\MyJavaStuff\\axis2",
null);
           serviceClient = new ServiceClient(configContext,null);
           serviceClient.engageModule(new
QName(Constants.MODULE_ADDRESSING));
           serviceClient.setOptions(options);
           serviceClient.sendReceiveNonBlocking(payload, callback);
                     while(!callback.isComplete()) {
               Thread.sleep(1000);
           }
                 } catch (AxisFault e) {
           // TODO Auto-generated catch block
           e.printStackTrace();
       } catch (Exception e) {
           e.printStackTrace();
       } finally {
           try {
               serviceClient.finalizeInvoke();
           } catch (AxisFault e) {
               // TODO Auto-generated catch block
               e.printStackTrace();
           }
       }

What is wrong with my code?

Thanks

Santoso


Michele Mazzucco wrote:
Hi Santoso,


I thinks you are making a mistake: asynchronous does not mean that the
return type is void!, it means that the client does not block while the
request is processed.
The return type should then be OMElement, and the callback object will
collect the result when this will be available.

Regards,
Michele

Santoso Nugroho wrote:

Hi all,

I have an asynch service, which as I understand the operation method
signature returns void.
e.g. public void requestData(OMElement element) { ... }

On the client side, I call the service using
ServiceClient.sendReceiveNonBlocking(payload, callback)
and I also engage the Addressing module.

My question is, when requestData is processed, what is the code to
return the result to the client's callback?
Is it the same code as a client calling a service?
fyi, I already have the ReplyTo address and the MessageID (from
MessageContext).


Thanks a lot,

Santoso





---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]


---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]



---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]


---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]


---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]




---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to