Java - Problema web services en java

 
Vista:

Problema web services en java

Publicado por Sergio (2 intervenciones) el 21/03/2007 16:51:54
Buenas!
Estoy haciendo un proyecto en la universidad y para empezar a probarlo me han dicho que cree un servidor web en python y luego intente conectar a el con java; el problema es que no me conecta y no entiendo la razón. Voy a pegar el código de los dos programas, son muy simples pero me falla al conectar que es lo básico:

SERVIDOR WEB en PYTHON:----->server.py

print'Servidor en funcionamiento'
def multiplica(x,y):

return x*y
def divide(x,y):
return x/y
from SimpleXMLRPCServer import SimpleXMLRPCServer
s=SimpleXMLRPCServer(('localhost',7771))
s.register_function(multiplica)
s.register_function(divide)
s.serve_forever()

CLIENTE EN JAVA------->MiServicioweb.java

import org.apache.axis.client.Call;
import org.apache.axis.client.Service;
import org.apache.axis.encoding.XMLType;
import javax.xml.rpc.ParameterMode;
import java.net.*;
import java.io.*;
import java.lang.String;
import java.net.MalformedURLException;
import javax.net.*;
import javax.xml.rpc.ServiceException;
import org.apache.axis.utils.Options;

public class MiServicioWeb
{
public static void main(String [] args) throws Exception {

String endpoint = "http://localhost:7771/server.py";--------->aquí debe estar el problema
String method = "multiplica";
Service service = new Service();
Call call = (Call) service.createCall();
call.setTargetEndpointAddress( new java.net.URL(endpoint) );
call.setOperationName( method );
Integer i1 = new Integer(2);
Integer i2 = new Integer(5);
call.addParameter( "op1", XMLType.XSD_INT, ParameterMode.IN );
call.addParameter( "op2", XMLType.XSD_INT, ParameterMode.IN );
call.setReturnType( XMLType.XSD_INT );/
Integer res = (Integer) call.invoke( new Object [] {i1,i2});//invocacion
System.out.println("\nLa suma es " + res);

}

Es tan simple como una multiplicación pero no se si me falta algún import a alguna libreria o algo, todo compila perfectamente y el error está en el cliente, ya que el servidor probandolo con un cliente python funciona perfectamente.
Los dos código fuentes tanto el servidor como en el cliente están en la misma carpeta pero no lo detecta....
Espero que alguien sepa como conectar un cliente java con un servidor python,
un saludo y gracias
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Problema web services en java

Publicado por angel (537 intervenciones) el 21/03/2007 17:27:51
Yo en el endpoint solo poner:

String endpoint=https://ip./caperta1/services/nombrefuncion

es decir...la ruta donde almaceno el webservice y el nombre de la funcion que invoco.

y luego suelo poner

call.setTargetEndpointAddress( new java.net.URL(endpoint) );
call.setOperationName(new QName("http://soapinterop.org/", "nombreFuncion") );

Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Problema web services en java

Publicado por Sergio (2 intervenciones) el 21/03/2007 18:10:03
Na así tampoco tira... me salta una excepción AxisFault y el codigo de error es el 404.
Debe ser algún problema al localizar python porque probando servidor en java y cliente en java también funciona bien poniendo nombrewebservice.jws pero en python no tengo ni idea como va...
Gracias por tu ayuda
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Problema web services en java

Publicado por angel (537 intervenciones) el 22/03/2007 09:29:10
El error 404 creo k es el error http que se muestra cuando no se encuentra una dirección, asi que supongo que l problema estara ai.....o bien que estes poniendo mal la ruta donde esta el webservice o que la clase java no pueda acceder a esa direccion.

Este es un trozo de codigo de un ejemplo que tengo echo y funciona.

String endpoint = "http://10.1.40.46:8990/WsSample1-Project-context-root/MyWebService2";
//Como ves...es la ip/el proyecto donde esta/NombreDelWebsercice

String opt = "mostrarDatos"; //Metodo al que llamo

Service service = new Service();
Call call = (Call) service.createCall();

call.setTargetEndpointAddress( new java.net.URL(endpoint) );
call.setOperationName(new QName("http://soapinterop.org/", opt) );

String paramIn = "Datos a enviar"


call.addParameter("datos", org.apache.axis.Constants.XSD_STRING,javax.xml.rpc.ParameterMode.IN);
call.setReturnType(org.apache.axis.Constants.XSD_STRING);


String ret = (String) call.invoke(new Object[]{paramIn} );

Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar