通过Web服务中的SOAP Handler传递参数

时间:2013-03-05 20:14:20

标签: java web-services soap jax-ws soaphandler

我有一个JBoss AS,其中部署了一个Web服务。调用此Web服务会调用另一个JBoss AS中的另一个Web服务。 我有兴趣在SOAP消息的头部传递一些参数,所以当SOAP消息到达第一个JBoss AS时,我读取头参数,对它们执行一些操作,并将它们放到指向的消息的头部。第二个JBoss AS。 我正在使用两个SOAPHandler,并在我使用的第一个AS中将参数传递给Web服务:

public boolean handleMessage(SOAPMessageContext context) { 
... 
//get the parameter from the header
...
context.put("parameter", parameter);
context.setScope("parameter", MessageContext.Scope.APPLICATION);
}

这样我可以在Web服务中执行:

parameter = wsContext.getMessageContext().get("parameter").toString();
...
((BindingProvider) service).getRequestContext().put("parameter", parameter);

在第二个SOAPHandler中,管理指向第二个AS的消息:

public boolean handleMessage(SOAPMessageContext context) { 
...
parameter = (String) context.get("parameter");
...
//put the parameter in the header
}

这样可行,但是如果新消息到达没有参数的第一个AS,则前面的消息将保留在上下文中,并且我将旧参数转到第二个AS。 也许这与:MessageContext.Scope.APPLICATION有关?

0 个答案:

没有答案