Servicios web

Estoy empezando con servicios web en java con tomcat, y bueno ... Todo se hacerlo más o menos con eclipse pero tengo una duda que se que es una "tonteria" pero soy un poco novato en java, me explico:
Implento mi servicio web: ejemplo.java con sus métodos: metodo1, metodo2, etc..
Una vez implementado el servicio ( ejemplo.java) tengo que activarlo, para que pueda ser invocado o utilizado por otra aplicación.
El método automático seria: renombrar el fichero ejemplo.java por ejemplo.jws y lo introduzco en el directorio correspondiente de tomcat: tomcat/webapps/axis/
En esa dirección se procesaran todos los archivos *. Jws por axis, de manera que la primera vez que se invoque el servicio web, sera compilado automáticamente.
Mi pregunta es: ¿Cómo puedo crear mi archivo jws ( ejemplo jws) programándolo en java, es decir, me dan la clase y sus métodos del servicio ... Suponiendo que no se como se implementan
seria algo como importar los métodos de la clase ejemplo.java...?:
import ejemplo.java
public class ejemplo2.java {
?
?
?
Ejemplo2.java seria el que llamaría *. Jws
Si me puedes ayudar te lo agradecería bastante.

1 Respuesta

Respuesta
1
La verdad que yo nunca he trabajado de momento con servicios web, pero tu pregunta es bastante básica y recordaba haberlo visto en algún manual. Así que he estado consultándolo y aquí te pongo un ejemplito que seguro que encontrarás útil y te ayudará a aclarar tu duda.
Por un lado estaría el servicio web, un simple hola mundo:
@WebService
public class Hello {
private String message = new String("Hello, ");
public void Hello() {}
@WebMethod
public String sayHello(String name) {
return message + name + "."; } }
Y el cliente, que es la parte que te interesa a ti:
public class HelloClient {
@WebServiceRef(wsdlLocation="http://localhost:8080/ helloservice/hello?wsdl")
static HelloService service;
public void doTest(String[] args) {
try {
System.out.println("Retrieving the port from the following service: " + service);
Hello port = service.getHelloPort();
String response = port.sayHello(name);
System.out.println(response);
Bueno, creo que el ejemplo es bastante sencillo como para que lo entiendas, en caso de que no sea así, escríbeme e intento aclararte las partes que no te queden claras.
PD: me mandaste la pregunta dos veces, cierra la otra
Hola, gracias por tu respuesta. Perdona por enviarte otra pregunta igual, a ver si la puedo quitar.
Ese código seria un servicio web y luego su cliente pero yo lo que necesito es crear un servicio a partir de otro, me explico...
Existe una clase en java : Servicio.java y sus métodos metodo1(..)... metod2, etc..
A mi no me dicen su implementación, pero tengo que hacer uso de esta clase para crear mi propio servicio por decirlo de alguna forma, creo que seria algo de heredar la clase con los métodos.
Si tengo esta clase:
public class Servicio {
metodo1(){
...
}
metodo2()
...
}
Y ahora quiero crear una clase (servicio_copia.java) que copia los métodos de la clase, seria algo como...
import Servicio.java;
public class Servicio_copia {
¿que tendria q poner aqui?
¿¿Servicio S=new Servicio();??
}
...
A partir de esta clase (Servicio_copia) poder usar los métodos con otras clases... reverenciando a Servicio_copia..
Servicio_copia seria mi archivo jws...Servicio_copia.jws ( El servicio web) y lo introduzco en el directorio correspondiente de tomcat: tomcat/webapps/axis/ que se complia automaticamente, si esto esta bien me saldria mi servicio web con los metodos de la clase.
Ahora un cliente puede hacer uso de los métodos que me ofrece Servicio_copia....
import.....
import .......Servicio_copia_jws.*;
public class Cliente {
 public static void main ( .......){
localhost....Servico_copiaWS.Servicio_CopiaServiceLocator locator;
localhost....Servico_copiaWS.Servicio_copia   Serv;
..try{
locator= new Servicio_copiaServiceLocator();
Serv=locator. getServicio_copiaWS();
System.out.print ( Serv.metodo1());
}
Resumiendo, necesito hacer uso de Servico_copia, sin utilizar Servicio, ¿cuál seria el código correcto?, el objeto ES es un objeto de la clase Servicio y quiero usar sus métodos por los clientes..., perdona por el tocho, se que es un prlbema con java no se servicios web es que estoy un "poco pegado" con java, agradezco mucho tu ayuda, un saludo y gracias.
A ver si te he entendido bien... ¿me estas diciendo que lo que quieres hacer es "bajarte" el código del servicio web y ejecutarlo en tu máquina de forma local?
No, simplemente que me piden que haga un servicio web a partir de una clase en java con sus métodos, un método rapido es renombrar el archivo a jws y ya axis lo compila, pero no me dejan... así que creo mi propia clase_copia... ¿entiendes?, saludos.
Como ya te comenté anteriormente yo nunca he trabajado con servicios web directamente, pero dudo que haya alguna forma de copiar un servicio. Lo único que se me ocurre es que te hagas tu servicio web que haga de puente entre el cliente y el servicio web real (el que tu no has creado). ¿Esto parece que lo estás haciendo para algún tipo de práctica de la universidad o algo así no?
Si es así, si tienes un enunciado o algo similar, cópiamelo porque quizás lo estés entendiendo mal.
Hola de nuevo, el enunciado seria algo así:
Implementar un servicio web a partir de la clase servicio.java que contiene los siguientes métodos:
metodo1(...)
metodo2(...)
Se explica lo que hace cada método con sus variables, lo que devuelve, etc... es decir ya viene hecho, no tengo que hacer ningún programa en java que implemente estos métodos, solo tengo que crear un servicio a partir de esta clase. Si me dieran el archivo servicio.java y su implemetacion solo haría falta copiarlo y renombrarlo, no se si me explico... A mi me dan la clase con los métodos y yo tengo que crear el servicio... de ahí que lo que creo que es crear un objeto de la clase servicio y ya poder usar sus métodos... creo que seria así pero no he encontrado nada parecido de ahí mi pregunta... de todas formas muchas gracias
Yo creo que lo que te están pidiendo realmente es que implementes la parte del cliente, es decir, que hagas algo útil con los métodos que te ofrece servicio.java o como mucho que hagas un servicio_extendido.java que utilice el servicio que ya te dan, otra cosa no se me ocurre.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas