2012-10-03 75 views
0

我試圖找到一些時間到以下問題的解決方案。我有一個包含幾個(6)xsd導入的wsdl文件。我無法更改這些xsd,因爲它們在我的項目之外。共有4個定義,這些定義在這些模式中的2個略有不同。我試圖將每個'衝突'的xsd模式轉換爲它自己的軟件包。我嘗試以下綁定,但它沒有做的工作:WSDL與衝突的XSD進口

testbindings.jaxb:

<bindings xmlns="http://java.sun.com/xml/ns/jaxb" version="2.1"> 
    <bindings schemaLocation="a.xsd"> 
     <schemaBindings> 
       <package name="org.wsi.a" /> 
     </schemaBindings> 
    </bindings> 
</bindings> 

使用:wsimport -p org.wsi -b testbindings.jaxb broker.wsdl

所有課程均在org.wsi產生和org.wsi.a沒有階級。沒有-p開關,所有的xsd都會在它們自己的默認包中生成。但不能告訴wsimport爲每個xsd使用特定的包。這時我用以下綁定文件,它可能不正確,但對於其中的wsimport不會抱怨:

<?xml version="1.0"?> 
<jaxws:bindings xmlns:jaxws="http://java.sun.com/xml/ns/jaxws" xmlns:xsd="http://www.w3.org/2001/XMLSchema"    xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:jaxb="http://java.sun.com/xml/ns/jaxb"> 

<jaxws:bindings wsdlLocation="broker.wsdl" node="wsdl:definitions/wsdl:types/xsd:schema"> 

    <jaxb:bindings xmlns:xs="http://www.w3.org/2001/XMLSchema" node="//xs:schema/xs:import[@namespace='http://docs.oasis-open.org/wsn/b-2']">> 
     <jaxb:schemaBindings> 
      <jaxb:package name="org.broker.wsi.b_2"/> 
     </jaxb:schemaBindings> 
    </jaxb:bindings> 

    <jaxb:bindings xmlns:xs="http://www.w3.org/2001/XMLSchema" node="//xs:schema/xs:import[@namespace='http://docs.oasis-open.org/wsn/t-1']">> 
     <jaxb:schemaBindings> 
      <jaxb:package name="org.broker.wsi.t_1"/> 
     </jaxb:schemaBindings> 
    </jaxb:bindings> 

</jaxws:bindings> 

在包org.broker.wsi.b_2和org.broker.wsi .t_1,沒有文件生成。

我使用綁定在指定的:http://docs.oracle.com/cd/E13222_01/wls/docs103/webserv/data_types.html#wp227713但可能不正確。

建議,歡迎。

+0

你正確地複製粘貼的一切嗎? ' '<' 的schemaLocation = 「B-2.xsd」 節點= 「/ XSD:模式」 '>''似乎腥。 – nalply

+0

你如何導入模式?你可以粘貼(你的模式導入的anonimized版本)嗎?我指的是的WSDL一部分。 –

回答

0

設置爲WSDL,內部XSD和外部XSD的正確的包名的問題在提問/回答描述:

INT-bindings.xml文件:

<?xml version="1.0"?> 
<jaxws:bindings version="2.0" 
       xmlns:jaxws="http://java.sun.com/xml/ns/jaxws" 
      xmlns:xsd="http://www.w3.org/2001/XMLSchema"     
      xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" 
      xmlns:jaxb="http://java.sun.com/xml/ns/jaxb" 
      wsdlLocation="broker.wsdl"> 

<jaxws:package name="org.broker.wsi" /> 

<jaxb:bindings node="//xsd:schema"> 
    <jaxb:schemaBindings> 
     <jaxb:package name="org.broker.wsi.al"/> 
    </jaxb:schemaBindings> 
</jaxb:bindings> 

的外部綁定文件(略):

<jaxb:bindings version="1.0" 
xmlns:jaxb="http://java.sun.com/xml/ns/jaxb" 
xmlns:xjc="http://java.sun.com/xml/ns/jaxb/xjc" 
xmlns:xsd="http://www.w3.org/2001/XMLSchema"> 

    <jaxb:bindings schemaLocation="http://docs.oasis-open.org/wsn/b-2.xsd" node="//xsd:schema"> 
      <jaxb:schemaBindings> 
       <jaxb:package name="org.broker.wsi.oasis.b2"/> 
      </jaxb:schemaBindings> 
    </jaxb:bindings> 
</jaxb:bindings>