Java 在JAX-WS上从SOAPMessage获取方法签名名称

Java 在JAX-WS上从SOAPMessage获取方法签名名称,java,soap,jax-ws,Java,Soap,Jax Ws,我正在使用JAX-WS来使用SOAP web服务,我正在寻找一种简单的方法来找到通过SOAP调用的方法,该方法生成了我当前的SOAP消息 我相信一种方法是首先检查SOAP主体节点(这是调用的方法的名称),但我不知道如何从这个SOAP消息解析SOAP主体 到现在为止,我可以将消息输出到我的控制台 提前感谢我不确定是否理解您的问题,但是: 如果您将soap消息作为处理程序的一部分进行处理,则可以从SOAPMessageContext获取正在调用的服务和操作: QName svcn = (QN

我正在使用JAX-WS来使用SOAP web服务,我正在寻找一种简单的方法来找到通过SOAP调用的方法,该方法生成了我当前的SOAP消息

我相信一种方法是首先检查SOAP主体节点(这是调用的方法的名称),但我不知道如何从这个SOAP消息解析SOAP主体

到现在为止,我可以将消息输出到我的控制台


提前感谢

我不确定是否理解您的问题,但是:

如果您将soap消息作为处理程序的一部分进行处理,则可以从SOAPMessageContext获取正在调用的服务和操作:

    QName svcn = (QName) context.get(MessageContext.WSDL_SERVICE);
    svcn.getLocalPart();
    QName opn = (QName) context.get(MessageContext.WSDL_OPERATION);
    opn.getLocalPart();
如果您只想在客户端代码中处理SOAPMessage,并想知道SOAP正文中包含哪些元素:

    msg.getSOAPBody().getFirstChild().getLocalName()

SOAPMessage将envilope的每个部分公开为DOM对象,因此您可以使用它执行正常的“DOM”操作。

可能对某些人有用,这是对FrustedWithFormsDesigner问题的答案:它在我的消息处理程序中似乎为空

请看这个。这正是它为空的原因:


除了
MessageContext.WSDL\u操作
之外,还有其他方法获取操作名吗?在我的消息处理程序中,它似乎为空。