Java 未调用SOAP处理程序

Java 未调用SOAP处理程序,java,soap,Java,Soap,我有以下Web服务 @WebService(targetNamespace=“T24WebServicesImpl”) @XMLSEEAL({ MYCUSTOMERType.class, 对象[].class}) @HandlerChain(文件=“./handler chain.xml”) 公共类T24WebServicesImpl扩展了TwsController{ @网络方法 公开作废我的客户( ....... } } handler-chain.xml com.temenos.tws.H

我有以下Web服务

@WebService(targetNamespace=“T24WebServicesImpl”)
@XMLSEEAL({
MYCUSTOMERType.class,
对象[].class})
@HandlerChain(文件=“./handler chain.xml”)
公共类T24WebServicesImpl扩展了TwsController{
@网络方法
公开作废我的客户(
.......
}
}
handler-chain.xml
com.temenos.tws.Handler

尝试如下处理程序定义:

<?xml version="1.0" encoding="UTF-8"?>
<handler-chains xmlns="http://java.sun.com/xml/ns/javaee"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:jaxb="http://java.sun.com/xml/ns/jaxb"
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 
  http://java.sun.com/xml/ns/javaee/javaee_web_services_metadata_handler_2_0.xsd">
    <handler-chain>
        <handler>
            <handler-name>Handler</handler-name>
            <handler-class>com.temenos.tws.Handler</handler-class>
        </handler>
    </handler-chain>
</handler-chains>

处理者
com.temenos.tws.Handler
您使用的是xml前缀“jaxrs”,但将xml定义绑定到前缀“javaee”http://java.sun.com/xml/ns/javaee“或省略上面代码中显示的名称空间。

public类处理程序实现SOAPHandler{
私有字节[]secretBytes;
/*Getter和Setter方法*/
公共处理程序(){
}
@凌驾
公共作废关闭(MessageContext mCtx){
}
@凌驾
公共集getHeaders(){
返回null;
}
@凌驾
公共布尔handleFault(SOAPMessageContext mCtx){
返回true;
}
@凌驾
公共布尔handleMessage(SOAPMessageContext mCtx){
System.out.println(“服务器:handleMessage());
布尔isRequest=(布尔)mCtx
.get(MessageContext.MESSAGE\u出站\u属性);
//仅对于响应消息,对于出站消息为true,对于
//入境
如果(isRequest){
试一试{
SOAPMessage soapMsg=mCtx.getMessage();
SOAPPart sp=soapMsg.getSOAPPart();
sp.getEnvelope().removeNamespaceDeclaration(“soap”);
SOAPBody=soapMsg.getSOAPBody();
SOAPBodyElement-bodyElement=body.addBodyElement(新的QName(“”,
“javaee”);
//测试添加节点,还原Arraylist代码
soapMsg.writeTo(系统输出);
节点testNode=(节点)body.getFirstChild();
追加(testNode,“CustomerName”,“jondoe”);
soapMsg.writeTo(系统输出);
System.out.println(“服务器:在append()之后”);
返回true;
}捕获(例外情况除外){
}
}
返回true;
}
私有void append(Node addNode、String String、String string2){
Element=addNode.getOwnerDocument().createElement(字符串);
元素。setTextContent(string2);
addNode.appendChild(元素);
//第一个孩子。
}

}
感谢您的响应,我省略了上面的前缀,但响应不会再次调用Halder。处理程序应该将返回的消息格式化为XML,但仍然返回以下响应:。ResponseCode::ResponseCode/CustomerID::CustomerID/