mtom - (axis 1.3 vs jax-ws ri JAX-WS RI 2.1.2)
----------------------------------------------
Key: AXIS2-3245
URL: https://issues.apache.org/jira/browse/AXIS2-3245
Project: Axis 2.0 (Axis2)
Issue Type: Bug
Components: adb
Affects Versions: 1.3
Environment: windows xp/ java 1.4 (axis) & java 1.5.0_06 (+jax-ws ri
2.1.2)
Reporter: skudx
Used the followng wsdl to generate a jax-ws ri-based server. The server is
launched using endpoint.publish.
<wsdl:definitions xmlns:tns="http://ws.apache.org/axis2/mtomsample/"
xmlns:mime="http://schemas.xmlsoap.org/wsdl/mime/"
xmlns:http="http://schemas.xmlsoap.org/wsdl/http/"
xmlns:xmime="http://www.w3.org/2005/05/xmlmime"
xmlns:wsaw="http://www.w3.org/2006/05/addressing/wsdl"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
xmlns="http://schemas.xmlsoap.org/wsdl/"
targetNamespace="http://ws.apache.org/axis2/mtomsample/">
<wsdl:types>
<xsd:schema xmlns="http://schemas.xmlsoap.org/wsdl/"
attributeFormDefault="qualified"
elementFormDefault="qualified"
targetNamespace="http://ws.apache.org/axis2/mtomsample/">
<xsd:import
namespace="http://www.w3.org/2005/05/xmlmime"
schemaLocation="http://www.w3.org/2005/05/xmlmime" />
<xsd:complexType name="AttachmentType">
<xsd:sequence>
<xsd:element minOccurs="0"
name="fileName"
type="xsd:string" />
<xsd:element minOccurs="0"
name="binaryData"
xmime:expectedContentTypes="*/*" type="xsd:base64Binary" />
</xsd:sequence>
</xsd:complexType>
<xsd:element name="AttachmentRequest"
type="tns:AttachmentType" />
<xsd:element name="AttachmentResponse"
type="tns:AttachmentType" />
</xsd:schema>
</wsdl:types>
<wsdl:message name="AttachmentRequest">
<wsdl:part name="part1" element="tns:AttachmentRequest" />
</wsdl:message>
<wsdl:message name="AttachmentResponse">
<wsdl:part name="part1" element="tns:AttachmentResponse" />
</wsdl:message>
<wsdl:portType name="MTOMServicePortType">
<wsdl:operation name="attachment">
<wsdl:input message="tns:AttachmentRequest"
wsaw:Action="attachment" />
<wsdl:output message="tns:AttachmentResponse"
wsaw:Action="http://schemas.xmlsoap.org/wsdl/MTOMServicePortType/AttachmentResponse"
/>
</wsdl:operation>
</wsdl:portType>
<wsdl:binding name="MTOMServiceSOAP11Binding"
type="tns:MTOMServicePortType">
<soap:binding transport="http://schemas.xmlsoap.org/soap/http"
style="document" />
<wsdl:operation name="attachment">
<soap:operation soapAction="attachment"
style="document" />
<wsdl:input>
<soap:body use="literal" />
</wsdl:input>
<wsdl:output>
<soap:body use="literal" />
</wsdl:output>
</wsdl:operation>
</wsdl:binding>
<wsdl:service name="MTOMSample">
<wsdl:port name="MTOMSampleSOAP11port_http"
binding="tns:MTOMServiceSOAP11Binding">
<soap:address
location="http://localhost:8080/axis2/services/MTOMSample" />
</wsdl:port>
</wsdl:service>
</wsdl:definitions>
Generated axis client using options: -s -p axisc -ssi -uri
http://localhost:2000/coo?wsdl.
package axisc;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import javax.activation.DataHandler;
import javax.activation.DataSource;
import org.apache.axis2.Constants;
import org.apache.axis2.client.Options;
import axisc.DemoServerServiceStub.AttachmentRequest;
import axisc.DemoServerServiceStub.AttachmentResponse;
import axisc.DemoServerServiceStub.AttachmentType;
public class AxisDhC {
/**
* @param args
* @throws IOException
*/
public static void main(String[] args) throws IOException {
// TODO Auto-generated method stub
DemoServerServiceStub dhd = new DemoServerServiceStub();
Options options = new Options();
options.setProperty( Constants.Configuration.TRANSPORT_URL,
"http://localhost:8001/coo");
options.setProperty(Constants.Configuration.ENABLE_MTOM, "true");
dhd._getServiceClient().setOverrideOptions(options);
DataHandler dh1 = new DataHandler(new DataSource(){
public String getContentType() {
// TODO Auto-generated method stub
return "text/xml";
}
public InputStream getInputStream() throws IOException {
ByteArrayInputStream bais =
new
ByteArrayInputStream("<xml><ax>b</ax></xml>".getBytes());
return bais;
}
public String getName() {
return "sample.xml";
}
public OutputStream getOutputStream() throws IOException {
// TODO Auto-generated method stub
return null;
}});
AttachmentType dw = new AttachmentType();
dw.setBinaryData(dh1);
AttachmentRequest ar = new AttachmentRequest();
ar.setAttachmentRequest(dw);
AttachmentResponse dwr = dhd.attachment(ar);
dump(dwr.getAttachmentResponse().getBinaryData());
}
private static void dump(DataHandler dh2) throws IOException {
System.out.println("type: " + dh2.getContentType());
System.out.println("name: " + dh2.getName());
System.out.println("content: " + dh2.getContent());
System.out.println("ds: " + dh2.getDataSource());
ByteArrayOutputStream baos = new ByteArrayOutputStream();
InputStream is = dh2.getInputStream();
int ch = -1;
while((ch = is.read()) != -1) {
baos.write(ch);
}
baos.flush();
baos.close();
is.close();
System.out.println("content: " + baos.toString());
}
}
If I enable mtom, the jax-ws server reports the following error:
java.lang.NullPointerException
at
com.sun.xml.ws.encoding.SOAPBindingCodec.decode(SOAPBindingCodec.java:322)
at com.sun.xml.ws.encoding.MimeCodec.decode(MimeCodec.java:116)
at
com.sun.xml.ws.encoding.SOAPBindingCodec.decode(SOAPBindingCodec.java:272)
at
com.sun.xml.ws.transport.http.HttpAdapter.decodePacket(HttpAdapter.java:262)
at
com.sun.xml.ws.transport.http.HttpAdapter.access$500(HttpAdapter.java:79)
at
com.sun.xml.ws.transport.http.HttpAdapter$HttpToolkit.handle(HttpAdapter.java:418)
at
com.sun.xml.ws.transport.http.HttpAdapter.handle(HttpAdapter.java:230)
at
com.sun.xml.ws.transport.http.server.WSHttpHandler.handleExchange(WSHttpHandler.java:92)
at
com.sun.xml.ws.transport.http.server.WSHttpHandler.handle(WSHttpHandler.java:77)
at com.sun.net.httpserver.Filter$Chain.doFilter(Filter.java:65)
at sun.net.httpserver.AuthFilter.doFilter(AuthFilter.java:65)
at com.sun.net.httpserver.Filter$Chain.doFilter(Filter.java:68)
at
sun.net.httpserver.ServerImpl$Exchange$LinkHandler.handle(ServerImpl.java:575)
at com.sun.net.httpserver.Filter$Chain.doFilter(Filter.java:65)
at sun.net.httpserver.ServerImpl$Exchange.run(ServerImpl.java:547)
at
java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:650)
at
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:675)
at java.lang.Thread.run(Thread.java:595)
java.lang.NullPointerException
at
com.sun.xml.ws.encoding.SOAPBindingCodec.decode(SOAPBindingCodec.java:322)
at com.sun.xml.ws.encoding.MimeCodec.decode(MimeCodec.java:116)
at
com.sun.xml.ws.encoding.SOAPBindingCodec.decode(SOAPBindingCodec.java:272)
at
com.sun.xml.ws.transport.http.HttpAdapter.decodePacket(HttpAdapter.java:262)
at
com.sun.xml.ws.transport.http.HttpAdapter.access$500(HttpAdapter.java:79)
at
com.sun.xml.ws.transport.http.HttpAdapter$HttpToolkit.handle(HttpAdapter.java:418)
at
com.sun.xml.ws.transport.http.HttpAdapter.handle(HttpAdapter.java:230)
at
com.sun.xml.ws.transport.http.server.WSHttpHandler.handleExchange(WSHttpHandler.java:92)
at
com.sun.xml.ws.transport.http.server.WSHttpHandler.handle(WSHttpHandler.java:77)
at com.sun.net.httpserver.Filter$Chain.doFilter(Filter.java:65)
at sun.net.httpserver.AuthFilter.doFilter(AuthFilter.java:65)
at com.sun.net.httpserver.Filter$Chain.doFilter(Filter.java:68)
at
sun.net.httpserver.ServerImpl$Exchange$LinkHandler.handle(ServerImpl.java:575)
at com.sun.net.httpserver.Filter$Chain.doFilter(Filter.java:65)
at sun.net.httpserver.ServerImpl$Exchange.run(ServerImpl.java:547)
at
java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:650)
at
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:675)
at java.lang.Thread.run(Thread.java:595)
java.lang.NullPointerException
at
com.sun.xml.ws.encoding.SOAPBindingCodec.decode(SOAPBindingCodec.java:322)
at com.sun.xml.ws.encoding.MimeCodec.decode(MimeCodec.java:116)
at
com.sun.xml.ws.encoding.SOAPBindingCodec.decode(SOAPBindingCodec.java:272)
at
com.sun.xml.ws.transport.http.HttpAdapter.decodePacket(HttpAdapter.java:262)
at
com.sun.xml.ws.transport.http.HttpAdapter.access$500(HttpAdapter.java:79)
at
com.sun.xml.ws.transport.http.HttpAdapter$HttpToolkit.handle(HttpAdapter.java:418)
at
com.sun.xml.ws.transport.http.HttpAdapter.handle(HttpAdapter.java:230)
at
com.sun.xml.ws.transport.http.server.WSHttpHandler.handleExchange(WSHttpHandler.java:92)
at
com.sun.xml.ws.transport.http.server.WSHttpHandler.handle(WSHttpHandler.java:77)
at com.sun.net.httpserver.Filter$Chain.doFilter(Filter.java:65)
at sun.net.httpserver.AuthFilter.doFilter(AuthFilter.java:65)
at com.sun.net.httpserver.Filter$Chain.doFilter(Filter.java:68)
at
sun.net.httpserver.ServerImpl$Exchange$LinkHandler.handle(ServerImpl.java:575)
at com.sun.net.httpserver.Filter$Chain.doFilter(Filter.java:65)
at sun.net.httpserver.ServerImpl$Exchange.run(ServerImpl.java:547)
at
java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:650)
at
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:675)
at java.lang.Thread.run(Thread.java:595)
java.lang.NullPointerException
at
com.sun.xml.ws.encoding.SOAPBindingCodec.decode(SOAPBindingCodec.java:322)
at com.sun.xml.ws.encoding.MimeCodec.decode(MimeCodec.java:116)
at
com.sun.xml.ws.encoding.SOAPBindingCodec.decode(SOAPBindingCodec.java:272)
at
com.sun.xml.ws.transport.http.HttpAdapter.decodePacket(HttpAdapter.java:262)
at
com.sun.xml.ws.transport.http.HttpAdapter.access$500(HttpAdapter.java:79)
at
com.sun.xml.ws.transport.http.HttpAdapter$HttpToolkit.handle(HttpAdapter.java:418)
at
com.sun.xml.ws.transport.http.HttpAdapter.handle(HttpAdapter.java:230)
at
com.sun.xml.ws.transport.http.server.WSHttpHandler.handleExchange(WSHttpHandler.java:92)
at
com.sun.xml.ws.transport.http.server.WSHttpHandler.handle(WSHttpHandler.java:77)
at com.sun.net.httpserver.Filter$Chain.doFilter(Filter.java:65)
at sun.net.httpserver.AuthFilter.doFilter(AuthFilter.java:65)
at com.sun.net.httpserver.Filter$Chain.doFilter(Filter.java:68)
at
sun.net.httpserver.ServerImpl$Exchange$LinkHandler.handle(ServerImpl.java:575)
at com.sun.net.httpserver.Filter$Chain.doFilter(Filter.java:65)
at sun.net.httpserver.ServerImpl$Exchange.run(ServerImpl.java:547)
at
java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:650)
at
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:675)
at java.lang.Thread.run(Thread.java:595)
& the client reports a fault..
org.apache.axis2.AxisFault: The server localhost failed to respond
at org.apache.axis2.AxisFault.makeFault(AxisFault.java:417)
....
Works fine, if I disable MTOM on axis 2 client.
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]