使用Jaxb绑定更改部件名称

时间:2015-09-28 12:30:26

标签: java xml web-services jaxb wsdl

我有这样的WSDL:

...
<wsdl:message name="myHeader">
    <wsdl:part name="parameter" element="header:myHeader"/>
</wsdl:message>
...
<wsdl:operation name="myOperation">
   <soap:operation soapAction="myOperation" style="document" />
   <wsdl:input name="myOperationRequest">
    <soap:header message="mySession:myHeader" part="header" use="literal"/>
       <soap:body parts="parameters" use="literal" />
   </wsdl:input>
   <wsdl:output name="myOperationResponse">
       <soap:body parts="parameters" use="literal" />
   </wsdl:output>
   <wsdl:fault name="myOperationException">
       <soap:fault name="createTroubleTicketByValueException" use="literal" />
   </wsdl:fault>
</wsdl:operation>
....

我使用wsdl2java将我的WSDL转换为Java,在exsh设置为true的转换过程中没有问题。 但是当我启动我的应用程序(Spring 4,CXF 2.7)时,我收到以下警告:

  

2015-09-28 14:19:04,640 WARN [main] oacsfReflectionServiceFactoryBean(1525) - 方法界面.... XXXSessionWSPort.myOperation配置为BARE但是有多个参数带有错误的@Webparam注释或没有@WebParam注释。

如果我仔细观察生成的WsPort:

@WebResult(name = "myOperationResponse", targetNamespace = "http://myNamespace", partName = "parameters")
@WebMethod(action = "myOperation")
public myOperationResponse myOperation(
    @WebParam(partName = "parameters", name = "myOperationRequest", targetNamespace = "http://myNameSpace")
    myOperationRequest parameters,
    @WebParam(partName = "parameters", name = "myheader", targetNamespace = "http://headerNameSpace", header = true)
    myHeader parameters1) throws myOperationException;

此外,作为客户端,当我调用myOperation CXF / JAXB / Jax-ws / ...(?)时,在myHeader标记的末尾添加“1”,因此服务器无法处理标题。 ..

在ReflectionServiceFactoryBean类中调试之后,我看到问题来自两个@WebParam中的相同partName。

要纠正这个问题,我必须将标题的部分名称更改为WSDL,但我不能:它不是我的。

所以我会在jaxb绑定xml文件中进行此更改,如果可能的话,我该怎么做?

如果您有更好的解决方案,请不要犹豫!

1 个答案:

答案 0 :(得分:0)

有点晚了,但也许这可以帮到你:&#34;自定义文件&#34;

http://java-soa.blogspot.pe/2008/07/parameter-customization-in-jax-ws.html