You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@cxf.apache.org by jaybytez <ja...@yahoo.com> on 2011/02/11 23:16:36 UTC

DataHandler - MTOM as inline vs attachment

>From a DataHandler perspective, does the handling of an incoming stream
differ if MTOM/XOP is used inline versus as an attachment.

We have a service endpoint that we enabled with MTOM and added a threshold,
but we are getting the same error as when we did not add a threshold (hence
default of 0).

When we use SoapUI to hit the CXF endpoint (JAX-WS/JAXB) and set MTOM to
false, the service works and can retrieve the stream.  

When we use SoapUI and set MTOM to true, the endpoint fails saying the
stream is null.

1) Is there something I am doing wrong?
2) Threshold property, what is the sizing...is it kb?

Also, with these problems, a client we have that is using CXF and the
jaxwsproxyfactorybean with MTOM enabled, they get an even worse error:

Sample Code
String[] document = (String[]) getParamsMap().get("document");

                String docStr = document[0];

                dsr = new DocumentSubmission();

                ByteArrayInputStream byia = new
ByteArrayInputStream(docStr.getBytes());
                DataHandler dh = new DataHandler(byia, 
"application/octet-stream");

                dsr.setDocumentContent(dh);
                dsr.setFilename(null);
               
dsr.setSourceApplicationType(SourceApplicationType.getType("PB"));


                dsrResp = webDocMgmtAccessService.submitDocument(dsr);

Response
15609 [main] WARN com.foo.soa.frmwk.codes.CodeXmlLoader -
CodeXmlLoader.loadAll loaded objects:3
Feb 11, 2011 10:47:25 AM org.apache.cxf.phase.PhaseInterceptorChain
doDefaultLogging
WARNING: Interceptor for
{http://foo.com/services/dms}WebDocMgmtAccessServiceService#{http://foo.com/services/dms}submitDocument
has thrown exception, unwinding now
org.apache.cxf.interceptor.Fault: Could not write attachments.
	at
org.apache.cxf.interceptor.AttachmentOutInterceptor$AttachmentOutEndingInterceptor.handleMessage(AttachmentOutInterceptor.java:98)
	at
org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:243)
	at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:516)
	at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:313)
	at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:265)
	at org.apache.cxf.frontend.ClientProxy.invokeSync(ClientProxy.java:73)
	at org.apache.cxf.jaxws.JaxWsClientProxy.invoke(JaxWsClientProxy.java:124)
	at $Proxy74.submitDocument(Unknown Source)
	at
com.foo.ws.clientproxy.WSWebDocMgmtAccessServiceProxy.invokeWebService(WSWebDocMgmtAccessServiceProxy.java:75)
	at
com.foo.ws.proxy.base.WsProxyServiceTemplate.getResponseObject(WsProxyServiceTemplate.java:89)
	at
com.foo.ws.clientproxy.WSWebDocMgmtAccessServiceProxyTest.testWsToobject(WSWebDocMgmtAccessServiceProxyTest.java:50)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
	at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
	at java.lang.reflect.Method.invoke(Method.java:597)
	at
org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:44)
	at
org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:15)
	at
org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:41)
	at
org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:20)
	at
org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:28)
	at
org.springframework.test.context.junit4.statements.RunBeforeTestMethodCallbacks.evaluate(RunBeforeTestMethodCallbacks.java:74)
	at
org.springframework.test.context.junit4.statements.RunAfterTestMethodCallbacks.evaluate(RunAfterTestMethodCallbacks.java:82)
	at
org.springframework.test.context.junit4.statements.SpringRepeat.evaluate(SpringRepeat.java:72)
	at
org.springframework.test.context.junit4.SpringJUnit4ClassRunner.runChild(SpringJUnit4ClassRunner.java:240)
	at
org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:49)
	at org.junit.runners.ParentRunner$3.run(ParentRunner.java:193)
	at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:52)
	at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:191)
	at org.junit.runners.ParentRunner.access$000(ParentRunner.java:42)
	at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:184)
	at
org.springframework.test.context.junit4.statements.RunBeforeTestClassCallbacks.evaluate(RunBeforeTestClassCallbacks.java:61)
	at
org.springframework.test.context.junit4.statements.RunAfterTestClassCallbacks.evaluate(RunAfterTestClassCallbacks.java:70)
	at org.junit.runners.ParentRunner.run(ParentRunner.java:236)
	at
org.springframework.test.context.junit4.SpringJUnit4ClassRunner.run(SpringJUnit4ClassRunner.java:180)
	at
org.apache.maven.surefire.junit4.JUnit4TestSet.execute(JUnit4TestSet.java:62)
	at
org.apache.maven.surefire.suite.AbstractDirectoryTestSuite.executeTestSet(AbstractDirectoryTestSuite.java:140)
	at
org.apache.maven.surefire.suite.AbstractDirectoryTestSuite.execute(AbstractDirectoryTestSuite.java:127)
	at org.apache.maven.surefire.Surefire.run(Surefire.java:177)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
	at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
	at java.lang.reflect.Method.invoke(Method.java:597)
	at
org.apache.maven.surefire.booter.SurefireBooter.runSuitesInProcess(SurefireBooter.java:345)
	at
org.apache.maven.surefire.booter.SurefireBooter.main(SurefireBooter.java:1009)
Caused by: javax.activation.UnsupportedDataTypeException: no object DCH for
MIME type application/octet-stream
	at javax.activation.ObjectDataContentHandler.writeTo(DataHandler.java:877)
	at javax.activation.DataHandler.writeTo(DataHandler.java:302)
	at
org.apache.cxf.attachment.AttachmentSerializer.writeAttachments(AttachmentSerializer.java:234)
	at
org.apache.cxf.interceptor.AttachmentOutInterceptor$AttachmentOutEndingInterceptor.handleMessage(AttachmentOutInterceptor.java:96)
	... 43 more
javax.xml.ws.WebServiceException: Could not write attachments.
	at org.apache.cxf.jaxws.JaxWsClientProxy.invoke(JaxWsClientProxy.java:135)
	at $Proxy74.submitDocument(Unknown Source)
	at
com.foo.ws.clientproxy.WSWebDocMgmtAccessServiceProxy.invokeWebService(WSWebDocMgmtAccessServiceProxy.java:75)
	at
com.foo.ws.proxy.base.WsProxyServiceTemplate.getResponseObject(WsProxyServiceTemplate.java:89)
	at
com.foo.ws.clientproxy.WSWebDocMgmtAccessServiceProxyTest.testWsToobject(WSWebDocMgmtAccessServiceProxyTest.java:50)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
	at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
	at java.lang.reflect.Method.invoke(Method.java:597)
	at
org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:44)
	at
org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:15)
	at
org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:41)
	at
org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:20)
	at
org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:28)
	at
org.springframework.test.context.junit4.statements.RunBeforeTestMethodCallbacks.evaluate(RunBeforeTestMethodCallbacks.java:74)
	at
org.springframework.test.context.junit4.statements.RunAfterTestMethodCallbacks.evaluate(RunAfterTestMethodCallbacks.java:82)
	at
org.springframework.test.context.junit4.statements.SpringRepeat.evaluate(SpringRepeat.java:72)
	at
org.springframework.test.context.junit4.SpringJUnit4ClassRunner.runChild(SpringJUnit4ClassRunner.java:240)
	at
org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:49)
	at org.junit.runners.ParentRunner$3.run(ParentRunner.java:193)
	at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:52)
	at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:191)
	at org.junit.runners.ParentRunner.access$000(ParentRunner.java:42)
	at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:184)
	at
org.springframework.test.context.junit4.statements.RunBeforeTestClassCallbacks.evaluate(RunBeforeTestClassCallbacks.java:61)
	at
org.springframework.test.context.junit4.statements.RunAfterTestClassCallbacks.evaluate(RunAfterTestClassCallbacks.java:70)
	at org.junit.runners.ParentRunner.run(ParentRunner.java:236)
	at
org.springframework.test.context.junit4.SpringJUnit4ClassRunner.run(SpringJUnit4ClassRunner.java:180)
	at
org.apache.maven.surefire.junit4.JUnit4TestSet.execute(JUnit4TestSet.java:62)
	at
org.apache.maven.surefire.suite.AbstractDirectoryTestSuite.executeTestSet(AbstractDirectoryTestSuite.java:140)
	at
org.apache.maven.surefire.suite.AbstractDirectoryTestSuite.execute(AbstractDirectoryTestSuite.java:127)
	at org.apache.maven.surefire.Surefire.run(Surefire.java:177)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
	at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
	at java.lang.reflect.Method.invoke(Method.java:597)
	at
org.apache.maven.surefire.booter.SurefireBooter.runSuitesInProcess(SurefireBooter.java:345)
	at
org.apache.maven.surefire.booter.SurefireBooter.main(SurefireBooter.java:1009)
Caused by: javax.activation.UnsupportedDataTypeException: no object DCH for
MIME type application/octet-stream
	at javax.activation.ObjectDataContentHandler.writeTo(DataHandler.java:877)
	at javax.activation.DataHandler.writeTo(DataHandler.java:302)
 trx null
	at
org.apache.cxf.attachment.AttachmentSerializer.writeAttachments(AttachmentSerializer.java:234)
	at
org.apache.cxf.interceptor.AttachmentOutInterceptor$AttachmentOutEndingInterceptor.handleMessage(AttachmentOutInterceptor.java:96)
	at
org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:243)
	at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:516)
	at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:313)
	at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:265)
	at org.apache.cxf.frontend.ClientProxy.invokeSync(ClientProxy.java:73)
	at org.apache.cxf.jaxws.JaxWsClientProxy.invoke(JaxWsClientProxy.java:124)
	... 37 more

Thanks for your help!

Jay

-- 
View this message in context: http://cxf.547215.n5.nabble.com/DataHandler-MTOM-as-inline-vs-attachment-tp3382153p3382153.html
Sent from the cxf-user mailing list archive at Nabble.com.

Re: DataHandler - MTOM as inline vs attachment

Posted by Benson Margulies <bi...@gmail.com>.
What data binding are you using?

Re: DataHandler - MTOM as inline vs attachment

Posted by jaybytez <ja...@yahoo.com>.
Here is my code from my service endpoint for getting the DataHandler:
/**
     * Gets a byte array from a <code>DataHandler</code>.
     * 
     * @param dataHandler
     *            Contains the content from which the byte array is created.
     * @return byte array.
     */
    private byte[] getByteArray(DataHandler dataHandler) {
        byte[] bytes = null;
        try {
            if (dataHandler.getContent() == null) {
                throw new ValidationException("DataHandler content is
null.");
            }

            if (LOGGER.isDebugEnabled()) {
                LOGGER.debug("DataHandler content type: " +
dataHandler.getContentType());
                LOGGER.debug("DataHandler content Class name: " +
dataHandler.getContent().getClass().getSimpleName());
                if (dataHandler.getContent() instanceof
org.apache.cxf.attachment.DelegatingInputStream) {
                    LOGGER.debug("DataHandler content type is
org.apache.cxf.attachment.DelegatingInputStream.");
                }
                if (dataHandler.getContent() instanceof
org.apache.cxf.io.DelegatingInputStream) {
                    LOGGER.debug("DataHandler content type is
org.apache.cxf.io.DelegatingInputStream.");
                }
            }

            int offset = 0;
            int numRead = 0;
            if (dataHandler.getContent() instanceof InputStream) {
                LOGGER.debug("DataHandler content type is InputStream.");

                InputStream inputStream = (InputStream)
dataHandler.getContent();
                if (inputStream == null) {
                    throw new ValidationException("DataHandler InputStream
is null.");
                }

                long length = inputStream.available();
                LOGGER.debug("The length of inputStream.available(): " +
length);

                validateByteArrayLength(length);

                bytes = new byte[(int) length];
                while (offset < bytes.length && (numRead =
inputStream.read(bytes, offset, bytes.length - offset)) >= 0) {
                    offset += numRead;
                }
                inputStream.close();

                if (offset < bytes.length) {
                    throw new IOException("Could not completely read input
stream.");
                }
            } else if (dataHandler.getContent() instanceof byte[]) {
                LOGGER.debug("DataHandler content type is byte[].");
                // If a byte array was passed
                bytes = (byte[]) dataHandler.getContent();
            } else {
                String msg = "Expected instance of InputStream or byte array
but received "
                        +
dataHandler.getContent().getClass().getSimpleName();
                LOGGER.error(msg);
                throw new ValidationException(msg);
            }

        } catch (IOException e) {
            throw new ValidationException("Error getting byte array from
content: " + e);
        }
        return bytes;
    }



/**
     * Validates the byte array length. Throws validation exception if input
stream is too large (greater than integer
     * maximum length or is empty).
     * 
     * @param length
     *            of byte array.
     * @throws IOException
     *             Throws IOException if the input stream is empty.
     */
    private void validateByteArrayLength(long length) throws IOException {
        String msg;
        if (length > Integer.MAX_VALUE) {
            msg = "Input stream is too large to create byte array: " +
length;
            LOGGER.error(msg);
            throw new ValidationException(msg);
        } else if (length < 1) {
            msg = "Input stream is empty. Length: " + length;
            LOGGER.error(msg);
            throw new IOException(msg);
        }
        LOGGER.debug("Input stream is a valid length: " + length);
    }


Here is the message:
15609 [main] WARN com.foo.soa.frmwk.codes.CodeXmlLoader -
CodeXmlLoader.loadAll loaded objects:3
Feb 11, 2011 10:47:25 AM org.apache.cxf.phase.PhaseInterceptorChain
doDefaultLogging
WARNING: Interceptor for
{http://foo.com/services/dms}WebDocMgmtAccessServiceService#{http://foo.com/services/dms}submitDocument
has thrown exception, unwinding now
org.apache.cxf.interceptor.Fault: Could not write attachments.
	at
org.apache.cxf.interceptor.AttachmentOutInterceptor$AttachmentOutEndingInterceptor.handleMessage(AttachmentOutInterceptor.java:98)
	at
org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:243)
	at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:516)
	at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:313)
	at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:265)
	at org.apache.cxf.frontend.ClientProxy.invokeSync(ClientProxy.java:73)
	at org.apache.cxf.jaxws.JaxWsClientProxy.invoke(JaxWsClientProxy.java:124)
	at $Proxy74.submitDocument(Unknown Source)
	at
com.foo.ws.clientproxy.WSWebDocMgmtAccessServiceProxy.invokeWebService(WSWebDocMgmtAccessServiceProxy.java:75)
	at
com.foo.ws.proxy.base.WsProxyServiceTemplate.getResponseObject(WsProxyServiceTemplate.java:89)
	at
com.foo.ws.clientproxy.WSWebDocMgmtAccessServiceProxyTest.testWsToobject(WSWebDocMgmtAccessServiceProxyTest.java:50)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
	at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
	at java.lang.reflect.Method.invoke(Method.java:597)
	at
org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:44)
	at
org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:15)
	at
org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:41)
	at
org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:20)
	at
org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:28)
	at
org.springframework.test.context.junit4.statements.RunBeforeTestMethodCallbacks.evaluate(RunBeforeTestMethodCallbacks.java:74)
	at
org.springframework.test.context.junit4.statements.RunAfterTestMethodCallbacks.evaluate(RunAfterTestMethodCallbacks.java:82)
	at
org.springframework.test.context.junit4.statements.SpringRepeat.evaluate(SpringRepeat.java:72)
	at
org.springframework.test.context.junit4.SpringJUnit4ClassRunner.runChild(SpringJUnit4ClassRunner.java:240)
	at
org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:49)
	at org.junit.runners.ParentRunner$3.run(ParentRunner.java:193)
	at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:52)
	at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:191)
	at org.junit.runners.ParentRunner.access$000(ParentRunner.java:42)
	at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:184)
	at
org.springframework.test.context.junit4.statements.RunBeforeTestClassCallbacks.evaluate(RunBeforeTestClassCallbacks.java:61)
	at
org.springframework.test.context.junit4.statements.RunAfterTestClassCallbacks.evaluate(RunAfterTestClassCallbacks.java:70)
	at org.junit.runners.ParentRunner.run(ParentRunner.java:236)
	at
org.springframework.test.context.junit4.SpringJUnit4ClassRunner.run(SpringJUnit4ClassRunner.java:180)
	at
org.apache.maven.surefire.junit4.JUnit4TestSet.execute(JUnit4TestSet.java:62)
	at
org.apache.maven.surefire.suite.AbstractDirectoryTestSuite.executeTestSet(AbstractDirectoryTestSuite.java:140)
	at
org.apache.maven.surefire.suite.AbstractDirectoryTestSuite.execute(AbstractDirectoryTestSuite.java:127)
	at org.apache.maven.surefire.Surefire.run(Surefire.java:177)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
	at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
	at java.lang.reflect.Method.invoke(Method.java:597)
	at
org.apache.maven.surefire.booter.SurefireBooter.runSuitesInProcess(SurefireBooter.java:345)
	at
org.apache.maven.surefire.booter.SurefireBooter.main(SurefireBooter.java:1009)
Caused by: javax.activation.UnsupportedDataTypeException: no object DCH for
MIME type application/octet-stream
	at javax.activation.ObjectDataContentHandler.writeTo(DataHandler.java:877)
	at javax.activation.DataHandler.writeTo(DataHandler.java:302)
	at
org.apache.cxf.attachment.AttachmentSerializer.writeAttachments(AttachmentSerializer.java:234)
	at
org.apache.cxf.interceptor.AttachmentOutInterceptor$AttachmentOutEndingInterceptor.handleMessage(AttachmentOutInterceptor.java:96)
	... 43 more
javax.xml.ws.WebServiceException: Could not write attachments.
	at org.apache.cxf.jaxws.JaxWsClientProxy.invoke(JaxWsClientProxy.java:135)
	at $Proxy74.submitDocument(Unknown Source)
	at
com.foo.ws.clientproxy.WSWebDocMgmtAccessServiceProxy.invokeWebService(WSWebDocMgmtAccessServiceProxy.java:75)
	at
com.foo.ws.proxy.base.WsProxyServiceTemplate.getResponseObject(WsProxyServiceTemplate.java:89)
	at
com.foo.ws.clientproxy.WSWebDocMgmtAccessServiceProxyTest.testWsToobject(WSWebDocMgmtAccessServiceProxyTest.java:50)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
	at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
	at java.lang.reflect.Method.invoke(Method.java:597)
	at
org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:44)
	at
org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:15)
	at
org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:41)
	at
org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:20)
	at
org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:28)
	at
org.springframework.test.context.junit4.statements.RunBeforeTestMethodCallbacks.evaluate(RunBeforeTestMethodCallbacks.java:74)
	at
org.springframework.test.context.junit4.statements.RunAfterTestMethodCallbacks.evaluate(RunAfterTestMethodCallbacks.java:82)
	at
org.springframework.test.context.junit4.statements.SpringRepeat.evaluate(SpringRepeat.java:72)
	at
org.springframework.test.context.junit4.SpringJUnit4ClassRunner.runChild(SpringJUnit4ClassRunner.java:240)
	at
org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:49)
	at org.junit.runners.ParentRunner$3.run(ParentRunner.java:193)
	at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:52)
	at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:191)
	at org.junit.runners.ParentRunner.access$000(ParentRunner.java:42)
	at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:184)
	at
org.springframework.test.context.junit4.statements.RunBeforeTestClassCallbacks.evaluate(RunBeforeTestClassCallbacks.java:61)
	at
org.springframework.test.context.junit4.statements.RunAfterTestClassCallbacks.evaluate(RunAfterTestClassCallbacks.java:70)
	at org.junit.runners.ParentRunner.run(ParentRunner.java:236)
	at
org.springframework.test.context.junit4.SpringJUnit4ClassRunner.run(SpringJUnit4ClassRunner.java:180)
	at
org.apache.maven.surefire.junit4.JUnit4TestSet.execute(JUnit4TestSet.java:62)
	at
org.apache.maven.surefire.suite.AbstractDirectoryTestSuite.executeTestSet(AbstractDirectoryTestSuite.java:140)
	at
org.apache.maven.surefire.suite.AbstractDirectoryTestSuite.execute(AbstractDirectoryTestSuite.java:127)
	at org.apache.maven.surefire.Surefire.run(Surefire.java:177)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
	at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
	at java.lang.reflect.Method.invoke(Method.java:597)
	at
org.apache.maven.surefire.booter.SurefireBooter.runSuitesInProcess(SurefireBooter.java:345)
	at
org.apache.maven.surefire.booter.SurefireBooter.main(SurefireBooter.java:1009)
Caused by: javax.activation.UnsupportedDataTypeException: no object DCH for
MIME type application/octet-stream
	at javax.activation.ObjectDataContentHandler.writeTo(DataHandler.java:877)
	at javax.activation.DataHandler.writeTo(DataHandler.java:302)
 trx null
	at
org.apache.cxf.attachment.AttachmentSerializer.writeAttachments(AttachmentSerializer.java:234)
	at
org.apache.cxf.interceptor.AttachmentOutInterceptor$AttachmentOutEndingInterceptor.handleMessage(AttachmentOutInterceptor.java:96)
	at
org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:243)
	at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:516)
	at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:313)
	at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:265)
	at org.apache.cxf.frontend.ClientProxy.invokeSync(ClientProxy.java:73)
	at org.apache.cxf.jaxws.JaxWsClientProxy.invoke(JaxWsClientProxy.java:124)
	... 37 more

Hope this helps....my associate also sent me this:
- One of the debug statements was to find out if it was using
org.apache.cxf.io or org.apache.cxf.attachment.DelegatingInputStream.
- I'm trying to cast this to an InputStream and I think this is not
working...
- If I set an io.DelegatingInputStream with data (as in the JUnit test) it
works.
- The attachment one isn't working.

Thanks...hope the additional information helps...jay
-- 
View this message in context: http://cxf.547215.n5.nabble.com/DataHandler-MTOM-as-inline-vs-attachment-tp3382153p3382174.html
Sent from the cxf-user mailing list archive at Nabble.com.