Java - Ayuda con Applet

 
Vista:

Ayuda con Applet

Publicado por Isaac (21 intervenciones) el 31/07/2007 23:20:27
Wenas, tengo un problema con un applet q cree, la funcion de este es sencilla recoje unos datos de una base de datos mysql, la cual esta en el servidor donde tb esta mi applet, y dibuja imagenes moviendose por un campo:

Lo tengo q ejecutar remotamente ( ya q el server no esta en mi ordenador si no q es de una empresa ) y me da el siguiente error:

SQLException: Communications link failure due to underlying exception:

** BEGIN NESTED EXCEPTION **

java.net.SocketException
MESSAGE: java.security.AccessControlException: access denied (java.net.SocketPermission 127.0.0.1:3306 connect,resolve)

STACKTRACE:

java.net.SocketException: java.security.AccessControlException: access denied (java.net.SocketPermission 127.0.0.1:3306 connect,resolve)
at com.mysql.jdbc.StandardSocketFactory.connect(StandardSocketFactory.java:151)
at com.mysql.jdbc.MysqlIO.<init>(MysqlIO.java:280)
at com.mysql.jdbc.Connection.createNewIO(Connection.java:1765)
at com.mysql.jdbc.Connection.<init>(Connection.java:430)
at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:268)
at java.sql.DriverManager.getConnection(Unknown Source)
at java.sql.DriverManager.getConnection(Unknown Source)
at Animator.init(animator.java:114)
at sun.applet.AppletPanel.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)

** END NESTED EXCEPTION **

La conexion q use es con el driver de java para mysql y en mi applet puse esto:

import java.awt.*;
import java.applet.Applet;
import java.sql.*;
import org.gjt.mm.mysql.Driver;
import java.lang.*;

String url = "jdbc:mysql://localhost:3306/ciberliga";
String query = "SELECT * FROM Partido";

try {
Class.forName("com.mysql.jdbc.Driver");
}
catch(java.lang.ClassNotFoundException e)
{
System.err.print("ClassNotFoundException: ");
System.err.println(e.getMessage());
}

try {
Connection con = DriverManager.getConnection (url,"login","password");
Statement stmt = con.createStatement();
ResultSet rs = stmt.executeQuery(query);
//Aqui saco los datos del rs, no lo pongo por q es un poco largo
stmt.close();
con.close();
}

catch(SQLException ex)
{
System.err.println("SQLException: " + ex.getMessage());
}


He quitao la estructura del applet para no pegarlo entero, espero me podais decir porque me niega el acceso por no se q hacer ya...

Se me olvidaba decir q lo q colgue en el servidor fue el html q llama a el applet el cual esta almacenado en un archivo .jar junto con el driver de java-mysql, todo ello en la misma direccion q el html...

Es mas os doy el link del applet para q lo ejecuteis si quereis para q veais vosotros mismos por q falla xD

http://www.ciberliga.net/admins/animator.html

Espero me podais ayudar por q estoy desesperao ya ^^

salu2.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Ayuda con Applet

Publicado por angel (537 intervenciones) el 01/08/2007 08:55:48
Hola, veras yo creo k el problema esta en que un applet se ejecuta n local, es decir, el navegador s descarga el .class y lo ejecuta en el cliente.
Entonces yo creo que estas intentando conectarte a la base de datos en local,,fijate en la excepcion que m salta a mi:
"
** BEGIN NESTED EXCEPTION **

java.net.SocketException
MESSAGE: java.security.AccessControlException: access denied (java.net.SocketPermission 127.0.0.1:3306 connect,resolve)

STACKTRACE:

java.net.SocketException: java.security.AccessControlException: access denied (java.net.SocketPermission 127.0.0.1:3306 connect,resolve)
at com.mysql.jdbc.StandardSocketFactory.connect(StandardSocketFactory.java:151)
at com.mysql.jdbc.MysqlIO.<init>(MysqlIO.java:280)
at com.mysql.jdbc.Connection.createNewIO(Connection.java:1765)
at com.mysql.jdbc.Connection.<init>(Connection.java:430)
at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:268)
at java.sql.DriverManager.getConnection(Unknown Source)
at java.sql.DriverManager.getConnection(Unknown Source)
at Animator.init(animator.java:114)
at sun.applet.AppletPanel.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)

** END NESTED EXCEPTION **
"

Fijate como pone : "java.net.SocketPermission 127.0.0.1:3306 connect,resolve"
Esta intentando conectarse en local.

Creo k la conexión deberias hacer a la ip dond este tu bd y tambien asegurarte que aceptará conexiones desde el exterior, es decir internet.

Suerte y saludos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Ayuda con Applet

Publicado por Isaac (21 intervenciones) el 01/08/2007 10:14:57
Muchas gracias Angel, seguramente tengas razon asi q en vez de poner en la conexion localhost pondre la direccion ip donde esta alojada la BBDD.

salu2.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Ayuda con Applet

Publicado por angel_2 (1 intervención) el 02/08/2007 08:56:47
Hola isaac. Como bien dice mi tocayo, no se conectará a la base de datos si no está en la propia máquina en la que ejecutas el applet. Si embargo, la excepción que te está lanzando ahora mismo es por que no tiene los permisos suficientes para conectarse a ninguna base de datos:

-> java.net.SocketException: java.security.AccessControlException: access denied

Para solucionarlo debes dar permisos al applet para que pueda conectarse a una BD. Para ello edita el fichero "java.policy" que se encuentra en "{rutainstalacionjre}/lib/security/" o eso creo recordar. Añade la línea:

permission java.net.SocketPermission "ip:puerto", "connect,accept,resolve";

Espero que te sirva. Saludos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Ayuda con Applet

Publicado por Isaac (21 intervenciones) el 02/08/2007 13:31:56
Gracias a los dos por ayudarme :D

Ahora tengo 2 dudas respecto a lo q me dijisteis, respecto a lo q me dijo Angel de quitar el localhost y poner la ip de la BBDD donde esta la tabla en la cual quiero realizar la consulta y recuperar datos, resulta q esta almacenada en el sistema de informacion (SI) de una empresa a la cual contratamos, asi q lo unico q se me ocurre es poner la direccion del servidor web para q este se comunique con el servidor de aplicaiones el cual es el unico q tiene acceso a la BBDD.

Lo q no se es si para acceder al servidor web me valdria poner esta url:

String url = "jdbc:mysql://www.ciberliga.net:3306/ciberliga";

ciberliga es el nombre de la BBDD almacenada en el SI de la empresa, creeis q dando el login y password con un permiso adecuado me valdra esa direccion para acceder a la tabla q necesito ¿?

Y respecto a lo q me dices Angel_2 encontre el archivo q dices, y como no se la ip q poner valdra q ponga esta¿?: www.ciberliga.net:3306 , osea la del servidor web, supongo q igual luego el ISP la tradudca a una ip, no se quizas funcione no te parece¿?

Y otra cosa, una vez echa esta modificacion tendre q volver a compilar el applet no¿?, y si lo ejecuto desde un ordenador q no tenga instalado el desarrollador de aplicaicones java funcionara el applet¿?

Jur estoy echo un lio xD

salu2 y mil gracias
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar