我有一個由wsgen通過maven生成的web服務。當我將服務部署到Glassfish時,它將服務器URL放入WSDL中。我們的Glassfish服務器由Apache代理服務器提供服務。忽略Glassfish生成的WSDL服務端點地址
這一切都說明,當有人訪問我們的WSDL和着眼於服務端點和他們看到的肥皂地址是
http://app server url/service...
,而不是
http://proxy server url/service...
是我想我需要一些澄清在幾件物品上...
這個端點地址重要嗎?如果端點地址與他們將調用以調用服務的代理服務器的URL不匹配,客戶端是否仍能夠運行。這基本上提出了問題「是WSDL到web服務,因爲接口是對象」。
UPDATE:響應於但看來「WSDL到Web服務作爲接口是到對象」這個第一個問題。 WSDL中指定的端點地址並不重要。事實上,在不同於WSDL as described here中指定的端點上調用Web服務操作相對簡單。
// Create service and proxy from the generated Service class. HelloService service = new HelloService(); HelloPort proxy = service.getHelloPort();
// Override the endpoint address ((BindingProvider)proxy).getRequestContext().put( BindingProvider.ENDPOINT_ADDRESS_PROPERTY, " http://new/endpointaddress "); proxy.sayHello("Hello World!");
當我們部署到Glassfish時,會自動生成WSDL。是否有一種簡單的方法可以通過應用程序服務器設置覆蓋Glassfish中生成的端點地址。如果是這樣,我可以創建一個設置來自動將代理服務器URL放入生成的WSDL中。
如果1的確很重要,我們不能用2以任何方式覆蓋它,那麼它基本上意味着我們需要爲開發和生產做單獨的構建。這並不是「感覺不錯」,因爲在我看來,我們需要做的部署到另一臺服務器的唯一一件事就是將現有的(並經過測試的)戰爭從一個環境放到新的服務器上。