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