unsubscribe

classic Classic list List threaded Threaded
1 message Options
Reply | Threaded
Open this post in threaded view
|

unsubscribe

Dinshaw, Afshad

 

 

From: Sterpu Victor [mailto:[hidden email]]
Sent: Monday, November 14, 2016 3:59 PM
To: Martin Gainty <[hidden email]>; [hidden email]
Subject: Re[4]: Raw SOAP XML response

 

I tired your code but I got a problem. This is what I wrote(I don't have a axis2.xml file, I just create the stub with wsdl2java and used the class):

ConfigurationContext configContext = ConfigurationContextFactory.createDefaultConfigurationContext();
ServiceClient sender = new ServiceClient(configContext, null);
OperationClient mepClient = sender.createClient(ServiceClient.ANON_OUT_IN_OP);
MessageContext response=mepClient.getMessageContext(WSDLConstants.MESSAGE_LABEL_IN_VALUE);
String response_xml = response.getEnvelope().toString();

These lines are executed immediatly after the succesful SOAP call and I receive a java.lang.NullPointerException at the line "String response_xml = response.getEnvelope().toString();".

I traced the SOAP response with Fiddler and the answer is "<?xml version="1.0" encoding="UTF-8"?><soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"><soapenv:Body><dlwmin:storeClinicalDocumentSResponse xmlns:dlwmin="core.des.uti.ro" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"><return></return></dlwmin:storeClinicalDocumentSResponse></soapenv:Body></soapenv:Envelope>"

 

Thank you.

 

------ Original Message ------

From: "Martin Gainty" <[hidden email]>

To: "[hidden email]" <[hidden email]>; "Sterpu Victor" <[hidden email]>

Sent: 2/11/2016 9:28:48 PM

Subject: Re: Re[2]: Raw SOAP XML response

 

 


From: Sterpu Victor <[hidden email]>
Sent: Wednesday, November 2, 2016 11:57 AM
To: Martin Gainty; [hidden email]
Subject: Re[2]: Raw SOAP XML response

 

It didn't work.

This is what I did: I deleted from the directory of Axis2\lib 4 files: axiom-jaxb-1.2.19.jar, axiom-api-1.2.19.jar, axiom-dom-1.2.19.jar, axiom-impl-1.2.19.jar

and I added these 4 files: axiom-api-1.2.20.jar,axiom-dom-1.2.20.jar,axiom-impl-1.2.20.jar,axiom-jaxb-1.2.20.jar.

I use Axis embeded so I also deleted from my netbeans libraries the old jars and added the new ones.

I recompiled and the error remained.

 

 

------ Original Message ------

From: "Martin Gainty" <[hidden email]>

To: "[hidden email]" <[hidden email]>; "Sterpu Victor" <[hidden email]>

Sent: 2/11/2016 4:58:09 PM

Subject: Re: Raw SOAP XML response

 

possible outdated version of axiom

 

     * In Axiom versions prior to 1.2.9, the sequence of events was inconsistent if the
     * underlying stream is XOP encoded and caching is disabled (see WSCOMMONS-485).
     * This made it necessary for the caller to (partially) handle the XOP processing and to use
     * {@link OMAttachmentAccessor#getDataHandler(String)} to retrieve the binary content.
     * Starting with 1.2.9 this is no longer be the case: as specified above,
     * the sequence of events is *independent of the state of the object model*
     * and the value of the <code>cache</code> parameter,
     * and ALL binary content is reported through the
     * {@link org.apache.axiom.ext.stax.datahandler.DataHandlerReader} (embedded in axiom-api) extension.

 

upgrade axiom to 1.2.9 a recompile, package, deploy and run with 1.2.9 should mitigate the error you are now receiving

*please keep us apprised*

 

Martin
______________________________________________

 


From: Sterpu Victor <[hidden email]>
Sent: Wednesday, November 2, 2016 9:37 AM
To: [hidden email]
Subject: Raw SOAP XML response

 

Hello

 

I need to save the raw SOAP XML response from Axis2(I use axis 2 1.7.3).

When Axis2 call retusrns an error this code works: 

String response = sc.getLastOperationContext().getMessageContext("In").getEnvelope().toString();

 

MG>//build configurationContext from location of repo and name of axis2.xml

MG> ConfigurationContext configContext = ConfigurationContextFactory

.createConfigurationContextFromFileSystem("../../repository",  //exact location of repository

"axis2.xml");                           //exact filename of axis2.xml

 

MG>establish new ServiceClient implementing attributes from ConfigurationContext

MG> ServiceClient sender = new ServiceClient(configContext, null);

 

MG>you will need to supply a QName for incoming request and SOAP response output

/**

     * Operation name used for an anonymous in-out operation (meaning we sent a message and receive

     * a response, equivalent to a WSDL In-Out operation).

     

    public static final QName ANON_OUT_IN_OP = new QName(Constants.AXIS2_NAMESPACE_URI,

                                                         "anonOutInOp",

                                                         Constants.AXIS2_NAMESPACE_PREFIX);

*/

MG>OperationClient mepClient = sender.createClient(ServiceClient.ANON_OUT_IN_OP); 

 

MG>ask client to contact axis2 server and pull a response back

MG>MessageContext response=mepClient.getMessageContext(WSDLConstants.MESSAGE_LABEL_IN_VALUE));

/**

     *MESSAGE_LABEL_IN_VALUE Constant to represent the message label "In" which is used by the

     * following WSDL 2.0 defined MEPs: In-Only, Robust In-Only, In-Out, //Hint: In-Out is your Message Exchange

     * In-Optional-Out, Out-In, Out-Optional-In.

    public static final byte MESSAGE_LABEL_IN = 0;

    public static final String MESSAGE_LABEL_IN_VALUE = "In";

*/

 

MG>convert soapEnvelope to String

MG>String response =response.getEnvelope().toString();

 

MG>?

But when I run a succesful Axis2 call the same code gives the following error: "java.lang.IllegalStateException: Can't process next node because caching is disabled"

 

I tryed to enable cache like this, but it didn't work:

 

                                ServiceClient sc = (ServiceClient)method_getServiceClient.invoke(objectReflect);
                                ServiceContext srv_context = sc.getServiceContext();
                                srv_context.setCachingOperationContext(true);
                                OperationContext oc= new OperationContext(); 
                               
oc.setComplete(true); 
                                srv_context.setLastOperationContext(
oc);

 

Thank you