MTOM/SwA enabled file transfer
biroj Mar 26, 2007 2:35 PMHi,
My configuration is:
JBossAS 4.0.5
JBossWS 1.2.0GA
EJB3 shipped with JBossAS 4.0.5
I've tried to publish an EJB3 WS (using contract-first model) with MTOM enabled file transfer as it is proposed by the JBossWS guideline.
I compiled the WSDL with wsconsume as appropriate and added the following annotations to the EJB3 POJO.
@Stateless @Remote(ETI_Receiver.class) @WebService(endpointInterface="generated.wsdl.EMServicesPortType" , wsdlLocation="META-INF/wsdl/Services.wsdl" , targetNamespace="http://my.com/ws" , portName = "EMServicesPort") @BindingType(value=javax.xml.ws.soap.SOAPBinding.SOAP11HTTP_MTOM_BINDING) public class ETI_ReceiverBean extends ETI_CommonReceiverServices implements ETI_Receiver {
The endpoint works well, till I try to send send an attachment with MTOM/SwA enabled. The normal attachments are works fine, but if I enable MTOM or simple SwA at client side (Axis2 code, see below)
EMServicesStub emstub = new EMServicesStub(uri); Options options = new Options(); options.setProperty(Constants.Configuration.ENABLE_MTOM, Constants.VALUE_TRUE); //options.setProperty(Constants.Configuration.ENABLE_SWA, Constants.VALUE_TRUE); emstub._getServiceClient().setOptions(options);
it drops a SOAPRequest exception
2007-03-26 20:24:06,062 INFO [org.jboss.system.server.Server] JBoss (MX MicroKernel) [4.0.5.GA (build: CVSTag=Branch_4_0 date=200610162339)] Started in 1m:16s:344ms 2007-03-26 20:25:10,234 DEBUG [org.jboss.ws.core.server.AbstractServiceEndpointServlet] doPost: /ETI-ETI_Framework/ETI_ReceiverBean 2007-03-26 20:25:10,250 DEBUG [org.jboss.ws.core.soap.MessageContextAssociation] pushMessageContext: org.jboss.ws.core.jaxws.handler.SOAPMessageContextJAXWS@e0e9d5 (Thread http-0.0.0.0-8080-1) 2007-03-26 20:25:10,250 DEBUG [org.jboss.ws.core.server.ServiceEndpoint] BEGIN handleRequest: jboss.ws:context=ETI-ETI_Framework,endpoint=ETI_ReceiverBean 2007-03-26 20:25:10,312 DEBUG [org.jboss.ws.core.soap.MessageFactoryImpl] createMessage: [contentType=multipart/related; boundary=MIMEBoundaryurn_uuid_6BC0C2D8E13C69924211749335100931; type="application/xop+xml"; start="<0.urn:uuid:6BC0C2D8E13C69924211749335100932@apache.org>"; start-info="text/xml"; charset=UTF-8] 2007-03-26 20:25:10,343 DEBUG [org.jboss.ws.core.soap.attachment.SwapableMemoryDataSource] Using memory buffer, size = 8044 2007-03-26 20:25:10,750 DEBUG [org.jboss.ws.metadata.umdm.EndpointMetaData] Configure SOAPBinding 2007-03-26 20:25:10,750 ERROR [org.jboss.ws.core.jaxws.SOAPFaultHelperJAXWS] SOAP request exception java.lang.IllegalArgumentException: multipart/related stream invalid, no root part was found at org.jboss.ws.core.soap.attachment.MultipartRelatedDecoder.decodeMultipartRelatedMessage(MultipartRelatedDecoder.java:156) at org.jboss.ws.core.soap.MessageFactoryImpl.createMessage(MessageFactoryImpl.java:211) at org.jboss.ws.core.soap.MessageFactoryImpl.createMessage(MessageFactoryImpl.java:171) at org.jboss.ws.core.server.ServiceEndpoint.handleRequest(ServiceEndpoint.java:185) at org.jboss.ws.core.server.ServiceEndpointManager.processSOAPRequest(ServiceEndpointManager.java:440) at org.jboss.ws.core.server.AbstractServiceEndpointServlet.doPost(AbstractServiceEndpointServlet.java:114) at javax.servlet.http.HttpServlet.service(HttpServlet.java:717) at org.jboss.ws.core.server.AbstractServiceEndpointServlet.service(AbstractServiceEndpointServlet.java:75) at javax.servlet.http.HttpServlet.service(HttpServlet.java:810) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173) at org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilter.java:96) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:178) at org.jboss.web.tomcat.security.SecurityAssociationValve.invoke(SecurityAssociationValve.java:175) at org.jboss.web.tomcat.security.JaccContextValve.invoke(JaccContextValve.java:74) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:126) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:105) at org.jboss.web.tomcat.tc5.jca.CachedConnectionValve.invoke(CachedConnectionValve.java:156) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:107) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:148) at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:869) at org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:664) at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:527) at org.apache.tomcat.util.net.MasterSlaveWorkerThread.run(MasterSlaveWorkerThread.java:112) at java.lang.Thread.run(Thread.java:595)
Could you help me a little how to solve this issue? Any idea?
Thanks a lot for your help in advance,
Bye,
Janos