1)construct a payload element which will contain the soap message you 
want to send to the awaiting Axis service toy will need to supply the payload 
as a 2nd parameter to
2)call 
opClient.sendReceiveNonBlocking(ANON_OUT_IN_OP,parentElementToSend,callback);

 /**
    * here is the sendReceiveNonBlocking method
   *
     * Directly invoke a named operation with an In-Out MEP without waiting for 
a response. This
     * method sends your supplied XML with response notification to your 
callback handler. For more
     * control, you can instead create a client for the operation and use that 
client to execute the
     * exchange.
     *
     * @param operation name of operation to be invoked (non-<code>null</code>)
     * @param elem      the data to send (becomes the content of SOAP body)
     * @param callback  a Callback which will be notified upon completion
     * @throws AxisFault in case of error
     * @see #createClient(QName)
     * @deprecated Please use the AxisCallback interface rather than Callback, 
which has been
     *             deprecated
     */
    public void sendReceiveNonBlocking(QName operation, OMElement elem, 
Callback callback)
            throws AxisFault {
        MessageContext mc = new MessageContext();
        fillSOAPEnvelope(mc, elem);
        OperationClient mepClient = createClient(operation);
        // here a blocking invocation happens in a new thread, so the
        // progamming model is non blocking
        mepClient.setCallback(callback);
        mepClient.addMessageContext(mc);
        mepClient.execute(false);
    }



Hi,

I am using an OperationClient to invoke different web services asynchronously.
I am passing a callback method to the operationclient as following.

MyCallBack Class:

AxisCallback callBack = new AxisCallback(){
            public synchronized void onMessage(MessageContext msgContext){
                SOAPBody msg = msgContext.getEnvelope().getBody();
                
                System.out.println("this is the 
envelope"+msgContext.getEnvelope());
                
           
     System.out.println("Inside onMessage: "+msg);
                
                
            }

            public void onComplete() {
                // TODO Auto-generated method stub
                System.out.println("Invocation is complete");
                 //System.exit(0);
                
            }

            @Override
   
         public void onError(Exception e) {
                // TODO Auto-generated method stub
                System.out.println("Inside onError: "+e.getMessage());
            }

            public void onFault(MessageContext msgContext) {
                // TODO Auto-generated method stub
                System.out.println("Inside onFault: 
"+msgContext.getFailureReason().toString());
                msgContext.getFailureReason().printStackTrace();
           
 }

        };


ServiceClient sc = new ServiceClient();
        
OperationClient opClient = sc.createClient(
                ServiceClient.ANON_OUT_IN_OP);

MessageContext outMsgCtx = new MessageContext();
        //assigning message context's option object into instance variable
        Options opts = outMsgCtx.getOptions();
        //setting properties into option
        
opts.setTo(new EndpointReference(
                endPoint));
opts.setAction(action);

sc.engageModule("addressing");
opClient.addMessageContext(outMsgCtx);

opts.setUseSeparateListener(true);

outMsgCtx.setEnvelope(createSOAPEnvelope);//createSOAPEnvelope returns soap 
envelope

// opClient.setCallback(callBack);
//opClient.execute(true);
//construct your parentElementToSend payload and supply that as 2nd parameter
//here is an example from MexClient
//change your namespace to match the namespace you are using
//change the 1st parameter of createOMElement to be the actual payload you are 
sending..
//factory
        OMFactory fac = OMAbstractFactory.getOMFactory();
//create namespace from factory
        OMNamespace omNs = 
fac.createOMNamespace(DRConstants.SPEC.NS_URI,DRConstants.SPEC.NS_PREFIX);
//create element from factory
        OMElement parentElementToSend = 
fac.createOMElement(DRConstants.SPEC.GET_METADATA, omNs);

opClient.sendReceiveNonBlocking(ANON_OUT_IN_OP,parentElementToSend,callback);

while(true){
Thread.sleep(100);
}



Martin Gainty 
______________________________________________ 
Jogi és Bizalmassági kinyilatkoztatás/Verzicht und 
Vertraulichkeitanmerkung/Note de déni et de confidentialité
 Ez az
üzenet bizalmas.  Ha nem ön az akinek szánva volt, akkor kérjük, hogy
jelentse azt nekünk vissza. Semmiféle továbbítása vagy másolatának
készítése nem megengedett.  Ez az üzenet csak ismeret cserét szolgál és
semmiféle jogi alkalmazhatósága sincs.  Mivel az electronikus üzenetek
könnyen megváltoztathatóak, ezért minket semmi felelöség nem terhelhet
ezen üzenet tartalma miatt.

Diese Nachricht ist vertraulich. Sollten Sie nicht der vorgesehene Empfaenger 
sein, so bitten wir hoeflich um eine Mitteilung. Jede unbefugte Weiterleitung 
oder Fertigung einer Kopie ist unzulaessig. Diese Nachricht dient lediglich dem 
Austausch von Informationen und entfaltet keine rechtliche Bindungswirkung. 
Aufgrund der leichten Manipulierbarkeit von E-Mails koennen wir keine Haftung 
fuer den Inhalt uebernehmen.
Ce message est confidentiel et peut être privilégié. Si vous n'êtes pas le 
destinataire prévu, nous te demandons avec bonté que pour satisfaire informez 
l'expéditeur. N'importe quelle diffusion non autorisée ou la copie de ceci est 
interdite. Ce message sert à l'information seulement et n'aura pas n'importe 
quel effet légalement obligatoire. Étant donné que les email peuvent facilement 
être sujets à la manipulation, nous ne pouvons accepter aucune responsabilité 
pour le contenu fourni.




Date: Fri, 25 Feb 2011 00:45:16 +0530
Subject: Axis2 - Issue with RPCServiceClient - default namespace
From: prasadrao.madd...@gmail.com
To: java-dev@axis.apache.org

Hi ,
 
I am using axis2-1.5.4 for web service development in my project and i have 
encoutered below 2 issues,
request you to address these.
 
1.   I have generated both service side and client-code using eclipse axis2 
plugins , the static client stub works absolutely fine.
 
      Since my project has more than 25 webservices to maintain , i tried to 
come up with a dynamic client using 'RPCServiceClient'
      but unfortunately the client is erroring out with the following error : 
(attached the entire statck trace in stacktrace.txt)
 
                         org.apache.axis2.AxisFault: 
org.apache.axis2.databinding.ADBException: Unexpected subelement 
PlacementRequest 

                         at 
org.apache.axis2.util.Utils.getInboundFaultFromMessageContext(Utils.java:446)

                         at 
org.apache.axis2.description.OutInAxisOperationClient.handleResponse(OutInAxisOperation.java:371)

 
      i found that this is due to namespace mismatch problem related to  the 
'PlacementRequest' element , 
 
                            wsdl namespace                   :               
http://www.scte.org/wsdl/130-3/2010/ads

                            xsd types                             :             
 xmlns:adm="http://www.scte.org/schemas/130-3/2008a/adm";

 
      its considering the wsdl's namespace for 'PlacementRequest' which is 
leading to the exception,
      below is the snippet of the code responsible for the exception:

      if(reader.isStartElement() && new 
javax.xml.namespace.QName("http://www.scte.org/schemas/130-3/2008a/adm","PlacementRequest";).equals(reader.getName())){

                   
object.setPlacementRequest(org.scte.www.schemas._130_3._2008a.adm.PlacementRequestType.Factory.parse(reader));
      } // End of if for expected property start element

     else{
                  // A start element we are not expecting indicates an invalid 
parameter was passed

                 throw new 
org.apache.axis2.databinding.ADBException("Unexpected subelement " + 
reader.getLocalName());

      } 
2.     Another problem i noted is server & client code generated from wsdl is 
giving some errors related to if-else blocks,
        would be great if you can also look at this.

I have enclosed all the files(wsdl,static client stub,dynamic client 
code,sample input xml).
                                                    Thanking you for your 
wonderful support and time.
M.Prasad Rao

---------------------------------------------------------------------
To unsubscribe, e-mail: java-dev-unsubscr...@axis.apache.org
For additional commands, e-mail: java-dev-h...@axis.apache.org                  
                  

Reply via email to