24-07-2007 Raul Vicente
Este es otro de esos post que debería haber visto la luz hace mucho tiempo y por falta de tiempo se había quedado en el tintero. Hace tiempo me interese por ese gran desconocido del que en la facultad ni siquiera nos hablan: los WebServices y me pregunté, ¿ qué herramientas habrá en el mundo Open Source aparte de Spring Web Services para generar servicios Web sin morir en el intento ?
Al final descubrí que IBM había liberado parte de las herramientas que incorpora el WebSphere y éstas se había incorporado en el Eclipse. Así que me tire a la piscina a probarlas ,y he de decir, que las herramientas no están mal podrían ser más potentes, para cosas sencillas al menos a mí me sirven, si tuviera que incorporar esto en serio probablemente me informaría de hasta dónde llega Spring Web Services o sino pagaría la licencia de WebSphere ya que deja muchas más opciones a la hora de generar servicios Web y son más potentes hoy por hoy.
Voy a explicar paso a paso como realizar un WebService sencillito con Eclipse:
public String saludar(String nombre){
return “Hola: “+nombre;
}
}
Ya está tenemos nuestro servicio Web si se desea se puede generar un cliente para el Servicio Web, para ello, creamos un proyecto de Web Dinámico-> lo Seleccionamos->New->Others->Web Service Client->En el Wizzard Seleccionamos la carpeta EAR de nuestro servicio Web y c’est fini.
Si alguien descubre algo más, por favor, que me comunique sus impresiones que ahora no tengo tiempo, pero es un tema que me gusta mucho y del que nunca encuentro ejemplos prácticos.
1. mangel | agosto 5th, 2007 at 10:04 pm
He utilizado este metodo para un proyecto y si es verdad que es bastante facil de usar pero tiene sus “cositas”. Tienes razon, ejemplos los justos, por otra parte hay un par de bugs que hacen que al eclipse se le vaya la pinza. La api para encapsular la informacion es muy limitada en general en java, lo maximo a lo que puedes aspirar es a transferir arrays de tipos basicos, nada que ver con .net, con el que puedes hacer absolutamente de todo. A ver si me animo y te escribo algun comentario mas extenso, de todas maneras si tienes alguna duda ya tienes mi correo, que me obligas a ponerlo
2. Raúl Vicente | agosto 6th, 2007 at 7:24 am
Tranquilo por ahora, no tengo prisa pero si te animas a compartir tus conocimientos me vendría bien porque los servicios Web no se por qué siempre se habla de ellos pero a nivel teórico parece que el patrón “Show me the code” no va con ellos.
En fin, muchas gracias y si tengo que meterme a fondo con los Web Services no dudes que te enviaré un correo
3. Raúl Recacha | agosto 9th, 2007 at 11:28 pm
Gracias a este artículo he conseguido ejecutar por fin un servicio web, que llevaba días resistiéndome.
Por motivos lavorales tengo que trabajar con ellos, así que si te parece podríamos intercambiar la información que vayamos recopilando sobre este tema por e-mail.
Muchas gracias por la información mostrada.
4. Raúl Vicente | agosto 10th, 2007 at 7:30 am
Ahora lo tengo un poco parado, de todas maneras estamos montando un Wiki público para que la gente pueda aportar su conocimiento, de tal manera que nos podamos extender más que en los posts, ese creo que sería un buen sitio para colgar todo lo que vayamos descubriendo ya que la información acerca de los Web Services es muy poca.
5. Adrian | octubre 9th, 2007 at 6:32 pm
Hola. Gracias por la ayuda.
Todo iba bien hasta que cuando creé el servicio, obtuve este error:
Error updating Axis deploy.wsdd file, alguna idea?
6. Raúl Vicente | octubre 9th, 2007 at 8:54 pm
Buenas a veces al actualizar el Eclipse se le va la olla y da problemas, yo tuve problemas varias veces y al final después de actualizarlo un par de veces me funcionó, pensaba que habrían mejorado las tools, pero veo que siguen dando problemas. Sigue intentándolo no desfallezcas, si te persiste el error envíame un correo con tu código y le echo un vistazo en profundiad.
Un saludo
7. Alberto | octubre 29th, 2007 at 5:29 pm
Una pequeña crítica, con buena intención:
- Demasiado esquemático, se podría mejorar detallando un poco más los pasos e incluyendo alguna imagen.
- Explicas el cómo, pero no el por qué de los diferentes pasos o ficheros generados.
- Echo a faltar al final, una vez concluido el desarrollo, cual sería el proceso de instalación en servidor y cliente reales.
8. Raúl Vicente | octubre 29th, 2007 at 11:42 pm
La verdad es que no quería hacer un post interminable aunque ciertamente sería útil lo de las imágenes, si tengo tiempo ya lo añadiré. En cuanto a la última parte, no la he llegado a hacer y es la que me falta, esto es lo que pude sacar en claro en un momento que tuve libre. Si conoceís a alguién que sepa más sobre Web services, por favor, convencedlo para que lo plasme en nuestra wiki pública y así todos podamos disfrutar de ello.
La url:
http://www.programania.net/contextos/doku.php
Muchas gracias por contribuir.
9. Javier | diciembre 16th, 2007 at 5:44 pm
Hola, sabéis si es posible con Eclipse tener en el mismo proyecto al cliente y al servidor del servicio web? O tienen que estar obligatoriamente separados?
La idea sería tener una aplicación que trabajara al mismo tiempo como servidor (escuchando peticiones de un cliente en otra máquina) y como cliente (conéctandose con servidores en otras máquinas)
Gracias por adelantado, el tutorial me ha ayudado mucho para arrancar mi primer servicio web, y entender un poquito mejor este nuevo mundo para mí.
10. Raul Vicente | diciembre 16th, 2007 at 11:16 pm
Buenas Javier,
no he vuelto a experimentar con las herramientas de Eclipse, pero cuando yo escribí este artículo, era obligatorio tener el cliente y el servicio en 2 proyectos separados. Te recomiendo que le eches un vistazo a ver si por casualidad han mejorado las herramientas y se puede hacer, pero me suena que no.
Un saludo.
11. Luca | marzo 6th, 2008 at 4:58 pm
Buen articulo, he levantado el servicio web basico que dices y es practicamente todo en automatico con el eclipse, puedes crear el cliente tambien contemporaneamente a cuando creas el web service.
Lo unico, al probarlo me sale una frase del tipo:
Source
“There is nothing to be displayed in the form view. Please switch to the source view for the SOAP request and response. ”
es decir, no me enseña nada como respuesta del web service…
Despues de esto quería preguntarte si sabes algo de web services mas complicados que por ejemplo reciban ficheros entero (tengo que realizar uno de este tipo)
Muchas Gracias.
12. Raúl Vicente | marzo 6th, 2008 at 5:18 pm
Lo que aprendí de Web Services fue lo poco que ves, lo tuve que dejar porque entró mucho trabajo y no lo he vuelto a retomar porque no he tenido tiempo. Ya siento no poder ser más de ayuda. De todas maneras, si descubres algo interesante y deseas compartirlo con todos los que leen el blog lo puedes dejar en la wiki pública del blog.
http://www.programania.net/contextos/doku.php
Muchas gracias
13. Darkoo | marzo 18th, 2008 at 12:02 am
Hola
Estoy haciendo un Web Service con Eclipse y me he topado con esta página. ¿no sabrás cómo se puede obtener la IP del cliente que llama a una función?
Muchas Gracias!
14. Raul Vicente | marzo 18th, 2008 at 12:23 am
Buenas Darkoo,
sí claro se puede obtener a través de los métodos del objeto request, en concreto HttpServletRequest. Un ejemplo que he encontrado por ahí es este espero que te sea de utilidad, el método que buscas se llama getRemoteAddr.
Un ejemplo puede ser este:
1.
String ip = null; // IP del cliente
2.
String host = null; // Host del cliente
3.
4.
ip = request.getRemoteAddr();
5.
host = request.getRemoteHost();
Muchas gracias.
15. Darkoo | marzo 18th, 2008 at 4:02 pm
Muchas gracias por responder. El problema es cómo conseguir el objeto request del tipo HttpServletRequest. En los Servlets se se obtiene heredando la clase de httpServlet y luego implementando las funciones doGet y doPost, cosa que en un web service no se puede hacer.
¿alguna idea?
Muchas gracias una vez más. Por cierto, estoy salseando por tu web y tienes artículos interesantes.
16. Raul Vicente | marzo 19th, 2008 at 12:30 am
Darkoo he estado mirando por Internet y el problema que comentas es bastante común, he encontrado un post que a lo mejor te resulta útil, no he podido probar el código, está hecho con annotations, pero seguro que sabes adaptar el código si es que utilizas la JVM 1.4.
El código es el siguiente y se encuentra en la página de Sun:
http://forum.java.sun.com/thread.jspa?threadID=5235626&messageID=9965530
package myapp.services;
import javax.annotation.Resource;
import javax.jws.WebMethod;
import javax.jws.WebService;
import javax.xml.ws.WebServiceContext;
import javax.xml.ws.handler.MessageContext;
@WebService()
public class ClientIPWS {
@Resource
private WebServiceContext wsContext;
@WebMethod(operationName = “getIP”)
public String getIP() {
MessageContext mc = wsContext.getMessageContext();
String ipAddress = ((javax.servlet.http.HttpServletRequest)mc.get(MessageContext.SERVLET_REQUEST)).getRemoteAddr();
return ipAddress;
}
}
Espero que te sea de utilidad, si te funciona por favor, coméntamelo, ahora ando muy liado pero me interesa mucho ya que es un problema general.
Muchas gracias.
17. Darkoo | marzo 21st, 2008 at 1:15 am
Hola Raul
Gracias por tu dedicación. Al final lo he conseguido de otra manera más sencilla. Basta con importar:
import org.apache.axis.Constants;
import org.apache.axis.MessageContext;
y luego para conseguir la dirección:
MessageContext messageContext = MessageContext.getCurrentContext();
String ipAddress = messageContext.getStrProp(Constants.MC_REMOTE_ADDR);
Espero que te ayude en futuros trabajos
Saludos y Gracias!!
18. Sax | abril 10th, 2008 at 7:01 pm
Buen ida.
Quiero hacer un Web Services en Eclipse alguien me puede enviar un ejemplo haciendo una conexion a BD y ejecutar un SQL (Oracle de preferencia).
Agradeceria mucho me puedan ayudar.
19. Harto | abril 23rd, 2008 at 3:08 pm
He empezado hace poco con los Web Services y estoy bastante perdido. Trabajo con el Eclipse.
He hecho (intentado) un Web Service para sumar dos números, pero cuando lo pruebo me sale este mensaje:
“There is nothing to be displayed in the form view. Please switch to the source view for the SOAP request and response. ”
¿Significa que no lo he hecho bien?
Aparte, ahora me encuentro en la misma situación que Sax y no doy una a derechas. En mi caso la base de datos es my_sql. Si alguien pudiera hecharme una mano…
Muchas gracias de antemano.
20. Raul Vicente | abril 24th, 2008 at 9:25 am
Esto es todo lo que descubrí, cuando me puse con los Web Services para mí también son unos desconocidos y no he tenido tiempo para indagar más. Prueba a seguir este manual y podrás hacer un Web Service básico que saluda a la persona que lo invoca. Si sigue sin salirte puedo buscarte el código para que le eches un vistazo.
Gracias.
21. Harto | abril 24th, 2008 at 5:07 pm
Gracias por una respuesta tan rápida. Lo cierto es que he hecho un Servicio Web muy sencillo que recibe dos números, los suma, y devuelve el resultado.
Para conseguir conectarme a una base de datos sigo la misma lógica que antes, pero no consigo que me registre el driver (creo que el problema está ahí). El código, por si a alguien le interesa, es el siguiente (esto es lo que tengo dentro de BaseDatosSOAPImplementation.java):
import java.sql.*;
public class BaseDatosSOAPImpl implements org.example.www.BaseDatos.BaseDatos_PortType{
public org.example.www.BaseDatos.DatosResponse datos(org.example.www.BaseDatos.DatosRequest parameters) throws java.rmi.RemoteException {
Connection canal = null;
int Identifikatzailea = parameters.getID();
String Izena = parameters.getNombre();
String Abizena = parameters.getApellido();
try {
DriverManager.registerDriver(new com.mysql.jdbc.Driver());
canal = DriverManager.getConnection(“jdbc:mysql://localhost/prueba”,”root”,”root”);
Statement s = canal.createStatement();
s.executeQuery (“INSERT INTO Usuario VALUES (‘”+Identifikatzailea+”‘,’”+Izena+”‘,’”+Abizena+”‘)”);
s.close();
canal.close();
}
catch (Exception e) {
System.out.println(“Error en clase: “+e);
}
DatosResponse ayuda = new DatosResponse();
ayuda.setRespuesta(“OK”);
return (ayuda);
}
}
Si me pudieras buscar un código que funcione de verdad o alguna manera de hacer esto me harías un gran favor.
Un saludo.
22. Raul Vicente | abril 24th, 2008 at 9:42 pm
Buenas Harto,
yo no he indagado mucho pero a lo mejor deberías acceder a la base de datos a través de JNDI, vamos utilizando el pool del container, en vez de creando la conexión directamente. Échale un vistazo a lo mejor consigues avanzar. Yo siempre he accedido de este modo a la base de datos en aplicaciones WEB.
Un Saludo.
23. CHe-I-ROA-KAN | mayo 6th, 2008 at 12:37 pm
Hola,
Queria preguntar cual es el proceso que hace ecplipse para desplegar los WebService.
Haber me explico, estoy desarrollando un web service para una aplicacion bastante grande y que ya está hecha. El entorno es eclipse, y el server Oc4j. Compilo con el ant.
El problema es que me despliega una version diferente del wsdl, creo que generada a partir de la interface,que la que yo tengo en el package, y esta version me da un error de “No Deserializer found”. Ahora claro, intento cambiar el wsdl pero me lo vuelve a generar y tpc veo la solucion del problema, sin pasar por el wsdl.
Alguien me puede ayudar???
Gracias
24. mattlink | mayo 8th, 2008 at 7:08 pm
Bueno hola, bueno he estado investigando sobre los web service sin encontrar nada concreto, solamente e encontrado paginas que te explican de manera logica como se puede hacer un web service como cliente y como servidor, pero es algo muy complicado y enredoso, encontre esta pagina y me di cuenta que esta es la manera mas sencilla de hacer uno, pero al igual de sencilla, son tambien sus elementos, a mi me gustaria saber como puedo implementar un web service para cliente como para servidor, para que yo puedo hacer el servicio y tambien desde otra maquina pueda entrar como cliente, y por cierto no me sale el ejemplo que pusiste arriba se ve sencillo de hacer y facil pero el hecho de que le falten detalles como imagenes o algo asi hace que pierda el contexto, todo esto lo digo de manera de comentario constructivo, no quiero agredir a nadie y mucho menos al que hiso este tutorial, me parece bien que por lo menos alguien se interese en hacer cosas como estas, bueno si me pueden ayudar les estaria muy agradecido…
25. Juanjo | mayo 21st, 2008 at 12:04 pm
Buenas tengo un web service ya implementado en eclipse european, ya lo he probado y funciona correctamente en el entorno eclipse (o sea que le he dado a todo esto de “test with web server explorer” y todo eso, le meto un xmlRequest y me devuelve un xmlResponse), ahora viene el meollo del asunto, como puedo subir este webService a un servidor local como por ejemplo apache tomcat para que puedan acceder desde el navegador a mi web service?, muchas gracias de antemano y enhorabuena por la web, es muy util para todos nosotros.
26. Raul Vicente | mayo 26th, 2008 at 4:12 pm
Buenas juajo, por lo que recuerdo de esto puedes exportarlo como un archivo .war normal y corriente y desplegarlo a su vez en el Apache Tomcat. Eclipse te da a su vez la oportunidad de generar automáticamente una aplicación Web que llame a tu servicio Web, échale un vistazo al código si tienes problemas puedo mandarte un ejemplillo, lo voy a tener que buscar pero bueno.
Muchas gracias.
27. Juanjo | junio 5th, 2008 at 5:20 pm
Pues si fueras tan amable de mandarme un ejemplo (o por aqui o por mi emal)de generar automaticamente una aplicacion y como lo hago para llamrlo desde el navegador con el apache tomcat arrancado y probarlo,porque lo he exportado a War y nada de nada. Muchísimas gracias de antemano.
28. Juanjo | junio 6th, 2008 at 9:35 am
por cierto mi email es juanjosetrabajo@hotmail.com o si quieres me lo mandas al jquesada@grupodiasoft.com
Muchas gracias R.V.
29. Juan Meneses | junio 16th, 2008 at 10:49 pm
Raul es muy bueno tu articulo ademas sin imagenes y todo y se puede realizar perfectamente, pero quiero saver si tambien me puedes ayudar cun un web service que tengo montado en eclipse european para montarlo en Apache tomcat.
30. Antonio | junio 17th, 2008 at 5:50 pm
Tengo exactamente exactamente el mism problema que juanjo, no se que hacer, he investigado y he conseguido listar los wsdl que he implementado pero al pinchar sobre alguno de ellos me da el siguiente error:
****************************************
AXIS error
Sorry, something seems to have gone wrong… here are the details:
Fault – Bean attribute _value is of type java.lang.String, which is not a simple type
AxisFault
faultCode: {http://schemas.xmlsoap.org/soap/envelope/}Server.generalException
faultSubcode:
faultString: Bean attribute _value is of type java.lang.String, which is not a simple type
faultActor:
faultNode:
faultDetail:
{http://xml.apache.org/axis/}hostname:desarrollo1
******************************************
No se siesto es un error de cogigo o es de alguna libreria que hace falta copiarla en axis
31. Raúl Vicente | junio 19th, 2008 at 10:07 am
Buenas a todos,
visto el clamor popular he intentado rescatar el código con el que escribí este post, pero me lo dejé en el ordenador de mi anterior empresa cuando la abandoné y no me guardé una copia, así que lo he perdido. Así que no me queda otra que intentar repetir el ejemplo desde 0 como vosotros y enfrentarme a vustros propios problemas. Ahora estoy liando estudiando el First, no obstante en cuanto lo tenga prometo postear mis impresiones.
Siento no ser de más ayuda.
Gracias a todos.
32. Raúl Vicente | junio 19th, 2008 at 1:21 pm
Buenas a todos nuevamente,
visto que os he dejado de lado durante un tiempo he decidido darme prisa esta vez para ayudaros en todo lo que me sea posible. He vuelto a repetir el ejemplo y ya me funciona.
Primero comentaros que yo manejo el Tomcat desde el Eclipse, por tanto, cuando lo despliego en el servidor del Eclipse se despliega directamente en el Tomcat. En caso de que no lo hagáis generad sendos .war y desplegadlos a mano.
Segundo: Los pasos han cambiado un poco, ya no hace falta generar la carpeta EAR de marras,de hecho, el Eclipse ya no da esa opción, simplemente generad un proyecto Web estandar, no le añadais ni Axis, ni nada no hace falta para este ejemplo. Una vez terminado el asistente de creación del proyecto Web, añadimos la lógica de negocio, no ha cambiado es la misma que en el post.
Tercero: Clicamos una vez sobre la clase de la lógica de Negocio hasta que se ponga azul, clicamos el botón derecho del ratón, New->Project->Other->Web Service. Estas opciones son las que yo he seleccionado en el Wizzard, Bottom up Web Service, el método de la lógica de Negocio debe estar seleccionado,las dos barras (la de generación del cliente como la del servicio) deben estar a start. Seleccionamos los checboxes de Publish the service y monitor the service así como el de Overwite without warning y le damos a next.
Cuarto: Seleccionamos el método de negocio hasta que aparezca en azul ( sino se le va la olla al asistente) y le damos a next.
Quinto: En el siguiente cuadro de diálogo deselecionar todo lo que hable de UDDI.
Sexto: Una vez hecho esto veremos que tenemos el proyecto de Web Service y el del cliente. Para que funcione el cliente habrá que crear un JSP que llame a la clase Proxy en el que está nuestro método. Despelegamos ambos proyectos y ya está. Para probarlo arrancamos el servidor y ponemos en el navegador la dirección: http://localhost:8080/Nombre del proyecto cliente]/[nombre del JSP que cuelgue del directorio web]
Mi JSP es este:
Saludar a pepe:
SaludoServiceProxy service = new SaludoServiceProxy();
String saludo = service.saludar(“pepe”);
Luego imprimo saludo.
PD: La parte de probar el Webservice en el launcher no cambia así que por eso no la he comentado.
Si alguien insiste en que quiere el código que me lo haga saber. Espero que esto os sirva de algo.
Un saludo.
33. Alex | junio 24th, 2008 at 3:52 am
Hola,buscaba algo de WebService y entre en ese
blog.Gracias por tu ayuda a la gente.Si podes – pasame el código para poder probar.
Un saludo
34. Eve | julio 8th, 2008 at 9:46 pm
porfa si me pueden ayudar, necesito saber como aplicar seguridad a un web service desde eclipse, desde netbeans se que se puede hacer pero no tengo idea como se hace desde eclipse, si pueden darme una sugerencia se los agradeceria!!
35. javier | julio 16th, 2008 at 11:26 am
Hola, he seguido la guia que has indicado y hasta el paso: “Creamos el Servicio Web, para ello, se Selecciona la clase creada y se pulsa el botón derecho del ratón->Seleccionamos New ->Others->Web Service y seguimos el Wizzard.” todo ha ido bien.
En el paso previo de crear la clase, me he creado un .java en el package por defecto (lo comento por si es este el paso donde me he equivocado).
Y cuando intento crear el web service, el asistente dice: ” The service implementation selected is invalid.” y está cogiendo bien la clase.
¿Qué puede no estar gustándole al eclipse?
Gracias.
36. Ginna | julio 21st, 2008 at 5:17 pm
Uyyy shanfles, ami me sucedio al principio…pero en realidad si le das las ruta y lo ubicas tiene uqe salir valido….. podria tambien ser problemas de librerias o en el Path…creo yo….
A proposito tengo un problema al desplegar mi Web Service…sale algo como:
AXIS error
Sorry, something seems to have gone wrong… here are the details:
Fault – ; nested exception is:
java.io.FileNotFoundException: /WS/WebServicesG.jws
AxisFault
faultCode: {http://schemas.xmlsoap.org/soap/envelope/}Server.userException
faultSubcode:
faultString: java.io.FileNotFoundException: /WS/WebServicesG.jws
faultActor:
faultNode:
faultDetail:
{http://xml.apache.org/axis/}hostname:sniessa1
Que puede estar sucediendo? Gracias por su ayuda…
Saludos,
Ginna
37. agny | julio 30th, 2008 at 9:48 pm
Hola, necesito un enorme favor… Alguien puede ayudarme o darme pistas de como puedo crear una aplicacion en JAVA que me consuma un web service y que lo haga de manera masiva y en orden aleatorio, con la finalidad de hacer pruebas de estres y simular el proceso real. La aplicación debe leer el contenido de 4 archivos y hacer el consumo (ejecutar) el webservice de cada uno de los procesos , como cada linea del contenido de los archivos corresponde a una transacción la idea es que la aplicación vaya recorriendo la tabla de manera aleatoria (random).
38. Tony Marcano | agosto 1st, 2008 at 12:24 am
Hola a todos.. Muy buena info señores Felicidades… Tengo una preguntota..
Hay manera de generar el web service o el cliente del mismo con diferente web service runtime es decir no quiero ocupar Axis o Axis2…
Gracias amigos!!!
39. Jorge | agosto 12th, 2008 at 1:30 am
Amigos he estado leyendo sus comentarios .. y me parecen muy buenos .. tengo el siguiente problema o duda, he trabajado con ecplise creando un cliente que consuma el webservice pero cuando lo voy a publicar me da errores .. alguien me puede decir como funciona esto al momento de llevar a la maquina definitiva o si alguien tiene un ejemplo de cliente sencilloen jsp que consuma un webservices sin depender de eclipse se los agradeceria
40. Luis Artola | agosto 14th, 2008 at 9:40 pm
Enhorabuena Raul, tu post ha llegado a las cuarenta respuestas… saludos desde canarias!
41. Nelson | agosto 28th, 2008 at 1:45 pm
Hola, por fa necesito informacion sobre realizar un servicio web en java sobre gestion de consulta y respuestas… Si saben algo x fa escribanme…
42. Cesar | septiembre 26th, 2008 at 1:59 pm
Hoal todos, eh estado siguiendo este post, y al intentar hacer los pasos que aqui indican no logro obtener resultaos. Instale lo siguiente:
Eclipse Java EE
Tomcat 6.0.18
tomcatPluginV3.21
Al principio no tenia instalado el plugin pero solo conseguia conectarme fuera del Eclipse, es decir, si arrancaba el servidor que creava para el servicio este no mostraba ni la pagina de inicio “http://localhost:8080″, pero despues de instalar el plugin por fin pude conectarme desde adentro del Eclipse, pero ahora no se como ligar este plugin por que cuando intento ejecutar el servicio solo puedo conectarlo crando un servidor y este se conecta directo con Tomcat 6 pero la misma situacion, no logra mostrarme las paginas y me sale “Error 404″ y dice que el elmento no esta disponible o no se ecuentra…
lleve ya un par de semanas y aun no comprendo cual es el problema, si el plugin, el Tomcat, o el eclipse, revise la configuracion y ya le asige a todo el JDK por que anteriormente tenia asigano JRE… les agradeceria bastante su ayuda…..
43. Kuppuraj | noviembre 10th, 2008 at 10:11 am
How we can get the reference to WebServiceContext object while developing a websphere(v6.1) web service client.
44. Raúl Vicente | noviembre 11th, 2008 at 10:31 pm
Kuppuraj,
I think this article could help you.
http://www.ibm.com/developerworks/webservices/library/ws-javaclient/index.html
this blog is oriented to spanish speakers so If it is possible I ask you to write in spanish, but if you can’t it doesn’t mind I’ll translate your comments.
Thank you for your interest.
Traducción:
Creo que este articulo podría ayudarte:
http://www.ibm.com/developerworks/webservices/library/ws-javaclient/index.html
45. Jose Alberto | diciembre 10th, 2008 at 2:15 pm
Buenas Raul!!! Me gustaría comentarte dos cosas:
En primer lugar felicitarte porque tu post me está sirviendo de gran ayuda. Enhorabuena!
En segundo decirte que ya teniendo los dos poryectos, cliente y servidor, y arrancado éste, no consigo con el cliente acceder al servicio ofrecido y no se porque. El servidosr por ejemplo pongo localhost:8080/Prueba1/services/Saludo (mi ruta) y me lo muestra, pero en el cliente no consigo ver nada.
Concretamente, siguiendo tus instruccionesdel post 32: “Para probarlo arrancamos el servidor y ponemos en el navegador la dirección: http://localhost:8080/Nombre del proyecto cliente]/[nombre del JSP que cuelgue del directorio web]” no veo el mensaje de saludo que me debiera salir…
A ver si podrías aportarme alguna luz.. Muchas Gracias!!!
46. Raul | diciembre 12th, 2008 at 6:19 pm
Buenas Jose Alberto,
no me hago una idea como has realizado el cliente, pero me imagino que el problema es que lo has generado con Eclipse y Eclipse sólo genera la estructura. Tienes que hacer un JSP de Bienvenida y desde este llamar al servicio Web.
Te voy a mandar el mi cliente en los próximos días estate atento al correo.
Un saludo y muchas gracias.
47. ALG | diciembre 15th, 2008 at 6:25 am
webservices en eclipse, junio de 2007.
48. Jose Alberto | diciembre 15th, 2008 at 11:37 am
Hola Raúl!! Muchas gracias por contestar y hacerlo tan rápido. Al parecer fallaba en que en saludo obtenía el string pero después no le mostraba por pantalla con lo cual no veía el resultado
. Ahora se me plantea otro problema, teniendo alojados el cliente y el servidor va bien, pero y si quiesieras tener el servidor alojado en un ordenador y ejecutar el cliente desde otro equipo como habría que crear el proyecto(cliente en este caso).
PD: Otra cosa que también me fallaba es que el cliente lo tenia con extension .java y NO se puede hacer con si tomcat ya que tomcat SOLO interpreta JSP.
Un saludo y mucas gracias!!!
49. Raúl Vicente | diciembre 16th, 2008 at 8:54 pm
Buenas Jose Alberto,
si te fijas bien en el código que te genera el Eclipse tienes una clase llamada [NombreDelServicioWeb]ServiceLocator, la mías se llama SaludoServiceServiceLocator y su código es este:
public class SaludoServiceServiceLocator extends org.apache.axis.client.Service implements negocio.SaludoServiceService {
public SaludoServiceServiceLocator() {
}
public SaludoServiceServiceLocator(org.apache.axis.EngineConfiguration config) {
super(config);
}
public SaludoServiceServiceLocator(java.lang.String wsdlLoc, javax.xml.namespace.QName sName) throws javax.xml.rpc.ServiceException {
super(wsdlLoc, sName);
}
// Use to get a proxy class for SaludoService
private java.lang.String SaludoService_address = “http://localhost:8080/ProjectService/services/SaludoService”;
public java.lang.String getSaludoServiceAddress() {
return SaludoService_address;
}
…….
Cambia la dirección en donde tienes desplegado el Servicio Web y listo.
Muchas Gracias por colaborar.
50. Jesus | diciembre 29th, 2008 at 8:36 pm
Hola soy nuevo en esto, pero quiero hacer un web services en eclipse, ya tengo el apache-tecomat y el wtp.
El problema es q no lo puedo configuarar para usarlo en eclipse segun lo que he visto es que se configura asi Windows-prefenrences-server.
La opcion server no me sale y por lo tanto no puedo agregar los plun-in para crear mi web service
ME PODRIAN DECIR COMO HACERLO??
51. Raul | diciembre 30th, 2008 at 12:45 am
Buenas jesús,
yo te cuento como lo hice yo. En primer lugar actualice via Web, a través del menú Help, el eclipse. En segundo lugar, elige en la pestaña Window-show View->Others-Server. Verás que sale una pestaña donde antes no estaba, pulsa el botón derecho y elige Add New y sigue el menú, es tán simple como escoger la versión de Tomcat y la carpeta donde está instalado.
Espero que te sea de utilidad.
Un saludo y gracias por colaborar.
52. Aproximación a JavaFx&hellip | enero 5th, 2009 at 9:24 am
[...] a todos hace tiempo que no escribía, en parte, porque he estado ocupado intentando investigar sobre Web Services. Vista la demanda de mi post me pareció … indagar más, pero al parecer, están siendo duros de pelar y mi tiempo libre no alcanza para [...]
53. Fernando | enero 7th, 2009 at 2:48 pm
Hola, yo tengo el mismo problema de Jesús no me aparece la opción server para agregar el servidor tomcat del que se habla aquí intenté lo que dijo Raúl pero no me funciona ya lo actualice pero sigo sin poder agregar el server para ejecutar mi aplicación.
54. Jesus | enero 8th, 2009 at 12:48 am
Hola Raul ya intente lo que mencionaste y sigo sin poder crear mi web service sigo en las mismas, no sabes q mas se podra hacer???
gracias.
55. Jesus | enero 8th, 2009 at 1:09 am
Hola de nuevo yo, tengo otro problema tengo un web service creado en otra plataforma al consumirlo con eclipsME me dice o pide el “airtime” y no muestra mi web service, por eso quiero crear una con eclipse.
Gracias.
56. Raul | enero 8th, 2009 at 9:45 am
Lo que se me ocurre es que tengáis la posibilidad pero no estéis sacando la pestaña. En Windows->Show View->Others Escoged dentro de la carpeta Servers la única opción que hay y dadle a aceptar.
Luego cuando os aparezca como pestaña configurais el Tomcat. Voy a mirar a ver si hay algún foro de discusión en el que se trate vuestro problema y os pueda valer como ayuda, ya que a mí nunca me ha pasado.
En cuanto a lo de consumir el Web Service, mi conocimiento se restringe a este post he intentado ir más alla pero por ahora me está siendo frustrante, cuando consiga avances prometo postear la solución ya que veo que hay demanda.
Muchas Gracias a los dos por colaborar.
57. Jose Alberto | enero 8th, 2009 at 1:48 pm
Bueas a todos y feliz año!!!
No he podido contestar antes por las fecha. El caso es que antes de las vacaciones me funcionaba bien y ahora no lo consigo, aunque seguiré intentandolo. El problema que planteo es que teniendo el cliente en otro equipo distinto al servidor; tal y como aqui se explica, es necesario crear también un servidor en el equipo en el que creas el cliente pero que no se utiliza para nada ya que accedes al servicio del otro equipo(es un poco lioso pero creo haberme explicado bien).
Gracias!
58. Jesus | enero 9th, 2009 at 1:26 am
Hola ya puede resolver unos de mis problemas, que era el de configurar el eclipse para que me diera la opcion de crear una web service.
ATENCION FERNANDO
Lo uniko que hice fue actualizar el eclipse
Help-Software Updates-Find and Install
luego seleccionamos Search for new features to install y le das siguiente y selecionas el que dice Europa ya aceptas todo lo que te mande, se va a tardan un ratote pero por fin podras crear tu web services.
saludos.
59. Raul | enero 9th, 2009 at 10:26 am
Vale me alegro que hayáis solucionado vuestros problemas. Muchas gracias por colaborar a los sos si tenéis más dudas comentadlas y las atendré tan preto como pueda.
Un saludo.
60. Jesus | enero 9th, 2009 at 9:28 pm
buenas a todos
Tengo un problemita o problemota no se jejeje.
Lo que tengo es que quiero consumir un web service y me manda un mensaje dentro del emulador algo sobre “airtime”
Y en console me manda otro mensaje que dice
-”Warning: To avoid potential deadlock, operations that may block, such as
networking, should be performed in a different thread than the
commandAction() handler.”-
Mi codigo es este:
public class webservice extends MIDlet implements CommandListener {
private Display display;
String url = “http://192.1.1.31/WindowsMobile/Service.asmx”;
Command entrar = new Command (“Yes”, Command.SCREEN, 1);
Command salir = new Command (“Salir”, Command.EXIT, 1);
//Form form;
TextBox txt;
public webservice() {
display = Display.getDisplay(this);
txt = new TextBox (“Saludo”,”Quieres conectarte a la Web Service?”, 256, 0);
//form = new Form(“Web”);
}
protected void destroyApp(boolean unconditional) throws MIDletStateChangeException {
// TODO Auto-generated method stub
}
protected void pauseApp() {
// TODO Auto-generated method stub
}
protected void startApp() throws MIDletStateChangeException {
txt.addCommand(entrar);
txt.addCommand(salir);
txt.setCommandListener((CommandListener)this);
display.setCurrent(txt);
//form.setCommandListener(this);
//Display.getDisplay(this).setCurrent(form);
}
public void commandAction(Command c, Displayable s) {
if (c == entrar) {
try {
getViaStreamConnection(url);
} catch (IOException e) {
//Handle Exceptions any other way you like.
System.out.println(“IOException ” + e);
e.printStackTrace();
}
}
if (c == salir) {
System.out.println(“salir”); /** try {
destroyApp(false);
notifyDestroyed();
System.out.println(“salir”);
}*/
}
}
void getViaStreamConnection(String url) throws IOException {
StreamConnection streamConnection = null;
InputStream inputStream = null;
StringBuffer b = new StringBuffer();
TextBox textBox = null;
try {
streamConnection = (StreamConnection)Connector.open(url);
inputStream = streamConnection.openInputStream();
int ch;
while((ch = inputStream.read()) != -1) {
b.append((char) ch);
}
textBox = new TextBox(“Simple URL Fetch”, b.toString(), 1024, 0);
} finally {
if(inputStream != null) {
inputStream.close();
}
if(streamConnection != null) {
streamConnection.close();
}
}
display.setCurrent(textBox);
}
}
No se si el problema es de codigo o me falta una cosa que de seguro es muy pequeno.
ojala me puedan ayudar
saludos.
61. Jesus | enero 12th, 2009 at 10:18 pm
Hola a todos
El problema que tenia ya esta resuelto, pero ahora tengo otra duda.
Alguien sabe como me puedo conectar a mi base de datos en oracle, si alguien sabe de algo por favor mencionenlo sale saludos.
62. jesus | enero 20th, 2009 at 6:45 pm
Hola me podrian ayudar, alguien tendra algun codigo que consuma una web service que este en la red como las de google y que use ksoap o ksoap2 para j2me.
gracias.
63. Raul | enero 21st, 2009 at 9:54 pm
Buenas Jesús,
me temo que esta vez no puedo ayudarte no tengo ningún tipo de código con las caractrísticas que pides, no obstante, si alguien lo tiene por favor si no os importa reenviadmelo ya que mi batalla contra los Web Services es larga y cualquier cosa que me pueda ayudar la agradecería.
Un saludo y ya los siento Jesús suerte en tu búsqueda.
64. José David | enero 26th, 2009 at 2:01 pm
Buenas. No he leido todos los post (no tengo tanto tiempo) pero si contesto a uno que leí mas arriba,donde decia que los webservices java solo devolvian tipos básicos, no como .NET.
Eso es incorrecto. Java también permite crear Webservices del tipo que tu quieras (te creas una clase Bicicleta, y puedes crear un webservice q devuelta una Bicicleta). Para ello hay que publicar este tipo de dato, de manera similar a como se publica el webservices y luego al generar el proxy, nos generara una especie de “proxyBicicleta” con el que podemos trabajar con bicicletas. Si esta tuviera sub-clases complejas tb, no sería problema.
Siento no poder poner un ejemplo ahora mismo, pero a poco que saque tiempo colocaré algo.
Saludos!
65. Raul | enero 27th, 2009 at 12:53 pm
Buenas José Javier,
no me acuerdo de lo que puse algunos post los puse hace tiempo lo que quería decir es que es más sencillo, me imagino que si se podrá. El tema es que esto lo hice investigando por mi cuenta no obstante si publicas algo que me pueda ser de ayuda te lo agradeceré y prometo nombrarte en el siguient post que haga sobre Web Services.
Muchas Gracias.
66. Jorge Giraldo | febrero 3rd, 2009 at 12:25 am
Saludos,
Cuando creo el Servicio Web me sale el siguiente error:
“The service implementation selected is invalid”.
No se que hacer pues le estoy apuntanto al paquete y la clase asi: uno.saludo
uno es el paquete y saludo es la clase.
Quien me pueda ayudar le agradezco
GRacias
67. Javier | febrero 17th, 2009 at 1:36 pm
Hola que tal, muy bueno el articulo. Lo que estoy buscando hacer es lo siguiente. Yo tengo un .java corriendo en un tomcat. Esta funciona, de manera que yo ingreso a la direccion del servidor, llego un cuadro de texto y recibo por pantalla la respuesta a la solicitud. Luego de crear esto, me encontré con el inconveniente de que esta aplicación corria solamente si un cliente con un navegador se conectaba a la dir.ip del servidor y realizaba la consulta. Ahora quiero que el cliente que realice la consulta, sea un programa. En ese punto comencé a acercarme a la necesidad de un web service. Mi pregunta es la siguiente: El proyecto webservice que voy a crear, va a sustituir la aplicación que ya se encuentra corriendo en el servidor?
68. seba | abril 16th, 2009 at 11:57 pm
Gracias! Aporto con un video que encontré sobre como crear y probar un web service con wtp en eclipse. Corto y conciso para los que están empezando con esto. Saludos!
69. PeeWee | junio 1st, 2009 at 2:14 pm
Buenas!! No me sale el Server View por ningun lado!!! Le doy a Window/Preferences y no me sale nada de Server … he hecho lo que se ha propuesto por aqui pero no hay manera … que tengo que hacer? Mi Eclipse es el 3.2.2
Saludos y gracias
70. Raul | junio 4th, 2009 at 8:15 am
Cuando instales actualizaciones en Help->Software Updates, mira que hayas instalado las de Web. En la pestaña de Java EE, no en la de Java aparece por defecto.
Un saludo y gracias por participar.
71. Nacho | julio 16th, 2009 at 2:22 pm
Hola Raúl, muchas gracias por tus comentarios, me han servido de mucho.
No puedo acceder a una webservices remota, utilizo un código con el que puedo acceder a una web service de mi máquina y a la remota mediante el test web service de eclipse, pero mediante mi clase Java no puedo.
He visto que hay que hacer un JSP de bienvenida y cambiar la dirección del ServiceLocator, lo he hecho y me sigue sin funcionar.
El error que me da es el siguiente:
AxisFault
faultCode: {http://schemas.xmlsoap.org/soap/envelope/}Server.userException
faultSubcode:
faultString: java.lang.NullPointerException
faultActor:
faultNode:
faultDetail:
{http://xml.apache.org/axis/}hostname:Minimole
java.lang.NullPointerException
at org.apache.axis.message.SOAPFaultBuilder.createFault(SOAPFaultBuilder.java:222)
at org.apache.axis.message.SOAPFaultBuilder.endElement(SOAPFaultBuilder.java:129)
at org.apache.axis.encoding.DeserializationContext.endElement(DeserializationContext.java:1087)
at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.endElement(AbstractSAXParser.java:601)
at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanEndElement(XMLDocumentFragmentScannerImpl.java:1772)
at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl$FragmentContentDriver.next(XMLDocumentFragmentScannerImpl.java:2923)
at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl.next(XMLDocumentScannerImpl.java:645)
at com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl.next(XMLNSDocumentScannerImpl.java:140)
at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(XMLDocumentFragmentScannerImpl.java:508)
at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:807)
at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:737)
at com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(XMLParser.java:107)
at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(AbstractSAXParser.java:1205)
at com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl$JAXPSAXParser.parse(SAXParserImpl.java:522)
at javax.xml.parsers.SAXParser.parse(SAXParser.java:395)
at org.apache.axis.encoding.DeserializationContext.parse(DeserializationContext.java:227)
at org.apache.axis.SOAPPart.getAsSOAPEnvelope(SOAPPart.java:696)
at org.apache.axis.Message.getSOAPEnvelope(Message.java:435)
at org.apache.axis.handlers.soap.MustUnderstandChecker.invoke(MustUnderstandChecker.java:62)
at org.apache.axis.client.AxisClient.invoke(AxisClient.java:206)
at org.apache.axis.client.Call.invokeEngine(Call.java:2784)
at org.apache.axis.client.Call.invoke(Call.java:2767)
at org.apache.axis.client.Call.invoke(Call.java:2443)
at org.apache.axis.client.Call.invoke(Call.java:2366)
at org.apache.axis.client.Call.invoke(Call.java:1812)
at net.emovilia.demos.visitasGenWS.VisitasSOAPStub.executeDatosEncargo(VisitasSOAPStub.java:332)
at net.emovilia.demos.visitasGenWS.Prueba.main(Prueba.java:164)
Si me pudierais ayudar lo agradecería, estoy algo desesperado ya.
Muchas gracias.
72. Gorka | julio 22nd, 2009 at 12:44 pm
Hola a todos :
Tengo un Webservice en un servidor Tomcat . Ahora , en otra máquina quiero crear una clase en java con Eclipse en la que se utiliza ese Webservice . Según he leído es necesario referenciar el wsdl del Webservice en la clase . ¿ Alguien sabe cómo referenciar el wsdl desde la clase de Eclipse para poder ejecutar los WebServices que están en el servidor de otra máquina ?
Saludos
Gorka
73. milagros | diciembre 3rd, 2009 at 5:10 am
me podrian a ayudar a crear un web service(con cualquier metodo) en visual basic. net y luego este llamarlo desde java o php..porfavor ayuda
74. jorge | febrero 6th, 2010 at 8:49 pm
estimados
como adaptar ese codigo para conseguir la IP address del cliente que consulta el WS desde JVM 1.4. ??
les agradecere sus comentarios
saludosc