Tomcat - Servlets - Jars

anglor
21 de Noviembre del 2003
A ver, me pasan 2 cosas:

1. Tengo un servlet al que accede un applet. El servlet abre unos archivos en el servidor, etc.

Si abro el applet con http://localhost:8080/applet.html todo va fantástico.

Si lo abro con http://mi_dominio:8080/applet.html el applet carga pero al conectarse al servlet me dice que:

java.security.AccessControlException: access denied (java.net.SocketPermission localhost:8080 connect,resolve)

He probado a meter lo siguiente en el catalina.policy:

grant codeBase "file:${catalina.home}/webapps/ROOT" {
permission java.net.SocketPermission "*", "connect";
permission java.net.SocketPermission "*", "resolve";

pero no hay forma (con midominio, etc. en el campo correspondiente tampoco). En ROOT es donde está un jar con el código del applet.

2. Por ver si se debía a no tener el jar en el web-inf/lib y poner el propio jar en la línea esa del .policy he probado a mandar el jar al web-inf/lib pero entonces no sé como cojones hacer que cargue el applet dichoso, siempre me dice que no encuentra la clase.

Gracias por adelantado.

anglor
21 de Noviembre del 2003
Vale, lo he solucionado firmando el applet y con

grant codeBase "file:${catalina.home}/webapps/ROOT/Applet.jar" {
permission java.net.SocketPermission "*localhost:8080", "connect,resolve";
}

Ahora mismo consigo conectarme usando http://mimaquina:8080/applet.html eso sí, sólo desde mi ordenador, en el momento que pruebo desde otro no hay forma, me da dice que connection refused . He probado cambiando localhost por *.dominio:8080 etc. y tampoco.

discoduro2
21 de Noviembre del 2003
Hasta donde yo sé. Por la excepción que pones supongo que has intentado conectar desde el applet al servlet con un Socket. Los applets, por motivos de seguridad, sólo pueden conectarse con la máquina de la que fueron descargados. El hecho de modificar el catalina.policy no creo que influya, ya que es la máquina cliente la que no permite la conexión ¿no? (te sale la excepción en la consola de java del navegador). Hay una manera de que un applet se pueda conectar a otra maquina distinta a la de la cual se descargó. Es configurando un fichero java.policy en la máquina cliente (no recuerdo muy bien, preguntale al google), pero deberías de configurarlo en todas las máquinas que vayan a acceder a la página. De todas maneras (aquí quería llegar) es muy raro. No debería de darte problemas al conectar con el servlet si está en el mismo servidor. Yo diría que el problema es que en el tag APPLET (o equivalente) de la página HTML tienes la ruta del jar de la siguiente manera "http://localhost...." y por eso no te deje conectar con el servlet si accedes a "mi_dominio". Espero que sea eso, Ya me cuentas.