Tomcat JAX-WS:OutOfMemory和大型附件+;链式装卸工
我的问题类似于: 及 我正在使用tomcat,Metro运行时配置,当我想在我的Tomcat JAX-WS:OutOfMemory和大型附件+;链式装卸工,tomcat,soap,jax-ws,out-of-memory,mtom,Tomcat,Soap,Jax Ws,Out Of Memory,Mtom,我的问题类似于: 及 我正在使用tomcat,Metro运行时配置,当我想在我的HandlerChain中添加一个头时,它会给我一个OutOfMemory异常 public boolean handleMessage(SOAPMessageContext smc) { if (Boolean.TRUE.equals(smc.get(MessageContext.MESSAGE_OUTBOUND_PROPERTY))) { SOAPMessage sm = smc.getM
HandlerChain
中添加一个头时,它会给我一个OutOfMemory
异常
public boolean handleMessage(SOAPMessageContext smc) {
if (Boolean.TRUE.equals(smc.get(MessageContext.MESSAGE_OUTBOUND_PROPERTY))) {
SOAPMessage sm = smc.getMessage(); // <- OutOfMemory
...
公共布尔handleMessage(SOAPMessageContext smc){
if(Boolean.TRUE.equals(smc.get(MessageContext.MESSAGE\u OUTBOUND\u属性))){
SOAPMessage sm=smc.getMessage();//此问题也可以在此处的票证报告中找到:
我通过不使用处理程序解决了这个问题,但在创建如下端口时添加了一个头:
Web服务创建
缺点
这段代码需要很多库来工作:JAXB、JAX-WS、StreamBuffer、Policy、Stax Ex、gmbal api,这对于仅仅添加一个头来说是非常糟糕的(特别是如果您使用的是没有maven支持的胖客户机)
WebServiceEndpoint endpoint = w.getWebServiceEndpointPort(new MTOMFeature());
Map<String, Object> ctxt = ((BindingProvider) endpoint).getRequestContext();
// Enable HTTP chunking mode, otherwise HttpURLConnection buffers
ctxt.put("com.sun.xml.ws.transport.http.client.streaming.chunk.size", 8192);
WSBindingProvider bp = (WSBindingProvider) endpoint;
bp.setOutboundHeaders(Headers.create(JAXBContext.newInstance(WSSecurityHeader.class),
new WSSecurityHeader()));
@XmlRootElement(name = "Security")
public class WSSecurityHeader {
@XmlElement(name = "UsernameToken")
public WSSecurityUsernameToken usernameToken = new WSSecurityUsernameToken();
...
}