java如何在JAXWS出现异常时发送自定义响应消息而不是错误消息?
在我的JAXWS web服务中,当异常发生时,我需要向客户机发送一条特定的消息,而不是带有异常描述的标准故障消息
如何做到这一点
我使用的是jaxws rt版本2.1.3
我已经尝试过像这样使用异常映射器,但运气不佳(有些异常映射器没有被调用,这也可能是由于配置中的错误造成的):
@Provider
public class ThrowableExceptionMapper implements ExceptionMapper<Throwable> {
public ThrowableExceptionMapper() {
// TODO Auto-generated constructor stub
}
@Override
public Response toResponse(Throwable throwable) {
if (throwable instanceof WebApplicationException) {
return ((WebApplicationException) throwable).getResponse();
} else {
return Response.serverError().entity("").build();
}
}
}
我们使用的服务器是JBoss EAP 6.4
编辑:
异常映射器方法不适合我的JAXWS web服务,因为这是针对JAX-RS的(感谢SRINIVAS K)。
JAXWS有类似的功能吗
# 1 楼答案
在这个页面的帮助下,我成功地重写了回复信息:
http://www.java-tips.org/java-ee-tips-100042/156-java-api-for-xml-web-services/1958-writing-a-handler-in-jax-ws.html
并以本页为例:
http://www.programcreek.com/java-api-examples/index.php?api=javax.xml.ws.handler.MessageContext
我把这门课放在一起:
编辑,添加其他信息:
您还需要将HandlerChain注释添加到web服务:
并创建处理程序链xml文件:
如果将此文件放在web服务的resources文件夹中,则需要使用与web服务相同的包结构。因此,创建以下包:my。包裹如果您的web服务类位于my中,请在resources文件夹中找到ws。包裹ws软件包
# 2 楼答案
你能检查ExceptionMapper是否适用于像Throwable或Exception这样的通用异常吗
我看到了一些使用WebFault注释配置的自定义异常示例
# 3 楼答案
你能试试下面的吗