RMI Cómo agregar libs (y otorgarles permisos de socket)

Para un proyecto escolar, tengo que crear un sistema distribuido a partir de una aplicación independiente. Estamos usando RMI para la comunicación, pero nos encontramos con algunos problemas.

El servidor que creé comienza bien, pero el cliente (que usa algunas bibliotecas swing, etc.) me estaba dando una excepción classNotFound. Para solucionar esto, agregué las bibliotecas que mi proyecto usa a "C: \ Archivos de programa \ Java \ jre6 \ lib \ ext". Prefiero colocar libs en el cliente (como hice con las compilaciones).

¿Alguien puede decirme si esto es posible y si es así, cómo?

Los problemas no terminan aquí, si inicio mi cliente ahora obtengo una java.security.AccessControlException. Yo uso un archivo de política, se ve así:

grant
{  permission java.net.SocketPermission 
    "*:1024-65535", "connect,accept";
};

También intenté agregar todas las bibliotecas, pero esto tampoco ayudó:

grant codebase "file:${java.home}/../lib/ext/appframework-1.0.3.jar" {
   permission java.security.AllPermission;
};
grant codebase "file:${java.home}/../lib/ext/beansbinding-1.2.1.jar" {
   permission java.security.AllPermission;
};
grant codebase "file:${java.home}/../lib/ext/jcalendar-1.3.3.jar" {
   permission java.security.AllPermission;
};
grant codebase "file:${java.home}/../lib/ext/looks-2.0.1.jar" {
   permission java.security.AllPermission;
};
grant codebase "file:${java.home}/../lib/ext/swing-worker-1.1.jar" {
   permission java.security.AllPermission;
};
grant codebase "file:${java.home}/../lib/ext/swingx-1.6.1.jar" {
   permission java.security.AllPermission;
};
grant codebase "file:${java.home}/../lib/ext/swingx-bean.jar" {
   permission java.security.AllPermission;
};
grant codebase "file:${java.home}/../lib/ext/swingx-ws-2011_01_16.jar" {
   permission java.security.AllPermission;
};

grant
{  permission java.net.SocketPermission 
    "*:1024-65535", "connect,accept";
};

Espero que alguien pueda ayudarme.

-Robar

Respuesta 1

La depuración de las excepciones de seguridad de Java 2 es un proceso tedioso de prueba y error. Supongo que está iniciando el cliente con un conmutador JVM para agregarle que use un administrador de seguridad: agregue lo siguiente

-Djava.security.debug=access,failure

Obtendrá una gran cantidad de información de depuración, pero al buscarla para "acceso denegado" le mostrará qué permisos se deben otorgar contra qué base de código. No es un proceso científico, solo tiene que seguir intentándolo hasta que crea que ha solucionado todos los problemas de seguridad.

Respuesta: 2

Tengo este problema al usar j2me con eclipse y eclipseme: cuando comienzo a ejecutar la aplicación, no hace nada y obtengo este resultado ... Advertencia: Ejecutar JAM, ignorando todas las demás opciones (pero "...

Tengo el siguiente hilo que acepta conexiones entrantes en un puerto específico: public class ClientThread implementa Runnable {ServerSocket serverSocket; Socket clientSocket; En t ...

en Java, supongamos que tengo un archivo de texto con n filas, ¿es posible escribir y reemplazar solo la fila x? o reescribo todas las filas para editar alguna fila? Parece que he usado el archivo RandomAccess para ...

Estoy buscando crear una página web para grabar audio en streaming desde la fuente (como la radio en línea). Al principio pensé en hacer algo como grabar desde altavoces, pero soluciones como flash, java y ...