簡體   English   中英

使Jboss 7使用您選擇的自定義自上而下的WSDL定義,而無需CXF生成wsdl

[英]get Jboss 7 to use custom top down WSDL definition of your choosing, without having CXF generate a wsdl

我們正在將自上而下(首先是wsdl)的ws從jboss4移至jboss7,並且在使用CXF時遇到了一些困難。 我注意到位於獨立\\ data \\ wsdl \\ x.ear \\ x.war \\ x.wsdl中的大型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來實現這一目標,所以...討論!

因此在@webservice批注中設置wsdlLocation會導致此處描述的錯誤

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

因此閱讀后它變得更簡單

那里的方向列出了兩個選項:

1)更新FooDocumentImpl類上的@WebService批注,使其具有與wsdl中的值匹配的serviceName / portName屬性。

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>

它像魅力一樣運作

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM