Weblogic/JRockit JAX-RPC (Soap) 网络服务的异常处理
Weblogic/JRockit Exception handling on JAX-RPC (Soap) webservices
我在 JAX-RPC(Weblogic 实现)上维护旧的 soap 网络服务 运行。
但是我遇到了一个没有任何完整堆栈跟踪的 NPE :
<env:Envelope xmlns:env="http://schemas.xmlsoap.org/soap/envelope/"><env:Header/><env:Body><env:Fault><faultcode>env:Server</faultcode><faultstring>Failed to invoke end component com.old.service.MyService (POJO), operation=listUsers
-> Failed to invoke method
</faultstring><detail><java:string xmlns:java="java.io">java.lang.NullPointerException
</java:string></detail></env:Fault></env:Body></env:Envelope>
有没有办法找到完整的堆栈跟踪?
有没有办法以编程方式处理 Web 服务异常,例如 Jax-WS 中的 @HandlerChain
注释(用于记录目的)?
解法:
我终于在这里找到了解决方案:https://docs.oracle.com/middleware/1212/wls/WSRPC/jax-rpc-handlers.htm#WSRPC414
通过将 @HandlerChain(file = "jaxrpc-soap-handler-chain.xml", name="JaxRpcSOAPHandlerChain")
与特定处理程序配置文件(使用 BEA 名称空间而不是 JEE 名称空间)一起使用,该配置文件引用实现 javax.xml.rpc.handler.Handler
的 class
jaxrpc-soap-handler-chain.xml :
<?xml version="1.0" encoding="UTF-8" ?>
<jwshc:handler-config xmlns:jwshc="http://www.bea.com/xml/ns/jws"
xmlns:soap1="http://HandlerInfo.org/Server1" xmlns:soap2="http://HandlerInfo.org/Server2"
xmlns="http://java.sun.com/xml/ns/j2ee">
<jwshc:handler-chain>
<jwshc:handler-chain-name>JaxRpcSOAPHandlerChain</jwshc:handler-chain-name>
<jwshc:handler>
<handler-name>JaxRpcSOAPLoggerHandler</handler-name>
<handler-class>com.old.service.ws.handler.JaxRpcSOAPLoggerHandler</handler-class>
</jwshc:handler>
</jwshc:handler-chain>
</jwshc:handler-config>
我在 JAX-RPC(Weblogic 实现)上维护旧的 soap 网络服务 运行。 但是我遇到了一个没有任何完整堆栈跟踪的 NPE :
<env:Envelope xmlns:env="http://schemas.xmlsoap.org/soap/envelope/"><env:Header/><env:Body><env:Fault><faultcode>env:Server</faultcode><faultstring>Failed to invoke end component com.old.service.MyService (POJO), operation=listUsers
-> Failed to invoke method
</faultstring><detail><java:string xmlns:java="java.io">java.lang.NullPointerException
</java:string></detail></env:Fault></env:Body></env:Envelope>
有没有办法找到完整的堆栈跟踪?
有没有办法以编程方式处理 Web 服务异常,例如 Jax-WS 中的 @HandlerChain
注释(用于记录目的)?
解法:
我终于在这里找到了解决方案:https://docs.oracle.com/middleware/1212/wls/WSRPC/jax-rpc-handlers.htm#WSRPC414
通过将 @HandlerChain(file = "jaxrpc-soap-handler-chain.xml", name="JaxRpcSOAPHandlerChain")
与特定处理程序配置文件(使用 BEA 名称空间而不是 JEE 名称空间)一起使用,该配置文件引用实现 javax.xml.rpc.handler.Handler
jaxrpc-soap-handler-chain.xml :
<?xml version="1.0" encoding="UTF-8" ?>
<jwshc:handler-config xmlns:jwshc="http://www.bea.com/xml/ns/jws"
xmlns:soap1="http://HandlerInfo.org/Server1" xmlns:soap2="http://HandlerInfo.org/Server2"
xmlns="http://java.sun.com/xml/ns/j2ee">
<jwshc:handler-chain>
<jwshc:handler-chain-name>JaxRpcSOAPHandlerChain</jwshc:handler-chain-name>
<jwshc:handler>
<handler-name>JaxRpcSOAPLoggerHandler</handler-name>
<handler-class>com.old.service.ws.handler.JaxRpcSOAPLoggerHandler</handler-class>
</jwshc:handler>
</jwshc:handler-chain>
</jwshc:handler-config>