我有这样的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文件中进行此更改,如果可能的话,我该怎么做?
如果您有更好的解决方案,请不要犹豫!
答案 0 :(得分:0)
有点晚了,但也许这可以帮到你:&#34;自定义文件&#34;
http://java-soa.blogspot.pe/2008/07/parameter-customization-in-jax-ws.html