JAX-WS为@WebParam生成意外的元素名称

时间:2015-10-08 11:29:06

标签: jboss wsdl tomcat7 jax-ws weblogic12c

我对JAX-WS 2.2.10的好奇行为感到困惑。

我使用maven插件生成了wsimport的所有java源代码。 到目前为止,消息来源看起来很好。 部署的服务实现在带有Java 1.7的Tomcat 7上运行。

我的问题是: 我也希望将这些资源用于我的服务客户端。 但是与服务的通信很糟糕,因为JAX-WS运行时需要SOAP消息的其他XML元素。

比较生成的WSDL与原始WSDL和注释显示:服务器端的JAX-WS生成自定义名称,使用定义的名称@WebParam(name="...")或{{1}但是客户呢!

最后,双方都有不同的消息元素名称,这会产生异常(@WebResult(name="..."))。

我可以控制服务器上WSDL生成的行为吗? JAXB应该使用给定的注释吗?

提前致谢

编辑,2015-10-12

现在我尝试根据运行时生成的服务器WSDL生成新的客户端源。 结果是maven任务期间的几个异常:Cannot find dispatch method...

疯狂。该框架创建了一个框架无法使用的XML结构。

编辑,2015-11-30

这是我原始的WSDL定义,它是JAX-WS代码生成的源代码:

Two declarations cause a collision in the ObjectFactory class

生成的java代码使用以下代码段进行注释:

<message name="checkServiceRequest">
  <part name="checkServiceRequestPart" element="tns:CheckServiceRequest" />
</message>

JAX-WS运行时已在 JBoss EAP 6.3.0 上生成以下WSDL代码段:

@WebParam(name = "CheckServiceRequest", 
  targetNamespace = "http://my.name.space", 
  partName = "checkServiceRequestPart")

消息名称不同,但部件属性等于给定的注释。

JAX-WS运行时已在 Tomcat WebLogic 12.1.3 上生成以下WSDL代码段:

<message name="checkService">
  <part element="tns:CheckServiceRequest" name="checkServiceRequestPart"></part>
</message>

部件属性与给定注释不同。因此,正确使用注释的客户端将发送无法匹配的方法调用。

差异

对于我的开发和WebLogic运行时使用mtro项目的Oracle实现:

<message name="checkService">
  <part name="checkService" element="tns:checkService"/>
</message>

JBoss有自己的实现:

Specification-Title:        The Java API for XML Web Services
Specification-Version:      2.2
Implementation-Title:       JAX-WS Implementation
Implementation-Vendor:      Sun Microsystems Inc
Implementation-Version:     2.2.10
Build-Version:              JAX-WS RI 2.2.10

0 个答案:

没有答案