2010-04-10 14 views
9

He creado un WSDL para mi servicio web. Me gustaría saber cómo llamarlo desde una página jsp desde mi otra aplicación web.¿Cómo crear un cliente de servicio web en una página .jsp?

Me gustaría llamar al servicio web desde el jsp .. Por ejemplo, teniendo en cuenta que tengo un servicio web muy simple que mostraría el texto ingresado en mi página index.jsp después de hacer clic en enviar, ¿cómo usaría la url wsdl? llamar al servicio web tomando el valor del texto cuando se hace clic en enviar.

/Vikram

Respuesta

0

cómo los datos está llegando a la página de servlets de Java?

JSON, XML?

si JSON, que forma recomiendo que utilice jQuery, el método .get() es fantástico! Y esa es la forma en que uso en mis páginas ASP ...

+0

su xml y le gustaría crear todo en mi IDE taller de WebLogic – vikram

2

¿Estás hablando de llamarlo desde el navegador o llamarlo desde el JSP para presentar algo en el código HTML enviado al navegador? Esos son problemas completamente diferentes.

Si está hablando de llamarlo desde un navegador, el consejo principal es tratar la carga útil de SOAP como una gran masa de placa de caldera XML. A continuación, rellene los pocos datos necesarios para distinguir la solicitud SOAP y luego utilice XMLHttpRequest para enviar el XML al servidor. Finalmente, extrae el resultado de la carga útil de retorno SOAP.

Si desea simplemente llamar al servicio web desde el JSP, la mejor opción es crear una clase contenedora de servicios que cubra todas las tuberías para realizar la llamada al servicio web y luego invocar ese contenedor desde el JSP usando técnica estándar de Java.

Editar - responder a la pregunta

Así que, básicamente, tiene una página index.jsp con un cuadro de texto. Pulsará Enviar, desea que el texto de ese envío se envíe a un servicio web y el resultado se muestre nuevamente en el navegador.

Simplemente, salvo que utilice XHLHttpRequest, desea crear un cliente de servicio web (utilizando JAX-WS o Axis o cualquiera de los otros kits de herramientas de servicio web de Java).

Luego, tendría un Servlet o JSP que tomara la solicitud POST del formulario, extrajera el texto de la solicitud y luego llamaría al servicio web. Finalmente devolvería el resultado al cliente (usando un JSP o lo que sea).

No se puede POSTAR un HTML directamente a un servicio web, los protocolos son diferentes.

Así

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

Gracias Will, me gustaría llamar al servicio web desde el JSP .. por ejemplo, teniendo en cuenta que tengo un servicio web muy simple que mostraría el texto ingresado en mi página index.jsp luego de hacer clic en enviar, ¿cómo usaría la url wsdl para llamar al servicio web tomando el valor del texto cuando haga clic en enviar? – vikram

5

Realmente no recomiendan codificación de cualquier tipo de lógica en un JSP, incluyendo llamar a un servicio web, esto no es una buena práctica. JSP es una tecnología de visualización y debe utilizarse para la presentación, no para la lógica comercial. En su lugar, debe enviar el formulario a un servlet, recuperar los parámetros enviados, llamar al servicio web y luego imprimir los resultados en una vista JSP. Pero vamos a cerrar el paréntesis.

Como mencionó WebLogic y Workshop en un comentario, asumiré que los está usando :) WebLogic admite JAX-WS, por lo que sugiero que se lo use a su cliente.

Básicamente, primero debe generar los "artefactos del cliente" (es decir, las clases que usará para invocar el servicio web). Una forma de hacerlo es usar la tarea Ant clientgen. Consulte Invoking a Web Service from a Stand-alone Client: Main Steps para obtener detalles (debe ser posible generar las clases desde el taller, pero no puedo decirle cómo, no lo uso).

Una vez generados los artefactos del cliente, llamar al servicio web es pan comido. El código será similar a la siguiente:

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