Ver Mensaje Individual
  #1 (permalink)  
Antiguo 02/03/2016, 12:03
sacris1
 
Fecha de Ingreso: julio-2008
Mensajes: 155
Antigüedad: 16 años, 5 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