在我的JAXWS Web服务中,我需要在发生异常时将特定消息发送回客户端,而不是带有异常描述的标准Fault消息。
如何做到这一点?
我使用的是jaxws-rt版本2.1.3
我已经尝试过使用像这样的异常映射器,但没有运气(有些如何调用它们,这也可能是由于配置错误引起的):
NEF
我们使用的服务器是JBoss EAP 6.4。
修改
异常映射器方法不适合我的JAXWS Web服务,因为这适用于JAX-RS(感谢SRINIVAS K)。
JAXWS是否有类似的东西?
答案 0 :(得分:1)
我设法在此页面的帮助下重写了回复消息:
Intel's manuals
我把这个课放在一起:
...
@HandlerChain(file = "handler-chain.xml")
public class MyWebService {
...
}
修改,添加了其他信息:
您还需要将HandlerChain注释添加到Web服务:
<?xml version="1.0" encoding="UTF-8"?>
<handler-chains xmlns="http://java.sun.com/xml/ns/javaee">
<handler-chain>
<handler>
<handler-class>my.package.ws.jaxws.MyLogicalHandler</handler-class>
</handler>
</handler-chain>
</handler-chains>
并创建一个处理程序链xml文件:
string[] strarray = new string[] {"c1","c2","c2"};
var groups = from str in strarray
group str by str into g
select new {
key = g.Key,
count = g.Count()
}
将此文件放在Web服务的资源文件夹中,您需要使用与Web服务相同的包结构。因此,如果您的Web服务类位于my.package.ws包中,请在resources文件夹中创建以下包:my.package.ws。
答案 1 :(得分:0)
你能尝试使用下面的吗?
String errorMessage = "this is custom error message";
return Response.status(e.getResponse().getStatus()).entity(errorMessage).build();
答案 2 :(得分:0)
您可以检查ExceptionMapper是否适用于Throwable或Exception等常规异常。我看到了一些使用WebFault批注配置的自定义异常的例子。