2010-04-10 69 views
9

我爲我的web服務創建了一個WSDL。我想知道如何從我的另一個Web應用程序的jsp頁面調用它。如何在.jsp頁面中創建Web服務客戶端?

我想從jsp調用web服務..例如考慮我有非常簡單的web服務,它會顯示返回在我的index.jsp頁面中輸入的文本,點擊提交後,我將如何使用wsdl url在點擊提交時調用採用文本值的Web服務。

/vikram

回答

0

數據如何到達java servlet頁面?

JSON,XML?

如果JSON,我怎麼建議您使用jQuery的,該.get()方法是太棒了!這就是我在ASP頁面中使用的方式...

+0

其XML和創想在我的IDE車間的WebLogic – vikram 2010-04-10 00:42:45

2

你是說從瀏覽器調用它,還是從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  | 
     | <---------------------- | 
+0

謝謝威爾的一切,我想從JSP調用Web服務。例如考慮到我有非常簡單的web服務,它會顯示在點擊提交後我的index.jsp頁面中輸入的文本,我將如何使用wsdl url在點擊提交時調用採用文本值的Web服務。 – vikram 2010-04-10 00:51:24

5

我真的不建議編碼在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());