2010-04-10 3 views
9

Ich habe eine WSDL für meinen Webservice erstellt. Ich würde gerne wissen, wie ich es von einer JSP-Seite aus meiner anderen Webanwendung aufrufen kann.Wie erstellt man einen Web-Service-Client auf einer .jsp-Seite?

Ich möchte den Webservice von der JSP aufrufen .. zum Beispiel unter Berücksichtigung ich habe sehr einfache Web-Service, die den Text in meiner index.jsp Seite nach dem Klicken auf submit angezeigt würde, wie würde ich die WSDL-URL verwenden Um den Web-Service aufzurufen, wird der Textwert beim Klicken auf "Senden" übernommen.

/vikram

Antwort

0

Wie die Daten, die die Java-Servlet-Seite erreicht?

JSON, XML?

wenn JSON, ich, wie empfohlen, jQuery, die .get() Methode verwenden, ist fantastisch! Und das ist die Art, wie ich in meinem ASP-Seiten verwenden ...

+0

seine xml und möchte alles auf meinem IDE Workshop weblogic – vikram

2

Sprechen Sie über sie aus dem Browser aufrufen, oder von der JSP Aufruf etwas im HTML an den Browser geschickt zu machen? Das sind ganz andere Probleme.

Wenn Sie sprechen es aus einem Browser aufrufen, die heiße Spitze ist die SOAP-Nutzlast als ein großer Klecks XML Kesselplatte zu behandeln. Füllen Sie dann die wenigen Informationen aus, die zur Unterscheidung der SOAP-Anforderung erforderlich sind, und verwenden Sie dann eine XMLHttpRequest-Anweisung, um die XML an den Server zu senden. Schließlich ziehen Sie dann das Ergebnis aus der SOAP-Return-Payload.

Wenn Sie nur den Webdienst von der JSP aus aufrufen möchten, besteht die beste Option darin, eine Dienstprogrammwrapperklasse zu erstellen, die alle Installationen für den Webdienstaufruf bereitstellt und dann diesen Wrapper über die JSP aufruft Standard-Java-Technik.

bearbeiten - die Beantwortung der Frage

Also, im Grunde haben Sie eine index.jsp Seite mit einem Textfeld. Sie drücken submit, Sie möchten, dass der Text dieser Submission an einen Webdienst gesendet und das Ergebnis dem Browser angezeigt wird.

einfach, abgesehen von dem XHLHttpRequest verwenden, mögen Sie einen Web-Service-Client (mit JAX-WS oder Axis, oder eine der anderen Java-Web-Service-Tool-Kits) erstellen.

Dann würden Sie ein Servlet oder JSP nehmen die die POST-Anforderung aus dem Formular, um den Text aus der Anforderung extrahieren, und dann würde es den Web-Service aufrufen. Schließlich würde das Ergebnis dem Client zurückgegeben (mit einer JSP oder was auch immer).

Sie keine HTML-POST kann direkt an einen Web-Service, sind die Protokolle unterschiedlich.

So

  text   text 
     | --> |   | ----> |    
     |  | Servlet |result | Web Service 
     |  |   | <---- | 
Browser |  |   | 
     |  |   | forward | 
     |  |   | ------> | JSP 
     |       | 
     | rendered result  | 
     | <---------------------- | 
+0

Dank Will schaffen, würde Ich mag den Web-Service aus dem jsp .. zum Beispiel anrufen unter Berücksichtigung ich habe sehr einfacher Web-Service, der den Text, der auf meiner index.jsp-Seite nach dem Klicken auf submit eingegeben wurde, wieder anzeigen würde, wie würde ich die wsdl-URL verwenden, um den Web-Service aufzurufen und den Textwert zu übernehmen, wenn auf "Senden" geklickt wurde. – vikram

5

ich nicht empfehlen Codierung jede Art von Logik wirklich in einer JSP, einen Web-Service einschließlich der Aufforderung, dies nicht eine gute Praxis ist. JSP ist eine Ansichtstechnologie und sollte für die Präsentation, nicht für Geschäftslogik verwendet werden. Stattdessen sollten Sie das Formular an ein Servlet senden, die übergebenen Parameter abrufen, den Web-Service aufrufen und dann die Ergebnisse in einer JSP-Ansicht drucken. Aber schließen wir die Klammern.

Da Sie WebLogic und Werkstatt in einem Kommentar erwähnt, werde ich annehmen, dass Sie sie :) WebLogic verwenden unterstützt JAX-WS, so dass es für Ihre Kunden Ich schlage vor, mit.

Grundsätzlich müssen Sie zuerst die "Client-Artefakte" generieren (d. H. Die Klassen, die Sie zum Aufrufen des Web-Service verwenden). Eine Möglichkeit, dies zu tun, besteht darin, die Ant-Task clientgen zu verwenden. Details finden Sie unter Invoking a Web Service from a Stand-alone Client: Main Steps (es sollte möglich sein, die Klassen von Workshop zu erzeugen, aber ich kann Ihnen nicht sagen, wie, ich benutze es nicht).

Sobald die Client-Artefakte generiert wurden, ist das Anrufen des Web-Service ein Kinderspiel. Der Code wird wie folgt aus:

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());