Hi all,
I try to create an OneWay method which supports WSRM and an attachment.
My service is really simple, it's only a "println".
The method runs successfully when there is only the WSRM implementation,
but when I add the attachement part, I have an server error:
org.apache.sandesha2.SandeshaException: Data binding error; nested
exception is:
java.lang.RuntimeException: Data binding error; nested exception is:
org.apache.axis2.AxisFault: Data binding error; nested exception is:
java.lang.RuntimeException: Data binding error
at
org.apache.sandesha2.workers.InOrderInvoker.run(InOrderInvoker.java:199)
Caused by: org.apache.axis2.AxisFault: Data binding error; nested
exception is:
java.lang.RuntimeException: Data binding error
at org.apache.axis2.AxisFault.makeFault(AxisFault.java:318)
at
fr.gouv.finances.dgme.presto.PrestoSvcMessageReceiverInOnly.invokeBusinessLogic(PrestoSvcMessageReceiverInOnly.java:50)
at
org.apache.axis2.receivers.AbstractInMessageReceiver.receive(AbstractInMessageReceiver.java:34)
at
org.apache.axis2.engine.AxisEngine.resumeReceive(AxisEngine.java:497)
at org.apache.axis2.engine.AxisEngine.resume(AxisEngine.java:543)
at
org.apache.sandesha2.workers.InOrderInvoker.run(InOrderInvoker.java:189)
Caused by: java.lang.RuntimeException: Data binding error
at
fr.gouv.finances.dgme.presto.PrestoSvcMessageReceiverInOnly.fromOM(PrestoSvcMessageReceiverInOnly.java:174)
at
fr.gouv.finances.dgme.presto.PrestoSvcMessageReceiverInOnly.invokeBusinessLogic(PrestoSvcMessageReceiverInOnly.java:46)
... 4 more
Caused by: org.apache.axiom.om.OMException: java.lang.NullPointerException
at
org.apache.axiom.om.impl.llom.OMTextImpl.getText(OMTextImpl.java:254)
at
org.apache.axiom.om.impl.llom.OMStAXWrapper.getTextCharacters(OMStAXWrapper.java:365)
at
org.apache.xmlbeans.impl.store.Locale.loadXMLStreamReader(Locale.java:1154)
at
org.apache.xmlbeans.impl.store.Locale.parseToXmlObject(Locale.java:843)
at
org.apache.xmlbeans.impl.store.Locale.parseToXmlObject(Locale.java:826)
at
org.apache.xmlbeans.impl.schema.SchemaTypeLoaderBase.parse(SchemaTypeLoaderBase.java:231)
at
fr.gouv.finances.dgme.presto.SubmitOneWayDocument$Factory.parse(SubmitOneWayDocument.java:128)
at
fr.gouv.finances.dgme.presto.PrestoSvcMessageReceiverInOnly.fromOM(PrestoSvcMessageReceiverInOnly.java:145)
... 5 more
Caused by: java.lang.NullPointerException
at
org.apache.coyote.http11.InternalInputBuffer.fill(InternalInputBuffer.java:737)
at
org.apache.coyote.http11.InternalInputBuffer$InputStreamInputBuffer.doRead(InternalInputBuffer.java:777)
at
org.apache.coyote.http11.InternalInputBuffer.doRead(InternalInputBuffer.java:710)
at org.apache.coyote.Request.doRead(Request.java:423)
at
org.apache.catalina.connector.InputBuffer.realReadBytes(InputBuffer.java:283)
at
org.apache.tomcat.util.buf.ByteChunk.substract(ByteChunk.java:371)
at
org.apache.catalina.connector.InputBuffer.readByte(InputBuffer.java:292)
at
org.apache.catalina.connector.CoyoteInputStream.read(CoyoteInputStream.java:104)
at java.io.FilterInputStream.read(FilterInputStream.java:66)
at java.io.PushbackInputStream.read(PushbackInputStream.java:120)
at
org.apache.axiom.attachments.MIMEBodyPartInputStream.read(MIMEBodyPartInputStream.java:49)
at
javax.mail.internet.InternetHeaders.load(InternetHeaders.java:106)
at
javax.mail.internet.InternetHeaders.<init>(InternetHeaders.java:92)
at javax.mail.internet.MimeBodyPart.<init>(MimeBodyPart.java:59)
at
org.apache.axiom.attachments.PartOnMemory.<init>(PartOnMemory.java:31)
at
org.apache.axiom.attachments.Attachments.getPart(Attachments.java:451)
at
org.apache.axiom.attachments.Attachments.getNextPart(Attachments.java:359)
at
org.apache.axiom.attachments.Attachments.getPart(Attachments.java:324)
at
org.apache.axiom.attachments.Attachments.getDataHandler(Attachments.java:274)
at
org.apache.axiom.om.impl.mtom.MTOMStAXSOAPModelBuilder.getDataHandler(MTOMStAXSOAPModelBuilder.java:151)
at
org.apache.axiom.om.impl.llom.OMTextImpl.getDataHandler(OMTextImpl.java:341)
at
org.apache.axiom.om.impl.llom.OMTextImpl.getInputStream(OMTextImpl.java:368)
at
org.apache.axiom.om.impl.llom.OMTextImpl.getText(OMTextImpl.java:238)
My client is:
public static void testSubmitOneWayWSRM() throws Exception {
ConfigurationContext configContext =
ConfigurationContextFactory.createConfigurationContextFromFileSystem(CLIENT_REPO_PATH,axis2_xml);
ServiceClient sender = new ServiceClient (configContext,null);
OMFactory fac = OMAbstractFactory.getOMFactory();
OMNamespace omNs = fac.createOMNamespace(namespace, "m");
OMElement payload = fac.createOMElement("submitOneWay", omNs);
OMElement bodymess = fac.createOMElement("bodymessage", omNs);
// Add Text
String bodymessvalue=createSoapMessageString(fileXMLName);
payload.addChild(fac.createOMText(bodymess, bodymessvalue));
// Add text file
OMElement attach=createAttachment(fac,omNs);
attach = fac.createOMElement("attachment", omNs);
File fileTxt = new File(fileName);
FileDataSource dataSource = new FileDataSource(fileTxt);
DataHandler expectedDH = new DataHandler(dataSource);
OMText textData = fac.createOMText(expectedDH, true);
System.out.println("Client:contentID" + textData.getContentID());
attach.addChild(textData);
payload.addChild(attach);
System.out.println("callAXIOM, doc sent : "+payload);
Options options = new Options();
options.setTo(targetEPR);
options.setAction("submitOneWay");
options.setTransportInProtocol(Constants.TRANSPORT_HTTP);
options.setUseSeparateListener(false);
options.setProperty(Constants.Configuration.ENABLE_MTOM,
Constants.VALUE_TRUE);
options.setProperty(MessageContextConstants.TRANSPORT_URL,targetEPRTcpmon);
sender.setOptions(options);
options.setProperty(SandeshaClientConstants.LAST_MESSAGE, "true");
sender.fireAndForget(payload);
Thread.sleep(10000);
System.out.println("NO RETURN FOR WEBSERVICE");
}
I join also the configuration file : client_axis2.xml
Can someone have an idea?
Thanks for your help.
Regards
Elodie
<axisconfig name="AxisJava2.0">
<!-- ================================================= -->
<!-- Parameters -->
<!-- ================================================= -->
<parameter name="hotdeployment" locked="false">true</parameter>
<parameter name="hotupdate" locked="false">false</parameter>
<parameter name="enableMTOM" locked="true">true</parameter>
<!--During a fault, stacktrace can be sent with the fault message. The following flag will control -->
<!--that behaviour.-->
<parameter name="sendStacktraceDetailsWithFaults" locked="false">true</parameter>
<!--If there aren't any information available to find out the fault reason, we set the message of the expcetion-->
<!--as the faultreason/Reason. But when a fault is thrown from a service or some where, it will be -->
<!--wrapped by different levels. Due to this the initial exception message can be lost. If this flag-->
<!--is set then, Axis2 tries to get the first exception and set its message as the faultreason/Reason.-->
<parameter name="DrillDownToRootCauseForFaultReason" locked="false">false</parameter>
<!-- Uncomment this to enable REST support -->
<!-- <parameter name="enableREST" locked="false">true</parameter>-->
<!--This is the user name and password of admin console-->
<parameter name="userName" locked="false">admin</parameter>
<parameter name="password" locked="false">axis2</parameter>
<!-- ================================================= -->
<!-- Message Receivers -->
<!-- ================================================= -->
<!--This is the Deafult Message Receiver for the system , if you want to have MessageReceivers for -->
<!--all the other MEP implement it and add the correct entry to here , so that you can refer from-->
<!--any operation -->
<!--Note : You can ovride this for particular service by adding the same element with your requirement-->
<messageReceivers>
<messageReceiver mep="http://www.w3.org/2004/08/wsdl/in-only"
class="org.apache.axis2.receivers.RawXMLINOnlyMessageReceiver"/>
<messageReceiver mep="http://www.w3.org/2004/08/wsdl/in-out"
class="org.apache.axis2.receivers.RawXMLINOutMessageReceiver"/>
</messageReceivers>
<!-- <messageReceivers>
<messageReceiver mep="http://www.w3.org/2004/08/wsdl/in-out"
class="fr.gouv.finances.dgme.presto.PrestoSvcMessageReceiverInOut"/>
<messageReceiver mep="http://www.w3.org/2004/08/wsdl/in-only"
class="fr.gouv.finances.dgme.presto.PrestoSvcMessageReceiverInOnly"/>
</messageReceivers> -->
<!-- ================================================= -->
<!-- Transport Ins -->
<!-- ================================================= -->
<transportReceiver name="http"
class="org.apache.axis2.transport.http.SimpleHTTPServer">
<parameter name="port" locked="false">6060</parameter>
<!--If you want to give your own host address for EPR generation-->
<!--uncommet following paramter , and set as you required.-->
<!--<parameter name="hostname" locked="false">http://myApp.com/ws</parameter>-->
</transportReceiver>
<transportReceiver name="tcp"
class="org.apache.axis2.transport.tcp.TCPServer">
<parameter name="port" locked="false">6061</parameter>
<!--If you want to give your own host address for EPR generation-->
<!--uncommet following paramter , and set as you required.-->
<!--<parameter name="hostname" locked="false">tcp://myApp.com/ws</parameter>-->
</transportReceiver>
<!-- ================================================= -->
<!-- Transport Outs -->
<!-- ================================================= -->
<transportSender name="tcp"
class="org.apache.axis2.transport.tcp.TCPTransportSender"/>
<transportSender name="local"
class="org.apache.axis2.transport.local.LocalTransportSender"/>
<transportSender name="jms"
class="org.apache.axis2.transport.jms.JMSSender"/>
<transportSender name="http"
class="org.apache.axis2.transport.http.CommonsHTTPTransportSender">
<parameter name="PROTOCOL" locked="false">HTTP/1.1</parameter>
<parameter name="Transfer-Encoding" locked="false">chunked</parameter>
</transportSender>
<transportSender name="https"
class="org.apache.axis2.transport.http.CommonsHTTPTransportSender">
<parameter name="PROTOCOL" locked="false">HTTP/1.1</parameter>
<parameter name="Transfer-Encoding" locked="false">chunked</parameter>
</transportSender>
<module ref="addressing" />
<module ref="sandesha2" />
<!-- ================================================= -->
<!-- Phases -->
<!-- ================================================= -->
<phaseOrder type="inflow">
<!-- System pre defined phases -->
<phase name="Transport">
<handler name="RequestURIBasedDispatcher"
class="org.apache.axis2.engine.RequestURIBasedDispatcher">
<order phase="Dispatch"/>
</handler>
<handler name="SOAPActionBasedDispatcher"
class="org.apache.axis2.engine.SOAPActionBasedDispatcher">
<order phase="Dispatch"/>
</handler>
</phase>
<phase name="Security"/>
<phase name="PreDispatch"/>
<phase name="Dispatch" class="org.apache.axis2.engine.DispatchPhase">
<handler name="AddressingBasedDispatcher"
class="org.apache.axis2.engine.AddressingBasedDispatcher">
<order phase="Dispatch"/>
</handler>
<handler name="SOAPMessageBodyBasedDispatcher"
class="org.apache.axis2.engine.SOAPMessageBodyBasedDispatcher">
<order phase="Dispatch"/>
</handler>
<handler name="InstanceDispatcher"
class="org.apache.axis2.engine.InstanceDispatcher">
<order phase="PostDispatch"/>
</handler>
</phase>
<!-- System pre defined phases -->
<!-- After Postdispatch phase module author or or service author can add any phase he want -->
<phase name="RMPhase"/>
<phase name="OperationInPhase"/>
</phaseOrder>
<phaseOrder type="outflow">
<!-- user can add his own phases to this area -->
<phase name="OperationOutPhase"/>
<phase name="RMPhase"/>
<!--system predefined phase-->
<!--these phase will run irrespective of the service-->
<phase name="PolicyDetermination"/>
<phase name="MessageOut"/>
</phaseOrder>
<phaseOrder type="INfaultflow">
<phase name="PreDispatch"/>
<phase name="Dispatch" class="org.apache.axis2.engine.DispatchPhase">
<handler name="RequestURIBasedDispatcher"
class="org.apache.axis2.engine.RequestURIBasedDispatcher">
<order phase="Dispatch"/>
</handler>
<handler name="SOAPActionBasedDispatcher"
class="org.apache.axis2.engine.SOAPActionBasedDispatcher">
<order phase="Dispatch"/>
</handler>
<handler name="AddressingBasedDispatcher"
class="org.apache.axis2.engine.AddressingBasedDispatcher">
<order phase="Dispatch"/>
</handler>
<handler name="SOAPMessageBodyBasedDispatcher"
class="org.apache.axis2.engine.SOAPMessageBodyBasedDispatcher">
<order phase="Dispatch"/>
</handler>
<handler name="InstanceDispatcher"
class="org.apache.axis2.engine.InstanceDispatcher">
<order phase="PostDispatch"/>
</handler>
</phase>
<!-- user can add his own phases to this area -->
<phase name="RMPhase"/>
<phase name="OperationInFaultPhase"/>
</phaseOrder>
<phaseOrder type="Outfaultflow">
<!-- user can add his own phases to this area -->
<phase name="OperationOutFaultPhase"/>
<phase name="RMPhase"/>
<phase name="PolicyDetermination"/>
<phase name="MessageOut"/>
</phaseOrder>
</axisconfig>
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]