dumpTreshold 不工作

dumpTreshold not working

我将 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

任何帮助将不胜感激。

我换了行

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

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

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

HttpAdapter class 有:

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;

也可以在环境中设置。

对于jetty我使用:

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"