Java 索普汉德尔汉德勒福尔特酒店

Java 索普汉德尔汉德勒福尔特酒店,java,web-services,Java,Web Services,有人能解释一下什么时候调用了SOAPHandler的handleFault(SOAPMessageContext)方法吗 我的处理程序类是: 公共类WebServiceHandler实现SOAPHandler{ 私有无效转储SOAPMessage(SOAPMessage消息){ 如果(msg==null){ System.out.println(“SOAP消息为空”); 返回; } System.out.println(“”); System.out.println(“-------------

有人能解释一下什么时候调用了
SOAPHandler
handleFault(SOAPMessageContext)
方法吗

我的处理程序类是:

公共类WebServiceHandler实现SOAPHandler{
私有无效转储SOAPMessage(SOAPMessage消息){
如果(msg==null){
System.out.println(“SOAP消息为空”);
返回;
}
System.out.println(“”);
System.out.println(“------------------”);
System.out.println(“SOAP消息转储”);
System.out.println(“------------------”);
试一试{
ByteArrayOutputStream bas=新的ByteArrayOutputStream();
消息写入(BAS);
System.out.println(baos.toString(getMessageEncoding(msg));
}捕获(例外e){
e、 printStackTrace();
}
}
@凌驾
公共布尔handleMessage(SOAPMessageContext上下文){
试一试{
dumpSOAPMessage(((SOAPMessageContext)context.getMessage());
}捕获(例外e){
e、 printStackTrace();
}
返回true;
}
@凌驾
公共布尔handleFault(SOAPMessageContext上下文){
//TODO自动生成的方法存根
System.out.println(“内部句柄错误::”+上下文);
返回true;
}
@凌驾
公共无效关闭(MessageContext上下文){
//TODO自动生成的方法存根
}
@凌驾
公共集getHeaders(){
Set=newhashset();
返回集;
}
}
有人能解释一下什么时候调用
handleMessage
handleFault
方法吗?

根据:

手册信息:

调用Handler.handleMessage()方法来拦截SOAP 后端处理前后的消息请求 组成部分

handleFault:

实现此方法以处理任何SOAP故障的处理 由handleMessage()方法生成,以及生成的错误 通过后端组件


显示句柄错误的实现

@覆盖
公共布尔handleFault(SOAPMessageContext上下文){
SOAPMessage=context.getMessage();
SOAPBody=message.getSOAPBody();
SOAPFault=body.getFault();
字符串代码=fault.getFaultCode();
String faultString=fault.getFaultString();
Detail Detail=fault.getDetail();
如果(详细信息!=null){
迭代器iter=detail.getChildElements();
//获取第一级细节
HashMap detailMap=新的HashMap();
while(iter.hasNext()){
SOAPElement=iter.next();
put(element.getLocalName(),element.getValue());
}
//伐木之类的
}
}
返回true;
}

我相信所描述的调用
handleFault(..)
对于纯JAX-WS是不正确的。只有特定于供应商的代码才能执行此操作。在给定的链接中,这将是WebLogic服务器,请参见。在deatailmap中,我可以获得反错误数据,但在callHandlersOnResponse()中,异常始终没有数据