我使用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
任何帮助将不胜感激。
答案 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"