tomee-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Andrew Cassin <acas...@tpg.com.au>
Subject Trouble with MTOM response in tomee+ 1.6.xx
Date Wed, 11 Jun 2014 10:48:00 GMT
Hi all,

I've a problem with getting a response from a web service to be MTOM'ed 
rather than inline base64-encoded. I've gone all
over the web but without success. I've no problem MTOM'ing data as part 
of the request, but the client always sees inline data as observed
by wire capture. No amount of @XmlMimeType annotation seems to make any 
difference, nor @MTOM nor @BindingType annotations.

My web service is very simple:
package testmtom;

import javax.activation.DataHandler;
import javax.jws.WebService;

@WebService
public interface Server {
     public DataHandler getResult();
}

and implementation too:


package testmtom;

import java.io.File;

import javax.activation.DataHandler;
import javax.activation.FileDataSource;
import javax.ejb.Stateless;
import javax.jws.WebService;
import javax.xml.bind.annotation.XmlMimeType;
import javax.xml.ws.soap.MTOM;

@Stateless
@MTOM(enabled=true)
@WebService(serviceName="mtomService",
endpointInterface="testmtom.Server",
targetNamespace="http://test.mtom/ns")
public class ServerImpl implements Server {

     @Override
     public @XmlMimeType("*/*") DataHandler getResult() {
         return new DataHandler(
                 new FileDataSource(
                         new File(
"/home/acassin/sequence-databases/uniprot-viridiplantae-11thApril2012.fa")));
     }

}


These files are too large for anything but MTOM (>100MB). The test 
program looks as follows:

public class serviceTest {
     private final String url = 
"http://localhost:8080/testmtom/webservices/ServerImpl?wsdl";

     @Test
     public void serviceTest() {
         try {
             Service srv = Service.create(new URL(url), new 
QName("http://test.mtom/ns", "mtomService"));
             Server client = srv.getPort(Server.class, new MTOMFeature());

             DataHandler dh = client.getResult();
             assertNotEquals(null, dh);
         } catch (MalformedURLException e) {
             // TODO Auto-generated catch block
             e.printStackTrace();
         }
     }
}

With an exception during processing of getResult() similar to:
Caused by: javax.xml.bind.UnmarshalException
  - with linked exception:
[com.ctc.wstx.exc.WstxParsingException: Text size limit (134217728) exceeded
  at [row,col {unknown-source}]: [1,142499672]]
     at 
com.sun.xml.bind.v2.runtime.unmarshaller.UnmarshallerImpl.handleStreamException(UnmarshallerImpl.java:436)
     at 
com.sun.xml.bind.v2.runtime.unmarshaller.UnmarshallerImpl.unmarshal0(UnmarshallerImpl.java:372)
     at 
com.sun.xml.bind.v2.runtime.unmarshaller.UnmarshallerImpl.unmarshal(UnmarshallerImpl.java:349)
     at 
org.apache.cxf.jaxb.JAXBEncoderDecoder.doUnmarshal(JAXBEncoderDecoder.java:833)
     at 
org.apache.cxf.jaxb.JAXBEncoderDecoder.access$100(JAXBEncoderDecoder.java:101)
     at 
org.apache.cxf.jaxb.JAXBEncoderDecoder$2.run(JAXBEncoderDecoder.java:861)
     at java.security.AccessController.doPrivileged(Native Method)
     at 
org.apache.cxf.jaxb.JAXBEncoderDecoder.unmarshall(JAXBEncoderDecoder.java:859)
     ... 43 more
Caused by: com.ctc.wstx.exc.WstxParsingException: Text size limit 
(134217728) exceeded
  at [row,col {unknown-source}]: [1,142499672]
     at 
com.ctc.wstx.sr.StreamScanner.constructWfcException(StreamScanner.java:606)
     at 
com.ctc.wstx.sr.StreamScanner.throwWfcException(StreamScanner.java:455)
     at com.ctc.wstx.sr.BasicStreamReader.next(BasicStreamReader.java:1124)
     at 
com.sun.xml.bind.v2.runtime.unmarshaller.StAXStreamConnector.bridge(StAXStreamConnector.java:196)
     at 
com.sun.xml.bind.v2.runtime.unmarshaller.UnmarshallerImpl.unmarshal0(UnmarshallerImpl.java:370)
     ... 49 more


I've tried to set honor.jaxb.annotations in conf/system.properties but 
also no luck. I've looked at the tomee attachments web service example
but dont get what I am missing?

thanks in advance,

-- 
Andrew Cassin
acassin@unimelb.edu.au


Mime
  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message