2012-07-03 24 views
1

我有一個Web服務客戶端,工作完全正常,其內有一個定義的WSDL的位置的線:瞄準目錄內一個.jar文件中 - Java的

@WebServiceClient(name = "CReceiveMOMessageService", 
        targetNamespace = "http://...", 
        wsdlLocation = "CReceiveMOMessageService.wsdl") 

的代碼塊應作爲可運行的JAR導出並打算在遠程位置上運行。

當我像上面那樣定義WSDL的位置時,它會在運行JAR文件的目錄中查找WSDL文件。相反,我想要做的是將WSDL文件添加到項目文件夾並在此之後以JAR格式導出,然後以指向JAR文件內的WSDL的方式配置參數wsdlLocation

這是如何實現的?

回答

1

可以將WSDL添加到JAR中。如此看來,該公約是將WSDL在JAR在META-INF/wsdl位置(雖然Oracle工具似乎傾向於META-INF/wsdls(見point 9 of this Oracle tutorial例如)。

我還沒有使用的Oracle Eclipse企業軟件包,我猜該OEPE clientgen任務會不正確生成客戶端類的,當你指定打包JAR裏面的WSDL,但我不認爲這是與傳遞-wsdllocation META-INF/wsdls/YourService.wsdl參數運行wsimport.exe時:

wsimport.exe將輸出@WebServiceClient(... wsdlLocation = "META-INF/wsdls/YourService.wsdl")反而會通常也會在類的靜態初始化器中生成如下代碼:

baseUrl = YourService.class.getResource("."); 
url = new URL(baseUrl, "META-INF/wsdls/YourService.wsdl"); 

它仍然會指向根文件夾,然後它將添加所提供的WSDL路徑到最終得到不存在的路徑。

您將有它產生之後,包括這樣的事情,而不是更改類:

url = YourService.class.getClassLoader().getResource("META-INF/wsdls/YourService.wsdl"); 

現在將JAR內點。當然,在構建客戶端JAR時,您必須在該位置打包WSDL。

相關問題