[英]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會導致此處描述的錯誤
因此閱讀后它變得更簡單
那里的方向列出了兩個選項:
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.