让Jboss 7使用您自己选择的自定义自顶向下WSDL定义,而无需CXF生成wsdl

时间:2013-03-08 23:18:15

标签: java jboss wsdl cxf

我们正在将自上而下(wsdl first)从jboss4移到jboss7并且在使用CXF时遇到一些困难。我注意到大的wsdl文件位于 独立\ DATA \ WSDL \ x.ear \ x.war \ x.wsdl 不是从提供的xsd集生成的,它似乎是在生成类。例如,我们从JBoss4的定义读取(混淆)

<element name="x">
<complexType>
<sequence>
<element minOccurs="0" name="x" type="x"/>
<choice>
<element name="x" type="x"/>
<element name="x" type="x"/>
<element name="x" type="x"/>
<element name="x" type="x"/>
<element name="x" type="x"/>
</choice>
</sequence>
</complexType>
</element>

并且由CXF生成的那个将所有coice元素替换为minoccurs = 0,对于我们的实际使用完全无效。

<xs:element name="x">
<xs:complexType>
<xs:sequence>
<xs:element minOccurs="0" name="x" type="xs:string"/>
<xs:element minOccurs="0" name="x" type="ns1:x"/>
<xs:element minOccurs="0" name="x" type="ns1:x"/>
<xs:element minOccurs="0" name="x" type="ns1:x"/>
<xs:element minOccurs="0" name="x" type="ns1:x"/>
<xs:element minOccurs="0" name="x" type="ns1:x"/>
</xs:sequence>
</xs:complexType>
</xs:element>

这是因为wsconsume构建了我们的java类并对其进行了足够好的注释以便被cxf解析,但还不足以实际呈现complexTypes的初始意图,所以经过深思熟虑之后,如何让Jboss 7使用它你选择的WSDL定义,没有CXF生成wsdl?我们不会使用Spring来实现这一点,所以...讨论!

1 个答案:

答案 0 :(得分:0)

所以在@webservice注释中设置wsdlLocation会导致此处描述的错误

http://mail-archives.apache.org/mod_mbox/cxf-users/200806.mbox/%3C1932ACF3-DCD2-4073-83DD-981FC0F68F53@apache.org%3E

所以阅读后它变得更简单了

那里的指示列出了两个选项:

1)将FooDocumentImpl类的@WebService注释更新为 具有与。中的值匹配的serviceName / portName属性 WSDL。

2)更新配置中的元素以添加 服务名称和端口名称的qnames。

第一个是如果你没有使用Spring,那么在明确地将@WebService注释带到:

之后
@WebService(endpointInterface = "main.package.InterfaceWS", serviceName = "InterfaceWSService", name = "InterfaceWS", targetNamespace = "http://Interface.namespace.main", wsdlLocation = "WEB-INF/wsdl/InterfaceWS.wsdl" ,portName="InterfaceWSPort")

匹配InterfaceWS.wsdl中的服务描述:

<service name="InterfaceWSService">
                    <port binding="tns:InterfaceWSSOAPBinding" name="InterfaceWSPort">
                              <soap:address location="http://localhost:8080/publishedLocationOfInterface />
                    </port>
</service>

它像魅力一样工作