Foros del Web » Programación para mayores de 30 ;) » Java »

[SOLUCIONADO] RMI cliente WEB (JSP)

Estas en el tema de RMI cliente WEB (JSP) en el foro de Java en Foros del Web. hola a todos primero daros las gracias a todos los que estais aquí ayudando a todos los usuarios que tenemos problemas para hacer alguna cosa. ...
  #1 (permalink)  
Antiguo 02/03/2016, 12:03
 
Fecha de Ingreso: julio-2008
Mensajes: 155
Antigüedad: 16 años, 3 meses
Puntos: 1
Sonrisa RMI cliente WEB (JSP)

hola a todos primero daros las gracias a todos los que estais aquí ayudando a todos los usuarios que tenemos problemas para hacer alguna cosa.

Expongo mi situación.
Estoy haciendo una web muy sencilla basicamente para probar el RMI de java.
Estoy usando apache-tomcat-8.0.32 como servidor, eclipse mars1 como ide de desarroyo.

He creado dos proyectos uno que es el servidor y otro el cliente.

En el servidor tengo lo siguiente:
Una interface Icontrolador_joc y un main y un fichero jocPreguntes.policy.

interface Icontrolador
import java.rmi.RemoteException;
import java.util.ArrayList;

public interface IControlador_Joc {
public ArrayList<String> prepararPregunta(String pregunta) throws RemoteException ;
public boolean verificarRespota(String resposta) throws RemoteException ;
public String prova() throws RemoteException;

}


Muy sencilla y el main
public static void main(String[] args) {
IControlador_Joc con;
/// Main Server
try {

System.setProperty ("java.rmi.server.codebase", "file:/C:/Users/sacris/Desktop/TFG/Server_RMI/");

System.setProperty("java.security.policy", "C:/Users/sacris/Desktop/TFG/Server_RMI/jocPreguntes.policy");

if (System.getSecurityManager()==null)
{
System.setSecurityManager(new RMISecurityManager());
}


System.out.println("Esperando clients");
con = new Controlador_Joc();
Registry registrar = LocateRegistry.createRegistry(1989);
registrar.bind("controlador_joc", con);
} catch (Exception e) {
// TODO Auto-generated catch block
System.out.println(e.getMessage());
}
}


Más pobre imposible.

El fichero jocPreguntes.policy
grant {
permission java.security.AllPermission "", "";
};


Ahora a por el cliente
El cliente tiene una interface que es igual a la del servidor con el mismo nombre y todo
Icontrolador_joc, un fichero jocPreguntes.policy y un index.jsp


El fichero index.jsp
<%@page import="java.rmi.RMISecurityManager"%>
<%@ page import="Controlador.*"%>
<%@ page import="java.rmi.registry.Registry"%>
<%@ page import="java.rmi.registry.LocateRegistry"%>


<%
out.println(request.getRemoteAddr());
try{
System.setProperty ("java.rmi.server.codebase", "file:/C:/Users/sacris/Desktop/TFG/Client_RMI_Web/");
System.setProperty("java.security.policy", "C:/Users/sacris/Desktop/TFG/Client_RMI_Web/WebContent/jocPreguntes.policy");
Registry registry = LocateRegistry.getRegistry(1989);
IControlador_Joc myClass = (IControlador_Joc)registry.lookup("controlador_joc ");
//out.println(myClass.prova());
}catch(Exception ex){
ex.printStackTrace();
}
%>


Bien ejecuto el servidor y se queda ejecutando hasta aquí perfecto.
Luego ejecuto el cliente como web y tal index.jsp.
Al ejecutar me aparece este error

java.rmi.UnmarshalException: error unmarshalling return; nested exception is:
java.lang.ClassNotFoundException: IControlador_Joc (no security manager: RMI class loader disabled)


No he encotrado nada de como solucionarlo, se que es algo relacionado con la seguridad aquí vienen los policy pero nada de nada no me funciona.

Si alguien me pudiese ayudar estaría eternamente agradecido.

Muchas gracias
  #2 (permalink)  
Antiguo 02/03/2016, 15:58
Avatar de chuidiang
Colaborador
 
Fecha de Ingreso: octubre-2004
Mensajes: 3.774
Antigüedad: 20 años, 1 mes
Puntos: 454
Respuesta: RMI cliente WEB (JSP)

Hola:

La interfaz que te falta IControlador_Joc tiene que estar accesible en el war de tu cliente. Haz un pequeño jar con esa interfaz y mete ese jar dentro de tu WEB-INF/lib

Adicionalmente (no sé si el tema de rmi ha cambiado desde que lo ví en su día), a partir de la interfaz es necesario compilarla con "rmic", que viene con java y lo tendrás en el directorio bin de java. Eso generará una clase "stubs", que también tienes que meter dentro de ese jar en tu web, al igual que la interfaz.

Echa un ojo aquí a ver si te ayuda http://www.chuidiang.com/java/rmi/rmi.php

Se bueno.
__________________
Apuntes Java
Wiki de Programación
  #3 (permalink)  
Antiguo 04/03/2016, 10:13
 
Fecha de Ingreso: julio-2008
Mensajes: 155
Antigüedad: 16 años, 3 meses
Puntos: 1
Respuesta: RMI cliente WEB (JSP)

Hola he podido solucionar el problema,
El problema estaba en el controlador Controlador_Joc que tenia un método protected.

Gracias por vuestra ayuda.
Un saludo

Etiquetas: cliente, jsp, rmi, string
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 12:24.