dumpTreshold无效

问题描述 投票:3回答:3

我使用JAX-WS RI进行SOAP XML与其他服务的交换。我试图看到我的soap xml发送的完整错误日志,但由于截断消息而无法执行此操作:

    at org.apache.cxf.transport.servlet.ServletController.invokeDestination(ServletController.java:234)
    at org.apache.cxf.transport.servlet.ServletController.invoke(ServletController.java:208)
    at org.apache.cxf.transport.servlet.ServletController.invoke(ServletController.java:160)
    at org.apache.cxf.transport.servlet.CXFNonSpringServlet.invoke(CXFNonSpringServlet.java:171)
    at org.apache.cxf.transpo

Message has been truncated

use com.sun.xml.ws.transport.http.HttpAdapter.dumpTreshold property to increase the amount of printed part of the message
--------------------

我无法使用以下设置更正此问题:

System.setProperty("com.sun.xml.ws.transport.http.client.HttpTransportPipe.dump", "true");
        System.setProperty("com.sun.xml.internal.ws.transport.http.client.HttpTransportPipe.dump", "true");
        System.setProperty("com.sun.xml.ws.transport.http.HttpAdapter.dump", "true");
        System.setProperty("com.sun.xml.internal.ws.transport.http.HttpAdapter.dump", "true");
        System.setProperty("com.sun.xml.internal.ws.transport.http.HttpAdapter.dumpTreshold", "999999");

我的意思是dumpTreshold = 999999

任何帮助将不胜感激。

java xml soap jax-ws
3个回答
8
投票

我改变了路线

System.setProperty("com.sun.xml.internal.ws.transport.http.HttpAdapter.dumpTreshold", "999999");

System.setProperty("com.sun.xml.ws.transport.http.HttpAdapter.dumpTreshold", "999999");

现在我可以看到完整的日志。


0
投票

HttpAdapter班有:

static {
    ...
    try {
        dump_threshold = Integer.getInteger(HttpAdapter.class.getName() + ".dumpTreshold", 4096);
    } catch (SecurityException se) {
        if (LOGGER.isLoggable(Level.CONFIG)) {
            LOGGER.log(Level.CONFIG, "Cannot read ''{0}'' property, using defaults.",
                    new Object[] {HttpAdapter.class.getName() + ".dumpTreshold"});
        }
    }
    ...

和:

 pw.println(WsservletMessages.MESSAGE_TOO_LONG(HttpAdapter.class.getName() + ".dumpTreshold"));

根据HttpAdapter.class的位置设置参数名称。

或者只设置两个变体(Sun内部RI WS通过添加中间包级别.internal.重新打包):

java ... \
-Dcom.sun.xml.ws.transport.http.HttpAdapter.dumpTreshold=99999 \
-Dcom.sun.xml.internal.ws.transport.http.HttpAdapter.dumpTreshold=99999 \

默认是:

public static volatile int dump_threshold = 4096;

0
投票

您也可以在环境中进行设置。

对于码头我使用:

export MAVEN_OPTS=" \
-Dcom.sun.xml.ws.transport.http.client.HttpTransportPipe.dump=true \
-Dcom.sun.xml.internal.ws.transport.http.HttpAdapter.dumpTreshold=999999 \ 
-Dcom.sun.xml.ws.transport.http.HttpAdapter.dumpTreshold=999999"
© www.soinside.com 2019 - 2024. All rights reserved.