我爲我的web服務創建了一個WSDL。我想知道如何從我的另一個Web應用程序的jsp頁面調用它。如何在.jsp頁面中創建Web服務客戶端?
我想從jsp調用web服務..例如考慮我有非常簡單的web服務,它會顯示返回在我的index.jsp頁面中輸入的文本,點擊提交後,我將如何使用wsdl url在點擊提交時調用採用文本值的Web服務。
/vikram
我爲我的web服務創建了一個WSDL。我想知道如何從我的另一個Web應用程序的jsp頁面調用它。如何在.jsp頁面中創建Web服務客戶端?
我想從jsp調用web服務..例如考慮我有非常簡單的web服務,它會顯示返回在我的index.jsp頁面中輸入的文本,點擊提交後,我將如何使用wsdl url在點擊提交時調用採用文本值的Web服務。
/vikram
你是說從瀏覽器調用它,還是從JSP調用它來呈現HTML中發送到瀏覽器的東西?那些是完全不同的問題。
如果您正在討論從瀏覽器調用它,那麼最重要的一點就是將SOAP有效負載看作XML鍋爐板的一大塊。然後填寫區分SOAP請求所需的幾條信息,然後使用XMLHttpRequest將XML發送到服務器。最後,你從SOAP返回負載中獲取結果。
如果您只想從JSP中調用Web服務,最好的辦法是製作一個實用包裝類,它封裝了所有的配置以進行Web服務調用,然後使用JSP從該JSP調用該包裝標準的Java技術。
編輯 - 答題
所以,基本上你有一個文本框index.jsp頁面。您點擊提交,您希望將提交的文本發送到Web服務,並將結果顯示回瀏覽器。
簡單地說,除非使用XHLHttpRequest,否則您希望創建Web服務客戶端(使用JAX-WS或Axis或任何其他Java Web服務工具包)。
然後你會有一個Servlet或JSP從表單中取出POST請求,從請求中提取文本,然後它會調用Web服務。最後它會將結果呈現給客戶端(使用JSP或其他)。
無法直接將HTML POST到Web Service,協議不同。
所以
text text
| --> | | ----> |
| | Servlet |result | Web Service
| | | <---- |
Browser | | |
| | | forward |
| | | ------> | JSP
| |
| rendered result |
| <---------------------- |
謝謝威爾的一切,我想從JSP調用Web服務。例如考慮到我有非常簡單的web服務,它會顯示在點擊提交後我的index.jsp頁面中輸入的文本,我將如何使用wsdl url在點擊提交時調用採用文本值的Web服務。 – vikram 2010-04-10 00:51:24
我真的不建議編碼在JSP中的任何一種邏輯的,包括調用Web服務,這是不是一個好的做法。 JSP是一種視圖技術,應該用於演示,而不是業務邏輯。相反,您應該將表單提交給Servlet,檢索提交的參數,調用Web服務,然後在JSP視圖中打印結果。但讓我們結束括號。
由於您在評論中提到了WebLogic和Workshop,因此我假定您正在使用它們。WebLogic支持JAX-WS,因此我建議將它用於您的客戶端。
基本上,您首先需要生成「客戶端工件」(即您將用於調用Web服務的類)。一種方法是使用clientgen
Ant任務。有關詳細信息,請參閱Invoking a Web Service from a Stand-alone Client: Main Steps(應該可以從Workshop生成類,但我不能告訴你如何使用它)。
客戶端工件一旦生成,調用Web服務就簡單了。該代碼將類似於以下內容:
ComplexService test = new ComplexService(),
ComplexPortType port = test.getComplexPortTypePort();
BasicStruct in = new BasicStruct();
in.setIntValue(999);
in.setStringValue("Hello Struct");
BasicStruct result = port.echoComplexType(in);
System.out.println("echoComplexType called. Result: " + result.getIntValue() + ", " + result.getStringValue());
其XML和創想在我的IDE車間的WebLogic – vikram 2010-04-10 00:42:45