2012-06-26 99 views
3

我使用wsimport(JAX-WS 2.1.3)從WSDL生成Java,並且需要使其生成@HandlerChain註釋。所以,我創建了一個JAX-WS綁定文件:如何使用wsimport生成@HandlerChain

<jaxws:bindings 
xmlns:xsd="http://www.w3.org/2001/XMLSchema" 
xmlns:jaxb="http://java.sun.com/xml/ns/jaxb" 
xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" 
xmlns:jaxws="http://java.sun.com/xml/ns/jaxws" 
xmlns:javaee="http://java.sun.com/xml/ns/javaee" 
wsdlLocation="../etc/MessageStudio.wsdl"> 

<jaxws:bindings node="wsdl:definitions"> 
    <javaee:handler-chain> 
     <javaee:handler-chain-name>StrongmailHandlers</javaee:handler-chain-name>    
      <javaee:handler> 
       <javaee:handler-name>OrganizationTokenHandler</javaee:handler-name>   
       <javaee:handler-class>com.bossmedia.strongmailadapter.deliveryadapter.OrganizationTokenHandler</javaee:handler-class>   
      </javaee:handler>      
    </javaee:handler-chain> 
</jaxws:bindings> 

和運行的wsimport Ant任務:

<wsimport 
     wsdl="../etc/MessageStudio.wsdl" 
     sourcedestdir="../src/gen" 
     destdir="../classes" 
     verbose="false" 
     binding="../etc/jaxws.bindings.xml"> 
</wsimport> 

,但我沒有得到任何註釋,並沒有處理程序鏈XML文件。谷歌搜索只能找到我改變軟件包,方法和參數的解決方案,以及從我複製XML的地方找到the JAX-WS RI page

你能幫我找到我的配置或其他方式的缺陷,短缺修改生成的代碼,讓我的處理程序進入鏈?

回答

4

答案是RI示例是不正確。需要有一個處理程序鏈的包裝標籤:

<jaxws:bindings 
xmlns:xsd="http://www.w3.org/2001/XMLSchema" 
xmlns:jaxb="http://java.sun.com/xml/ns/jaxb" 
xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" 
xmlns:jaxws="http://java.sun.com/xml/ns/jaxws" 
xmlns:javaee="http://java.sun.com/xml/ns/javaee" 
wsdlLocation="../etc/MessageStudio.wsdl"> 

<jaxws:bindings node="wsdl:definitions"> 
    <javaee:handler-chains> 
     <javaee:handler-chain> 
      <javaee:handler-chain-name>StrongmailHandlers</javaee:handler-chain-name>    
      <javaee:handler> 
       <javaee:handler-name>OrganizationTokenHandler</javaee:handler-name>   
       <javaee:handler-class>com.bossmedia.strongmailadapter.deliveryadapter.OrganizationTokenHandler</javaee:handler-class>   
      </javaee:handler>      
     </javaee:handler-chain> 
    </javaee:handler-chains> 
</jaxws:bindings> 

+1

另一個差的b * STARD由文檔誤導。現在它可以工作。謝謝 – danirod

+0

非常感謝!這個例子中的錯誤花了2個小時的研究和調試等......直到我發現這個有用的提示。它現在有效!並檢查第二個關於處理程序file.xml的地方放在哪裏......奇怪的行爲! –

2

原來,生成的處理程序鏈文件被放在輸出目錄(目標/包),其中已編譯的類文件。如果你想改變它,你可以使用「destDir」選項來做到這一點。另外,將「xnocompile」設置爲false,否則生成的類文件將以與處理程序文件相同的目錄結束。希望他們沒有在文件上做這樣的工作。

1

該示例中仍然存在錯誤。根據XML方案(http://www.oracle.com/webfolder/technetwork/jsc/xml/ns/javaee/javaee_web_services_metadata_handler_2_0.xsd),標籤<javaee:handler-chain-name>不存在。

校正是:

<jaxws:bindings 
xmlns:xsd="http://www.w3.org/2001/XMLSchema" 
xmlns:jaxb="http://java.sun.com/xml/ns/jaxb" 
xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" 
xmlns:jaxws="http://java.sun.com/xml/ns/jaxws" 
xmlns:javaee="http://java.sun.com/xml/ns/javaee" 
wsdlLocation="../etc/MessageStudio.wsdl"> 

<jaxws:bindings node="wsdl:definitions"> 
    <javaee:handler-chains> 
     <javaee:handler-chain> 
      <javaee:handler> 
       <javaee:handler-name>OrganizationTokenHandler</javaee:handler-name>   
       <javaee:handler-class>com.bossmedia.strongmailadapter.deliveryadapter.OrganizationTokenHandler</javaee:handler-class>   
      </javaee:handler>      
     </javaee:handler-chain> 
    </javaee:handler-chains> 

+0

似乎仍然存在兩個缺失的結束標記

相關問題