我的服务端的配置文件已经做了如下设置:
<jaxws:properties>
<entry key="mtom-enabled" value="true"/>
</jaxws:properties>
服务端代码:
public String sendDh(@XmlMimeType("application/octet-stream")
DataHandler handler) throws Exception {
handler.writeTo(new FileOutputStream(new File("c://
sendCxfTest.zip")));
return "success";
}
客户端调用:
SOAPConnectionFactory soapConnFactory =
SOAPConnectionFactory.newInstance();
SOAPConnection connection = soapConnFactory.createConnection();
MessageFactory messageFactory = MessageFactory.newInstance();
SOAPMessage message = messageFactory.createMessage();
SOAPPart soapPart = message.getSOAPPart();
SOAPEnvelope envelope = soapPart.getEnvelope();
SOAPBody body = envelope.getBody();
SOAPElement bodyElement = body.addChildElement(envelope.createName(
"sendDh", "ns2","
http://webservice.com/"));
SOAPElement subElement = bodyElement.addChildElement("arg0");
SOAPElement xope
=subElement.addChildElement(envelope.createName("Include",
"xop","
http://www.w3.org/2004/08/xop/include"));
xope.addAttribute(envelope.createName("href"),"cid:
42a7ee0a-20ee-426b-a135-094d72bc138f");
// Save the message
DataHandler dataHandler = new DataHandler(new FileDataSource(new
File("C://text_templatea.zip")));
AttachmentPart attachment =
message.createAttachmentPart(dataHandler);
attachment.setContentId("<42a7ee0a-20ee-426b-a135-094d72bc138f>");
message.addAttachmentPart(attachment);
String destination = "
http://192.168.0.110:8080/Service";
// Send the message
SOAPMessage reply = connection.call(message, destination);
客户端调用时报错(文件100M以上,小文件没问题):
2008-8-20 15:14:01 com.sun.xml.messaging.saaj.soap.MessageImpl
saveChanges
严重: SAAJ0540: Error during saving a multipart message
Exception in thread "main"
com.sun.xml.messaging.saaj.SOAPExceptionImpl:
java.security.PrivilegedActionException:
com.sun.xml.messaging.saaj.SOAPExceptionImpl: Error during saving a
multipart message
at
com.sun.xml.messaging.saaj.client.p2p.HttpSOAPConnection.call(HttpSOAPConnection.java:
146)
at com.dataexchange.webservice.domain.SendDhTest.main(SendDhTest.java:
49)
Caused by: java.security.PrivilegedActionException:
com.sun.xml.messaging.saaj.SOAPExceptionImpl: Error during saving a
multipart message
at java.security.AccessController.doPrivileged(Native Method)
at
com.sun.xml.messaging.saaj.client.p2p.HttpSOAPConnection.call(HttpSOAPConnection.java:
140)
... 1 more
Caused by: com.sun.xml.messaging.saaj.SOAPExceptionImpl: Error during
saving a multipart message
at
com.sun.xml.messaging.saaj.soap.MessageImpl.saveChanges(MessageImpl.java:
1126)
at
com.sun.xml.messaging.saaj.client.p2p.HttpSOAPConnection.post(HttpSOAPConnection.java:
261)
at com.sun.xml.messaging.saaj.client.p2p.HttpSOAPConnection
$PriviledgedPost.run(HttpSOAPConnection.java:169)
... 3 more
Caused by: java.lang.OutOfMemoryError: Java heap space
CAUSE:
java.security.PrivilegedActionException:
com.sun.xml.messaging.saaj.SOAPExceptionImpl: Error during saving a
multipart message
at java.security.AccessController.doPrivileged(Native Method)
at
com.sun.xml.messaging.saaj.client.p2p.HttpSOAPConnection.call(HttpSOAPConnection.java:
140)
at com.dataexchange.webservice.domain.SendDhTest.main(SendDhTest.java:
49)
Caused by: com.sun.xml.messaging.saaj.SOAPExceptionImpl: Error during
saving a multipart message
at
com.sun.xml.messaging.saaj.soap.MessageImpl.saveChanges(MessageImpl.java:
1126)
at
com.sun.xml.messaging.saaj.client.p2p.HttpSOAPConnection.post(HttpSOAPConnection.java:
261)
at com.sun.xml.messaging.saaj.client.p2p.HttpSOAPConnection
$PriviledgedPost.run(HttpSOAPConnection.java:169)
... 3 more
Caused by: java.lang.OutOfMemoryError: Java heap space