Creacion de Un WebService en Java

Un servicio web (en inglés, Web service) es una pieza de software que utiliza un conjunto de protocolos y estándares que sirven para intercambiar datos entre programas. Distintas aplicaciones de software desarrolladas en lenguajes de programación diferentes, y ejecutadas sobre cualquier plataforma, pueden utilizar los servicios web para intercambiar datos en redes de ordenadores como Internet.

Los Web services representan la revolución informática de la nueva generación de aplicaciones que trabajan colaborativamente en las cuales el software esta distribuido en diferentes servidores; de esta manera se logra la creacion de grandes aplicaciones que pueden funcionar en una gran multitud de dispositivos, entre los que se encuentran los telefonos moviles, las tabletas y computadores personales, todos ellos interactuando con un servidor.

para comenzar el estudio de como se crean y utilizan los webservices, es necesario considerar tener claros algunos conceptos, como son:

WSDL

En ocasiones leído como como wisdel son las siglas de Web Services Description Language, un formato XML que se utiliza para describir servicios Web. WSDL describe la interfaz pública a los servicios Web. Está basado en XML y describe la forma de comunicación, es decir, los requisitos del protocolo y los formatos de los mensajes necesarios para interactuar con los servicios listados en su catálogo.

SOAP (Simple Object Access Protocol)

El protocolo estandar que se utiliza para enviar la información, es SOAP. Este define el formato del “envelope” que se intercambia entre cliente y servicio, así como las convenciones para representar invocaciones y respuestas Estos mensajes son transmitidos en formato XML, montado sobre HTTP.

Bien, esto es lo basico que hay que tener claro para comenzar a crear un web service, existe mucha teoria e informacion que se podria consultar de ser necesario, pero en este ejemplo solo hay que tener presente lo que hemos citado.

Para facilitar mas la comprension de lo que vamos a realizar diremos que (en terminos «coloquiales» de programacion) un webservice es aquel programa que esta comprendido por funciones o metodos que reciben parametros o valores, los procesan y arrojan una salida.

Ahora si, empezemos, debo aclarar que voy a utilizar netbeans 6.9.1 y el servidor apache tomcat que viene con dicha version de netbeans.

Primero, creamos un nuevo proyecto de netbeans, de tipo java web Application, tal y como se puede ver en la siguiente imagen:

Luego, definimos el nombre de nuestro proyecto:

Ahora presionamos el boton siguiente y escogemos el servidor Apache Tomcat 6.0.26 y presionamos el boton siguiente tal y como se observa en la siguiente imagen:

Volvemos a dar clic sobre el boton siguiente y en la ventana que aparece hacemos clic en terminar sin elegir ningun framework:

Listo ahora debe de aparecernos la siguinte ventana que corresponde a la pagina index del proyecto,

sin embargo dicha pagina no sera mostrada ya que no sera necesario visualizar ninguna informacion html, todo el proceso sera codificado en otro lugar.

Ahora hacemos clic derecho sobre nuestro Proyecto (Ejemplo_Servicio_web) y en la lista desplegable que aparece seleccionamos la opcion nuevo y en la sublista escogemos Paquete Java, tal y como se observa en la imagen:

y aqui esta nuestro paquete que almacenara el codigo java de nuestro webservice:

Ahora si, podemos crear el webservice como tal, para ello hacemos nuevamente clic derecho sobre el proyecto y en la lista desplegable que aparece, escogemos la opcion nuevo y en la sublista Web Service… tal y como podemos ver:

luego se abrirá una nueva ventana donde le colocaremos nombre a nuestro web service (proceso_wc) y seleccionamos el paquete que antes creamos:

y listo, ya esta creado nuestro web service (vacio), nos aparecerá la siguiente ventana:

el error que presenta o la linea subrayada es porque aun no se ha definido ninguna funcion o metodo dentro de la clase, todo web service debe tener por lo menos un metodo definido.

bueno, hasta este punto se han explicado los pasos para la creacion de un webservice en netbeans, pero aun no he mencionado para que quiero usar el webservice; Entonces les dire que nuestro webservice se usará para registrar usuarios en una base de datos, gestionar los datos de dichos usuarios almacenados con procesos de actualizacion, eliminacion y busquedas. Asi que surge la necesidad de usar el conector de MySql para java, dicho conector debe de ir en la carpeta Web-Inf del Proyecto, en mi caso yo estoy creando una subcarpeta llamada lib, tal y como se ve en la imagen:

Bien, teniendo alojado el conector de mysql en la carpeta correcta del proyecto se puede pasar a agregar el jar como referencia de la siguiente manera, hacer clic derecho sobre el proyecto y escojer la opcion propiedades:

despues, en la siguiente ventana que aparece se presiona el boton Add Jar/folder y en la nueva ventana que aparece buscamos la libreria en el directorio de proyectos de netbeans, tal y como vemos en la siguiente imagen:

Teniendo ubicada la libreria se procede a hacer clic sobre el boton abrir.

Bien, Ahora es necesario definir la base de datos y la tabla que vamos a usar para almacenar la informacion.

Abrimos nuestro administrador de bases de datos, en mi caso yo estoy usando php myadmin del appserv y creamos una base de datos llamada datos_almacenados_ws y luego dentro de ella una tabla llamada usuarios con los campos que se ven en la siguiente imagen:

un vistazo a nuestra tabla creada sera de la siguiente manera:

listo, ya esta definida nuestra tabla, ahora si podemos pasar directamente a codificar en Java nuestro Web Service.

Estando en nuestro proyecto en Netbeans, Importamos las siguientes librerias en el archivo llamado proceso_wc:


import javax.jws.WebService;

import java.io.*;

import java.sql.*;

import javax.jws.WebMethod;

import javax.swing.JOptionPane;

Luego dentro de la clase proceso_wc debemos declarar las siguientes variables:

 @WebService()
public class proceso_wc {

private int id;

private String cedula;

private String nombre;

private String apellido;

private String direccion;

private String sexo;
// Ojo, aqui van las funciones que usara el webservice para realizar los diferentes procesos con los datos
// Dichas funciones se explican a continuacion.
 }

Bien Ahora si definamos los metodos o funciones que constituiran nuestro Web Service, comencemos con insertarUsuario:


@WebMethod

public boolean insertarUsuario(String ce,String no,String ap, String dir, String se){

String conexionBD="jdbc:mysql://127.0.0.1/datos_almacenados_ws";

Connection conexion=null;

boolean funciono=false;

String con;

try{

// JOptionPane.showMessageDialog(null,"entro");

Class.forName("com.mysql.jdbc.Driver");//el driver de mysql

conexion=DriverManager.getConnection(conexionBD, "root","12345");//conexion a la base de datos

Statement s = conexion.createStatement();

// JOptionPane.showMessageDialog(null,no+" "+ap);

con= "INSERT INTO USUARIOS VALUES (NULL,'"+ce+"','"+no+"','" + ap +"','"+ dir +"','"+se+"')";

s.executeUpdate(con);

funciono=true;

}

catch(Exception e){

System.out.println("No se ha completado la petición...");

}

return funciono;

}

Ahora pasemos a desarrollar el procedimiento de busqueda, el cual recibe como parametro la cedula de un usuario y luego a travez de una consulta sql se determina si el usuario existe, dicha funcion se llama buscarUsuarioCedula y se muestra a continuacion:

@WebMethod

public boolean buscarUsuarioCedula(String ced){

String conexionBD="jdbc:mysql://127.0.0.1/datos_almacenados_ws";

Connection conexion=null;

boolean funciono=false;

String con;

ResultSet rs;

try{

// JOptionPane.showMessageDialog(null,"entro");

Class.forName("com.mysql.jdbc.Driver");//el driver de mysql

conexion=DriverManager.getConnection(conexionBD, "root","12345");//conexion a la base de datos

Statement s = conexion.createStatement();

// JOptionPane.showMessageDialog(null,no+" "+ap);

con="SELECT * FROM usuarios where cedula = '" + ced + "'" ;

rs = s.executeQuery (con); {

while (rs.next()) {

cedula=rs.getString("cedula");

nombre=rs.getString("nombre");

apellido=rs.getString("apellido");

direccion=rs.getString("direccion");

sexo=rs.getString("sexo");

funciono=true;

MostrarCedula();

MostrarNombre();

MostrarApellido();

MostrarDireccion();

MostrarSexo();

break;

//JOptionPane.showMessageDialog(null, "si");

}

}

}

catch(Exception e){

System.out.println("No se ha completado la petición...");

}

return funciono;

}

Como se Puede ver, la funcion buscarUsuarioCedula utliza varias subfunciones para permitir la visualizacion de los datos como son, MostrarCedula(), MostrarNombre(), MostrarApellido(), MostrarDireccion(), MostrarSexo().
A continuacion Definiremos cada funcion para que retorne el valor correspondiente tal y como se aprecia luego:

@WebMethod

public String MostrarNombre(){

String nomb;

nomb="";

nomb=nombre;

return nomb;

}

@WebMethod

public String MostrarApellido(){

String apell;

apell="";

apell=apellido;

return apell;

}

@WebMethod

public String MostrarCedula(){

String codi;

codi="";

codi=cedula;

return codi;

}

@WebMethod

public String MostrarDireccion(){

String dire;

dire="";

dire=direccion;

return dire;

}

@WebMethod

public String MostrarSexo(){

String se;

se="";

se=sexo;

return se;

}

Ahora Vamos a desarrollar el procedimiento para actualizar usuario, como se ha notado, cada funcion recibe parametros y retorna un valor para que otra aplicacion que interactue con el web service determine si el proceso se realizo de forma correcta.

@WebMethod

public boolean actualizarUsuario(String ced, String no,String ap, String dir, String se){

String conexionBD="jdbc:mysql://127.0.0.1/datos_almacenados_ws";

Connection conexion=null;

boolean funciono=false;

String con;

try{

// JOptionPane.showMessageDialog(null,"entro");

Class.forName("com.mysql.jdbc.Driver");//el driver de mysql

conexion=DriverManager.getConnection(conexionBD, "root","12345");//conexion a la base de datos

Statement s = conexion.createStatement();

// JOptionPane.showMessageDialog(null,no+" "+ap);

con= "update usuarios set nombre='"+no+"',apellido='"+ap+"',direccion='"+dir+"',sexo='"+se+"' where cedula='"+ced+"'";

s.executeUpdate(con);

funciono=true;

}

catch(Exception e){

System.out.println("No se ha completado la petición...");

}

return funciono;

}

Por Ultimo, solo hace falta definir el procedimiento para eliminar Usuario, que lo podemos ver a continuacion:

@WebMethod

public boolean eliminarUsuario(String ced){

String conexionBD="jdbc:mysql://127.0.0.1/datos_almacenados_ws";

Connection conexion=null;

boolean funciono=false;

String con;

try{

// JOptionPane.showMessageDialog(null,"entro");

Class.forName("com.mysql.jdbc.Driver");//el driver de mysql

conexion=DriverManager.getConnection(conexionBD, "root","12345");//conexion a la base de datos

Statement s = conexion.createStatement();

// JOptionPane.showMessageDialog(null,no+" "+ap);

con= "delete from usuarios where cedula='"+ced+"'";

s.executeUpdate(con);

funciono=true;

}

catch(Exception e){

System.out.println("No se ha completado la petición...");

}

return funciono;

}

Bien, Hasta aqui ya esta listo nuestro servicio web, llego la hora de probarlo, para ello debemos hacer lo siguiente:
Presionar clic derecho sobre el proyecto Ejemplo_servicio_web y en el menu desplegable que aparece seleccionamos la opcion Limpiar y construir, como se observa en la imagen:

Luego volvemos a presionar clic derecho sobre el proyecto y seleccionamos la opcion deploy para que el proyecto se despliegue, es decir se compile y se coloque en funcionamiento:

A continuacion nos dirigimos a la carpeta webservice del directorio de nuestro proyecto y presionamos clic derecho sobre el archivo proceso_wc y en la lista desplegable que aparece seleccionamos la opcion Test Web service como se ve en la imagen:

listo de esa manera se pone en marcha nuestro web service en el navegador como veremos a continuacion:

Alli podemos observar la WSDL de nuestro servicio web, esa direccion es la que necesitamos para poder interactuar desde otra aplicacion (realizada en cuelaquier lenguaje y dispositivo) con nuestro Web Service.
Espero y le sea util a quien lo necesite.

Descargar Aplicacion

51 comentarios en “Creacion de Un WebService en Java

  1. Vaya, no soy experto en java, pero creeme es lo mejor que se ha escrito y compartido en la WEB, habia buscado por mucho tiempo esta información en concreto, me alegro por ti, por que compartes tu conocimiento con quienes estamos en esta Lid de la programación, te felicito y nuevamente te agradezco por este ejemplo tan completo y sencillo.

  2. hola ingsistele, espero estes bien. Quiero felicitarte por el buen trabajo que has hecho, realmente me ha servido de ayuda.
    Por ahora tengo una duda, que al momento de testear el web service, en el netbeans tengo bloqueada la opcion Test Web service, pero pude probar el web service escribiendo la ruta en el navegador y funciono pero me quede con la duda de esa opcion en el netbeans.La version que tengo es la 7.1.
    Bueno me voy despidiendo, cdt y muchas gracias.

    • Hola Anthony, espero y estes bien, Con respecto a tu duda de que no te aparece habilitada la opcion «Test Web Service» te recomiendo que verifiques que hayas realizado todos los pasos correctamente para crear el servicio web, luego para ejecutarlo, debes de hacer clic derecho sobre tu proyecto y escoger en el menu desplegable que aparece la opcion Limpiar y construir, luego de haber realizado esto debes volver a hacer clic derecho sobre tu proyecto y escoger la opcion Deploy para que se compile y despliegue tu proyecto junto con los servicios web que tengas, por ultipo si testeas tu webservice con la opcion test web service, he probado en varios equipos el mismo proyecto con diferentes versiones de netbeans y la aplicacion corre bien, si aparece habilitada la opcion test webservice. Revisa con cuidado amigo tu proyecto o prueba con otra version de netbeans….

      espero y aclares tu duda.

      saludos…

      • Hola Ingsistele, disculpa por no responder a tiempo, he estado un poco ocupado con los trabajos de la universidad.
        Con respecto a mi duda, debo decirte que he realizado todos los pasos uno tras otro como lo mencionas y la opcion de testeo sigue bloqueada, por suerte pruebo desde el explorador escribiendo el link y si funciona :D, no se a que se deba quiza a la version mi Netbeans(probare con otra version, mas adelante), pero como te digo hago el testeo desde el explorador y todo sale bien.
        Tengo otra pregunta (si no es mucha molestia :D), cada vez que quiero testear mi web service, tengo que abrir el Netbeans y compilar y hacer click en la opcion Deploy , para poder probarlo(si no hago estos pasos no puedo probarlo), me gustaria saber si existe un camino mas rapido?, creo que cuando prendo mi laptop el Tomcat no esta levantado, quisiera saber como levantar el servicio del tomcat cuando prende mi computadora, para que siempre este listo el web service. Gracias por tu tiempo y muchas gracias.

      • Hola Anthony, debes tener el netbeans abierto para que el servidor apeche tomcat se despliegue ya que probablemente tienes instalado el mismo que viene con netbeans y este servidor solamente se activa al estar netbeans abierto; Si lo que quieres es que tu webservice se ejecute sin necesidad de abrir el netbeans lo que debes hacer es instalarte la distribucion binaria del apache tomcat y asi puedas montar tu proyecto en el servidor sin tener abierta la otra aplicacion (netbeans), el apache tomcat lo puedes descargar desde aqui: http://tomcat.apache.org/download-60.cgi ; (recuerda bajar la distribucion binaria) otra cosa a tener en cuenta es que cuando estes instalando el tomcat el proceso va a ser similar a la instalacion del AppServ (servidor web de php), debes de colocar el nombre de un usuario y una contraseña que no se te vaya a olvidar y verificar que el puerto de escucha sea el 8080 (es este por default), una vez instalado verificas que el servicio del Tomcat Manager este activo, si es asi entras abres una ventana del navegador web y escribes en la barra de busqueda la url: http://localhost:8080/ y veras una imagen como esta:

        Administracion del tomcat alli buscas el link
        Tomcat manager en la barra lateral izquierda, luego colocas tu usuario y contraseña en la nueva ventana que aparece y despues en la nueva pagina que aparece debes de importar el archivo war de tu proyecto que genera netbeans (para crear el archivo war en netbeans debes seleccionar la opcion limpiar y construir haciendo clic derecho sobre tu proyecto), el archivo war lo consigues en la carpeta dist de tu proyecto de netbeans, para importarlo mira la siguiente imagen:

        Importar war haces clic sobre el boton examinar, buscas tu war en la carpeta de tu proyecto de netbeans y por ultimo presionas el boton desplegar, y automaticamente queda tu proyecto listo en el servidor, ahora puedes acceder a el a traves de la direccion de tu servidor/ nombre del proyecto, ejemplo: http://localhost:8080/servicio_web

        Bueno, espero y esta explicacion te aclare algo tus dudas…!

      • Hola buenas noches saludos desde cartagena-colombia, me ocurre lo mismo quisiera saber como poder testear desde la URL

      • Hola alex, para que puedas testear tu proyecto desde la url tines que descargarte el servidor apache tomcat 6.0, si te das cuenta arriba en este mismo comentario dejo la direccion para que lo descargues, una ves decargado, subes el proyecto al servidor de tomcat, lo despliegas y listo, para acceder al webservice solo escribes en la barra de direcciones de tu navegador: http://localhost:8080/servicio_web.

        Saludos

  3. Hola de verdad que me siento muy agradecido con tu explicación; es sencilla, concreta y facil de entender, claro, aun no lo he hecho, pero desde ahora se ve la funcionalidad, de verdad muchas gracias….lo pondré en marcha esta tarde….

  4. buenas noches…. tengo un problema por que a la hora de darle la opcion deTEXT WEB SERVICE me aparece una alerta en la que me pide un usuario y un pasword de ( XDB )…. y la vdd no tengo ni idea de cual sera me puedes colaborar…!!!!

  5. @JONATHAN SI LO ESTAS HACIENDO CON PHPMYADMIN DEBES CAMBIARLE EL PASSWORD, ACCEDE A http://localhost/phpmyadmin.
    1. LE DAS EN PRIVILEGIOS (PRIVILEGES)
    2. SELECCIONAS EL USUARIO ROOT Y MIRAS EL PASSWORD QUE TENGA
    3. PUEDE QUE HAYA OTROS USUARIOS, ASI QUE MIRAS BIEN SI EN LA COLUMNA PASSWORD DICE «NO» O «YES»
    4. POR DEFECTO EL USUARIO ES «ROOT» SIN COMILLAS Y EN PASSWORD LO DEJAS EN BLANCO. PRUEBA Y CUENTAS.
    PD: NORMALMENTE PHPMYADMIN YA ES OBSOLETO, VIEJO Y ESTERIL, SE UTILIZA MAS EL MySQL Admin. SALUDOS

  6. Saludos!

    Excelente aporte amigo! Buenísimo para los que vamos empezando con los servicios web!… Solo una pregunta: Que debo configurar o que código necesito insertar para que la WSDL pueda ser utilizada desde otro equipo? Porque si yo «testeo» el servicio localmente, me funciona, pero si quiero accesar desde otro equipo, con la direccion IP de mi máquina, no es posible hacerlo… por ejemplo:
    http://172.31.69.60/ServicioWeb/proceso_wc
    Agradezco de antemano tu atención amigo!! Estamos en contacto!

    • Hola cesar, gracias por tu comentario, si deseas probar la wsdl desde otro equipo recuerda que debes colocar tu proyecto en el servidor apache tomcat y publicarlo, luego de eso si puedes accesar a la wsdl desde otro equipo a traves de tu direccion ip:puerto/nombredelproyecto, recuerda que si deseas acceder a tu equipo desde una red wan debes abrirle los puertos a tu modem y luego redireccionar a la ip privada del equipo, si estas en una red local (lan) solo basta con tener en cuenta la direccion privada del equipo, si no sabes como instalar o subir el proyecto al servidor de apache tomcat te recomiendo que mires el comentario numero 2 de este post.
      saludos!

      • Que tal compadre! Gracias por responder!… Fijate que hice todo, tal cual, y no pude abir el servicio desde la otra máquina… o es necesario configurar algo tambien en el otro equipo??? porque si yo doi click en esta direccion: http://172.31.69.60:8080/ServicioWeb/proceso_wc inmediatamente me abre la pagina con la liga WSDL, mas cuando envio por messenger la liga a otro equipo para que entre, no es posible hacerlo… en resumidas cuentas:
        1.- Se conecta localmente a la base de datos? OK!
        2.- Graba datos? OK!
        3.- Consulta datos??? OK!
        4.- Realiza satisfactoriamente DEPLOY en netbeans? OK!
        5.- Testea satisfactoriamente el Web Service localmente(http://172.31.69.60:8080/ServicioWeb/proceso_wc)?? OK!!
        6.- La direccion http://172.31.69.60:8080/ServicioWeb/proceso_wc puede ser accesada desde un equipo diferente, pero dentro de la misma lan? FAIL!!!

        Estoy pensando MUY SERIAMENTE en llevar la compu con Doña Rosa, allá en el Ejido puebla, para ver si le saca al chamuko que trae dentro, porque cada que paso por la oficina de mi jefe me echa la mirada de «haber cuando terminas!!» jajajja!! Estoy muy agradecido contigo amigo por tomarte la molestia de responder, y si despues de haber realizado esto, hay mas opciones, te agradecería me las hicieras saber, porque le debo mucho a la coppel y no quiero quedarme sin chamba, jajaj!! Saludos!!

      • mi amigo!!! ya pude!! jajaja!! era el mendigo Firewall de windows!!! Ahora… como puedo saber que a la aplicación que se ligará, obtendrá los datos correctos?? Es decir, allá… en la otra maquina, con su aplicación, introducirán el RFC del empleado y harán un barrido por toooooooooooooodas las bases de datos de las dependencias de gobierno… y donde este ese RFC, arrastrará toda la información del empleado. Apoyándome en tu proyecto, concretamente en la Búsqueda, pienso que funcionará, pero, como le hago para ver el resultado localmente? Es decir, consumir yo mismo el web service y ver el resultado? Gracias!

      • Hola, eso pensé que fuera el firewall, me da gusto que hayas solucionado tu problema, ahora con respecto a que deseas saber si los datos que estas trayendo son correctos, puedes elaborar una aplicación cliente en cualquier lenguaje, por ejemplo vb.net y agregas el servicio web como referencia, allí en la aplicación solo vas a hacer llamados a los métodos o funciones definidos en el servicio web, le pasas los datos que deseas usar como parámetro de búsqueda y como resultado obtendrás lo que te devuelve el servicio web, puedes probarlo localmente con la dirección ip que te representa en la red o con 127.0.0.1, por si no haz visto como consumir un webservice te recomiendo este tutorial: Consumir Web Service con Vb.Net
        Saludos!

  7. De verdad que esta bastante bien y gracias por la aportación, pero tengo una pregunta, yo uso como cliente a un JSP, y al momento de subirlo a mi servidor web que es mochahost, no corre el web service, se queda en unas rayitas, revisé las librerias que mi computadora tiene y son las mismas, y ahi si se ejecuta perfecto, necesito hacer algo en mi servidor?

    • Hola Angelica, recuerda que al subir el webservice a un servidor remoto debes hacer referencia al a dicho servicio a través de la ip que posee el servidor o mejor por el nombre de dominio para que se pueda ejecutar correctamente dicho servicio, por ejemplo si tu dominio es: http://www.angelicaabc123xz.com, ese es el nombre que deberías de colocar en lugar de la dirección ip en el programa para que haga referencia a esa dirección en concreto.
      Espero y soluciones tu problema, saludos!

  8. Gracias por la respuesta! Había dejado un poco este asunto, ya que cambiamos de servidor, estaré intentando, también estoy realizando la parte de cliente.

  9. Buen dia! Para regresar un arreglo (para ahi almacenar resultsets) en vez de regresar true, será necesario crear beans, estoy practicando en ello, ojala me puedas dar un idea 🙂

  10. Muy buena información pero me surgió una duda como es posible mandar un ResultSet para que la obtenga una tabla ? se necesita convertir a otro tipo de dato o alguna forma ? muchas gracias por la info 🙂

  11. QUE TAL ME PARECE UN MUY BUEN EJEMPLO.. Y ADEMAS MUY CLARO.. PERO TENGO UNA PREGUNTA..
    CUANDO QUIERO DEVOLVER UN ARRAY CON LOS DATOS DE LA CONSULTA.. COMO PUEDO HACERLO..
    COMO PARA DEVOLVER UNA CONSULTA CON VARIOS REGISTROS.. GRACIAS.

  12. Hola te quiero felicitar por excelente ejemplo y sencillo!! oye una pregunta la parte del cliente o el que consume este web service lo vas a publicar!!!?

    saludos

  13. Me marca el siguiente error

    Grave: Exception while loading the app : java.lang.IllegalStateException: ContainerBase.addChild: start: org.apache.catalina.LifecycleException: org.apache.catalina.LifecycleException: javax.servlet.ServletException: com.sun.xml.ws.transport.http.servlet.WSServletException: WSSERVLET11: Fallo al analizar el descriptor en tiempo de ejecución: java.lang.RuntimeException: MASM0015: la clase [ com.sun.xml.ws.tx.runtime.TxTubeFactory ] no implanta la interfaz [ com.sun.xml.ws.assembler.dev.TubeFactory ]

    …a que se puede deber?..muchas gracias!

  14. hola tengo una duda ya cree el web service pero como creo un web service client y como lo aplico esa parte no me queda clara, podrias ayudarme por fa

  15. lo felicito realmente es una buena tutoria creo que es suficientemente claro la creacion del web service pero seria bueno que dieras una tutoria de consumir un web service

  16. Hola! Es un muy buen tutorial, solo tengo unas dudas, y no se si pudieses ayudarme.
    Estoy trabajando sobre una clase ya existente, que en mi caso hace un procesamiento predictivo (Naive Bayes), pero solo tengo, por decir, una sola clase principal, pues en esa capturo los datos y a continuacion hago las operaciones matematicas. Las demas clases solo hacen referencia a la conexion con una base de datos en mysql. Mis preguntas son: Yo uso muchas conexiones a la base de datos, y en tu caso, te conectas cada vez, dependiendo de tus requerimientos (update, consulta, etc.). No se podria determinar la conexion dentro del @WebService para que lo haga al inicio, y no cada vez que lo necesite? Me recomendarias usar un solo @WebMethod para «invocar» los datos que ingreso?

  17. como puedo hacer para consumir el servicio en java con tomcat desde otra pc en red lan??????????? por favor!!!
    funciona en la misma maqina pero no me funciona en la red lan.
    al crear el cliente lan en la otra pc me sale un error q dice:
    Problem with downloading wsdl or schema file.
    check URL, proxy settings or whether the server is running

  18. Hola gracias por el tutorial que despues de 2 años intentando crear un webservice y consumirlo lo he logrado gracias a ti. Ahora tengo problemas para consumirlo de forma remota he montado una maquina virtual que usa la misma red y no me funciona el cliente no logra consumirlo, podrias aun en el 2017 ayudamer gracias.

  19. Hola Estimado ingsistele . eh realizado todo los pasos para crear el web service y no puedo testearlo.
    lo que hice fue descargar el apache toncat 9 e instalarlo en el disco C ya que al momento de instalar netbeans no lo instale y tube que agregar el sevidor de manera manual, pero al darle deploy me dice que el apache ya esta levantado, lo que hice fue apagar el apache y volverle a darle deploy pero ahora me sale acceso denegado, ya no se que hacer??? .. por ultimo solo limpio y construyo para que me de mi war y luego lo publico en el apache manualmente como indicaste en el comentario Nr° 2 de este post, pero al agregar la referencia no me genera la estrutura de arbol de tu ejemplo que tu tienes.

  20. Hola amigo, excelente tutorial, una pregunta, tengo un proyecto en netbeans de sensores de movimiento por lo cual almacena datos (no se escribe nada), entonces para que mi webservice solo visualice esa información se debe programar algo adicional o con tu explicación es suficiente

Replica a Alamo2001 Cancelar la respuesta