簡體   English   中英

如何生成使用WSDL動態位置的SOAP客戶端代碼?

[英]How to generate SOAP client code that uses dynamic location for WSDL?

我正在使用wsimport為我的應用程序提供的幾個WSDL生成客戶端代碼。 我必須在幾個不同的地方運行該應用程序。 我正在嘗試簡化我的客戶端代碼生成/管理問題。

我有點滑回來的是這個。 我有3個接口,應用程序安裝在3個地方。 此時,我必須生成9個源包。 我還有3個源目錄,每個接口都有驅動程序代碼。

所以我有:

 src/srvr1.intf1/
 src/srvr1.intf2/
 src/srvr1.intf3/
 src/srvr2.intf1/
 src/srvr2.intf2/
 src/srvr2.intf3/
 src/srvr3.intf1/
 src/srvr3.intf2/
 src/srvr3.intf2/
 src/all.intf1
 src/all.intf2
 src/all.intf3

你可以看到當我必須將它移動到十幾個站點時會有多糟糕。

我遇到的一件事是我可以進入生成的代碼並用System.getProperty(“currentWSDL”)替換硬編碼的WSDL位置,我可以在運行時設置它。 所以,我從12點到6點。

我可以在“所有”代碼中使用內省來使它成為一個類。 這讓我得到4.並且添加服務器不會增加這個數字。

所以,據我所知,如果我進入並將WSDL引用更改為屬性查找,那么每次運行wsimport時我都必須重新執行該操作。 這有意義嗎?

有沒有辦法讓wsimport使用屬性讀取而不是WSDL的硬編碼字符串? 我運行wsimport時甚至可以給它一個WSDL的值。 我只是不想為運行完全相同的應用程序的n個服務器維護所有30多個客戶端類的n個副本。

您可以像這樣設置服務網址。 除非更改,否則不需要為不同的服務器部署生成wsdl客戶端。 您生成代理,然后在每個客戶端從任何資源(本地文件,數據庫...)讀取URL並設置這樣的URL

String url = //從配置文件或任何其他資源中讀取url,如db((BindingProvider)代理).getRequestContext()。put(BindingProvider.ENDPOINT_ADDRESS_PROPERTY,url);

暫無
暫無

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

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