Buscar
Social
Ofertas laborales ES

Foro sobre Java EE > webServiceContext devuelve Null

Si tienes ya la parte del servidor ya has hecho lo mas dificil.

Para enviar la cabecera desde el cliente, hay diversos modos. Puedes utilizar tambien un SOAPHandler que intercepte el mensaje saliente y le anada la cabecera o bien puedes hacer lo que ya haces, utilizar las librerias de Axis para generar el header.

/ add an <AuthenticationInfo> node with a <UserName> subnode
// to the SOAP Header
SOAPHeaderElement header = new SOAPHeaderElement("", "AuthenticationInfo");
SOAPElement node = header.addChildElement("Username");
node.addTextNode("diego");
SOAPElement node1 = header.addChildElement("Password");
node1.addTextNode("123");
((Stub) service).setHeader(header);

Yo no lo veo mal hacer esto. De todas formas la parte cliente no es tan importante y aqui deberias usar la opcion que te resulte mas sencilla.

Lo que me preocupa es que no puedas obtener el contexto del webservice. Es importante, ya que tarde o temprano vas a tener que usarlo para algo cuando tengas operaciones mas complejas.


Un saludo

septiembre 23, 2014 | Unregistered CommenterUnoPorAhi

Si el tema del contexto del webservice ya me esta volviendo loco.

Pregunta más técnica.

Si un cliente me pasa el http://xxxx:8080/xxx?wsdl, se puede obtener el contexto?

porque ahora ya me pasaron un wsdl(url), por lo que la creacion del webservice ya no lo tengo que hacer, pero igual quiero aprender a generar uno(que funcione jeje), ya lo voy a lograr, y yo lo que realice fue:

String wsdl_url = "http://xxxx:8080/xxx?wsdl";
URL wsdlLocation = new URL(wsdl_url);
QName serviceName = new QName("http://xxxxxxxx/", "xxxxxService");
Service service = Service.create(wsdlLocation, serviceName);

Hasta aca no tengo problemas.

Map<String,Object> context = ((BindingProvider)service).getRequestContext();

me da error, quizás tenga algún error de lógica.

Saludos,

septiembre 23, 2014 | Unregistered CommenterDiego

Despues de crear el Servicio, tienes que crear el puerto (o stub) para poder utilizar las operaciones.

TuClaseWS stub = service.getPort(TuClaseWS .class);

Dicho stub es el que te proporciona tambien el contexto:
Map<String,Object> context = ((BindingProvider)stub).getRequestContext();

Un saludo

septiembre 23, 2014 | Unregistered CommenterUnoPorAhi

Si no me equivoco, en tu caso:

TuClaseWS ==> Saludo

septiembre 23, 2014 | Unregistered CommenterUnoPorAhi

Hola,

Muchas alegrías , pude hacer funcionar el SOAPHandlers.

Gracias por todos los conceptos.

Saludos,

septiembre 26, 2014 | Unregistered CommenterDiego

Te lo has currado. Felicidades.


Un saludo

septiembre 26, 2014 | Unregistered CommenterUnoPorAhi

Hola gente ,

Genere un webservice, lo pase a un archivo war , pero cuando lo pongo en http://s43.eatj.com/ hosting free para java, no puedo ver el contenido del wsdl.

1 - Cuando se genero el webservice, se genero lo siguiente:

/ws_server/WebContent
/ws_server/WebContent/WEB-INF
/ws_server/WebContent/WEB-INF/ImplementacionService
/ws_server/WebContent/WEB-INF/ImplementacionService/com
/ws_server/WebContent/WEB-INF/ImplementacionService/com/implementacion
/ws_server/WebContent/WEB-INF/ImplementacionService/com/implementacion/deploy.wsdd
/ws_server/WebContent/WEB-INF/ImplementacionService/com/implementacion/deploy.wsdd.bak
/ws_server/WebContent/WEB-INF/ImplementacionService/com/implementacion/undeploy.wsdd
/ws_server/WebContent/WEB-INF/lib
/ws_server/WebContent/WEB-INF/lib/axis.jar
/ws_server/WebContent/WEB-INF/lib/commons-discovery-0.2.jar
/ws_server/WebContent/WEB-INF/lib/commons-logging.jar
/ws_server/WebContent/WEB-INF/lib/jaxrpc.jar
/ws_server/WebContent/WEB-INF/lib/saaj.jar
/ws_server/WebContent/WEB-INF/lib/wsdl4j.jar
/ws_server/WebContent/WEB-INF/server-config.wsdd
/ws_server/WebContent/WEB-INF/web.xml
/ws_server/WebContent/wsdl
/ws_server/WebContent/wsdl/Implementacion.wsdl

2 - Luego se genero el war

3 - se realizo deploy del archivo war en tomcat 7 - java 6.

4 - Se prueba, me indica error.
http://xxxxx.eatj.com/kcc_test/services/TransactionService?wsdl
Error:
HTTP Status 404 - Servlet AxisServlet is not available
type Status report
message Servlet AxisServlet is not available
description The requested resource (Servlet AxisServlet is not available) is not available.
Apache Tomcat/7.0.26

Que tengo que tener en cuenta para poder hacer un deploy de un webservice a cualquier server
tomcat por medio de la generación de un archivo WAR.

Saludos,

septiembre 30, 2014 | Unregistered CommenterDiego

Si lo estás metiendo en un tomcat necesitas también poner la aplicación de axis2 en tu tomcat.

1 - Bájate la WAR distribution del Axis2 y ponla en tu webapps para que se despliegue

http://axis.apache.org/axis2/java/core/download.cgi


2 - Una vez desplegado accede a:

http://localhost:8080/axis2/ (o la URL que tengas tu)

Y verás la consola de administracion de axis2, si pinchas en services verás que tienes uno de prueba que es Version. Si pinchas sobre el podrás ver el wsld y puedes ejecutar el servicio EP que expone.

Service EPR : http://localhost:8080/axis2/services/Version

Que te devolverá la versión de axis2 que tienes.

Eso es que te funciona todo bien.

3 - Ahora vamos con tu web service, copia tu WAR y ponlo en la siguiente ruta:

..../apache-tomcat-7.0.50\webapps\axis2\WEB-INF\services

Reinicia para que se despliegue y te tiene que aparecer en la página de administración de axi2 en la seccion de services y podrás acceder a él igual que has accedido a WS version de ejemplo.

Saludo.

octubre 1, 2014 | Registered Commenterantuansoft

Creo que lo que te he contado no vale para nada porque tu despliegas un WAR yo con Axis2 despliego un .arr, así que no creo que te ayude mucho.

octubre 2, 2014 | Registered Commenterantuansoft