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

Applet access denied en servidor Tomcat

Estas en el tema de Applet access denied en servidor Tomcat en el foro de Java en Foros del Web. Hola, tengo una aplicación web alojada en un servidor de pago con soporte para jsp. En una página tengo un applet en el que se ...
  #1 (permalink)  
Antiguo 02/03/2006, 06:49
 
Fecha de Ingreso: junio-2004
Mensajes: 43
Antigüedad: 19 años, 11 meses
Puntos: 0
Applet access denied en servidor Tomcat

Hola, tengo una aplicación web alojada en un servidor de pago con soporte para jsp. En una página tengo un applet en el que se carga una imagen, el usuario puede dibujar sobre ella y mediante un botón comunicarse con un servlet que recogerá esa imagen.

En mi servidor localhost funciona todo bien pero en el servidor de pago no se carga el applet y en la consola java veo:

java.security.AccessControlException: access denied (java.net.SocketPermission localhost:9057 connect,resolve)
at java.security.AccessControlContext.checkPermission (Unknown Source)
at java.security.AccessController.checkPermission(Unk nown Source)
at java.lang.SecurityManager.checkPermission(Unknown Source)
at java.lang.SecurityManager.checkConnect(Unknown Source)
at sun.net.www.http.HttpClient.openServer(Unknown Source)
at sun.net.www.http.HttpClient.<init>(Unknown Source)


He estado leyendo sobre el tema y he leido que en algunas situaciones la solución es cambiar la politica de permiso (java.policy) aunque creo estos casos es cuando el applet tiene que leer/usar recursos en la máquina cliente.

Creo que mi caso es diferente ya que yo hago todas mis referencias en el servidor. Un ejemplo:

imageBuffer = ImageIO.read(new URL("http://MyAdress/applets"+File.separator+"campo.jpg"));
...

ImageIcon icon = new ImageIcon(imageBuffer);
toServlet = new URL("http://MyAdress/servlet/utiles.ServletApplet");
URLConnection servletConnection= toServlet.openConnection();
...

Pienso que cambiar la política es la solución aunque no en cada máquina cliente sino en la configuración del servidor. Como es un servidor de pago, sólo tengo acceso al directorio tomcat y he visto que existe un fichero llamado "catalina.policy".

He probado varios intentos añadiendo varias líneas pero sin éxito:

grant codeBase "file:${catalina.home}/webapps/pyc/-" {
permission java.net.SocketPermission "localhost:9057", "connect";
};
------------------------
grant codeBase "file:${catalina.home}/webapps/pyc/-" {
permission java.net.SocketPermission "midireccionweb.com:9057", "connect";
};


¿Se debe cambiar la política en este fichero o es el java.policy?

¿Está bien definido la política de permisos?

¿Alguien ha pasado por situación parecida?

Cualquier ayuda será agradecida.
  #2 (permalink)  
Antiguo 02/03/2006, 07:07
Avatar de dogduck  
Fecha de Ingreso: enero-2006
Ubicación: ¿Atlantida, Hesperides, Islas afortunadas?
Mensajes: 2.231
Antigüedad: 18 años, 4 meses
Puntos: 19
La verdad es que poco puedo ayudarte pero a lo mejor este link te ayuda :
http://www.adictosaltrabajo.com/tuto...=app_keyt_jars

Trata de como firmar digitalmente un Applet ...
  #3 (permalink)  
Antiguo 02/03/2006, 07:22
 
Fecha de Ingreso: octubre-2003
Mensajes: 3.578
Antigüedad: 20 años, 6 meses
Puntos: 51
Le está denegando al applet la comunicacion con localhost en el puerto 9057. ¿Seguro que es eso lo que quieres hacer? ¿No debería intentar comunicarse con el servlet, y entonces la dirección no debería ser distinta de localhost?

Para averiguar la URL del servlet a llamar, puedes usar Applet.getCodeBase y olvidarte de tener las direcciones escritas "a pelo" en el codigo.
  #4 (permalink)  
Antiguo 02/03/2006, 10:15
 
Fecha de Ingreso: junio-2004
Mensajes: 43
Antigüedad: 19 años, 11 meses
Puntos: 0
Gracias a los 2 por la ayuda. La opción de firmar el applet no me gusta ya que es un simple applet. En cuanto a la dirección, no las pongo a pelo sino a través de unos parámetros He estado pensado en vuestras palabras y gracias a ello he encontrado mi error y la solución.

Hace tiempo hice pruebas con getDocumentBase() y no conseguí lo que quería así que recurrí en la página jsp a enviar 2 parámetros al applet para definir la ruta de la aplicación:

<%=request.getHeader("Host")%>
<%=request.getContextPath()%>

Así para cargar las imágenes en applet leia los 2 parámetros y los usaba:
imageBuffer = ImageIO.read(new URL("http://"+HeaderHost+ContextPath+"/applets/campo.jpg"));

No me he dado cuenta que en el servidor de pago esto no vale así que ya me funciona poniendo:
imageBuffer = ImageIO.read(new URL(getCodeBase()+"campo.jpg"));

GRACIAS.
  #5 (permalink)  
Antiguo 25/09/2008, 11:15
 
Fecha de Ingreso: septiembre-2008
Mensajes: 1
Antigüedad: 15 años, 7 meses
Puntos: 0
Respuesta: Applet access denied en servidor Tomcat

hola.. lei a cerca de su aplicacion en la cual un servlet recibe la imagen desde un applet, y me interesa mucho saber mas de ella, ya que actualmente estoy trabajando en una aplicacion que requiere del envio de imagen desde un applet a un servlet, y no he podido lograr dicho envio, le agradeceria mucho si pudiera darme una idea de que es lo que debo de buscar, mi aplicacion solo envia texto por el momento, ya que no he encontrado como enviar la imagen en si...

espero contar con su ayuda y gracias de antemano..

saludos
  #6 (permalink)  
Antiguo 29/11/2008, 11:12
 
Fecha de Ingreso: febrero-2007
Mensajes: 2
Antigüedad: 17 años, 2 meses
Puntos: 0
Respuesta: Applet access denied en servidor Tomcat

Cita:
Iniciado por Mariadk Ver Mensaje
hola.. lei a cerca de su aplicacion en la cual un servlet recibe la imagen desde un applet, y me interesa mucho saber mas de ella, ya que actualmente estoy trabajando en una aplicacion que requiere del envio de imagen desde un applet a un servlet, y no he podido lograr dicho envio, le agradeceria mucho si pudiera darme una idea de que es lo que debo de buscar, mi aplicacion solo envia texto por el momento, ya que no he encontrado como enviar la imagen en si...

espero contar con su ayuda y gracias de antemano..

saludos



Si necesitas ayuda de como realizar un applet que envie una imagen a un servlet o a una pagina php que reciva dicho archivo para procesarlo, pues yo tengo hecha una aplicacion que muestra hasta una barra de progreso, si te interesa comunicate conmigo.

Saludos,
Cristian.
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 02:51.