0

我有一个从我的 WSDL 生成的 JAX-WS 2.0 Web 服务实现。

我需要在我的逻辑处理程序实现中访问 Web 服务操作名称。

我使用以下方法来解决这个问题,但它总是返回 null。

context.get(MessageContext.WSDL_OPERATION);

如果你们中的任何人都可以帮助我解决这个问题,那就太好了。

我的服务器是 WAS 7.0,开发 IDE 是 RAD 8。

提前致谢。

4

3 回答 3

2

如果您想要 SOAPAction Header 并且它包含 Web 服务名称(就像我的一样),您可以使用它来打印它:

private void inLogger(SOAPMessageContext context){
    HttpServletRequest req = (HttpServletRequest)context.get(MessageContext.SERVLET_REQUEST);
    System.out.println(req.getHeader("SOAPAction"));
}
于 2013-02-18T08:09:14.420 回答
0

如果您的处理程序正在实施LogicalHandler<LogicalMessageContext>,您可以这样做:

((QName)context.get( LogicalMessageContext.WSDL_OPERATION )).getLocalPart();

这将返回被调用的操作的名称。

于 2015-01-03T18:16:33.550 回答
0

您可以尝试这种方式:

1)通过requestContext设置参数:

 Map<String, Object> requestCtx = dispatcher.getRequestContext();
 requestCtx.put("operationName", "anyOperation");

2) 在 WS LogicalHandler 的 handleMessage 中检查这个参数:

 public boolean handleMessage(LogicalMessageContext messageContext) {
    boolean isCustomOperation = messageContext.containsKey("operationName");
    if (isCustomOperation) {
    // do smth..
    }
    return true;
 }
于 2013-03-17T10:47:16.327 回答