dumpTreshold无效

时间:2016-10-26 08:21:15

标签: java xml soap jax-ws

我使用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

任何帮助将不胜感激。

3 个答案:

答案 0 :(得分:7)

我改变了行

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

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

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

答案 1 :(得分: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;

答案 2 :(得分: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"