JAX WS正在生成以下内容(仅显示一个片段):
<S:Envelope xmlns:S="http://schemas.xmlsoap.org/soap/envelope/">
<S:Body>
<ns2:capMessageResponse xmlns:ns2="http://www.########.com" xmlns:ns3="test:one:two:1.2" xmlns:ns4="test:one:two:three:1.1">
<ns3:alert>
<ns3:identifier>1247275</ns3:identifier>
以下是生成该方法的方法:
@WebMethod(operationName = "capMessage", action = "urn:getCapMessages")
@WebResult(name = "alert", targetNamespace="test:one:two:1.2")
public List<AlertType> getCapMessage(String messageIds,String uniqueId,boolean skipHtmlStrip) throws CommsMessageException {
try {
我们需要做的是从输出中删除capMessageResponse,并让xmlns attribtues移动到alert属性。
有没有这样做?
答案 0 :(得分:0)
从Java Method签名看起来就像是使用DOCUMENT / WRAPPED样式。你确定吗?如果是这种情况,那么使用当前的方法签名将无法执行您希望的操作。
如果您创建一个新类来保存方法参数并切换到BARE样式,那么您可以获得正在查看的输出。此外,您可能还需要创建另一个类来保存集合返回值。
public List<AlertType> getCapMessage(CapMessageRequest request) throws ...
答案 1 :(得分:0)
要实现所需的输出,请在服务实现bean
上指定以下注释 @SOAPBinding(style = Style.DOCUMENT,parameterStyle=SOAPBinding.ParameterStyle.BARE)
此注释仅在您的Web服务绑定具有Document
样式(这是默认设置以及您从事物的外观中使用的设置)时才合法。
虽然
对此选择持谨慎态度您的消息有效负载不再包含操作名称,您已经知道/想要
直接作为上述1.的结果,您将无法在同一Web服务上的另一个操作中使用相同的实体/参数类型,因为调度程序将无法继续成功发送任何信息消息
同样由于1(缺少相关信息),您的网络服务操作将无法接受多个参数