Foro Java y C/Linux

Programación Web => Java J2EE y JSP => Topic started by: nenuka on Junio 04, 2007, 01:53:20 am

Title: Abrir una ventana desde java
Post by: nenuka on Junio 04, 2007, 01:53:20 am
Hola:
Quiero hacer una cosa, q no se como hacerla o si se puede hacer.Yo tengo un codigo de una clase java que crea un applet, quiero que si dentro de ese applet se da un evento determinado, se abra  otra ventana con el contenido de un pdf, preferiblemente que la ventana fuera de un navegador, pero bueno , eso da lo mismo.
No se si me habre explicado bien, y si lo entendereis, pero agradeceria vuestra ayuda.Gracias
Title: Re: Abrir una ventana desde java
Post by: chuidiang on Junio 04, 2007, 03:43:29 am
Hola:

Desde un applet no puedes abrir ni el navegador, ni el acrobat, ni ningún otro ejecutable, salvo que firmes digitalmente el applet (http://www.chuidiang.com/chuwiki/index.php?title=Firmar_Applets) y el que lo visualice acepte la firma.

Para mostrar el pdf tendrás que usar una librería como jasperreport (http://www.chuidiang.com/chuwiki/index.php?title=Ejemplo_b%C3%A1sico_con_Jasper_Report).

Se buena.
Title: Re: Abrir una ventana desde java
Post by: nenuka on Junio 04, 2007, 06:12:53 pm
hola!
ya he firmado el applet con las indicaciones de la pagina, ademas tambien buscando he visto una codigo de una persona a la que tb le respondiste y lo he utilizado para abrir directamenteun pdf, el de la pagina :http://foros.emagister.com/tema-applet_java-13041-424730.htm
y no se que me pasa que al darle a ejecutar cunado me pide permiso para ejecutar el applet por lo de la firma digital, se me cierra el applet y mi pagina desde donde lo llamo, xq sera?
Title: Re: Abrir una ventana desde java
Post by: nenuka on Junio 04, 2007, 11:12:36 pm
Ya consegui que me funcionara y si que lo hace bien
Title: Re: Abrir una ventana desde java
Post by: nenuka on Junio 05, 2007, 01:19:45 am
Como ya dije antes, si que me funciono, pero ahora vuelvo a tener problemas, en la consola lo que me sale otra vez es:
04-jun-2007 19:16:52 prefuse.action.ActionList run
WARNING: access denied (java.io.FilePermission C:\Archivos de programa\Apache Software Foundation\Tomcat 5.0\webapps\java4try\bonito\graficos\chi-ontology.xml read)
java.security.AccessControlException: access denied (java.io.FilePermission C:\Archivos de programa\Apache Software Foundation\Tomcat 5.0\webapps\java4try\bonito\graficos\chi-ontology.xml read)

lo q salia antes de firmarlos, esto porque es?
como etsoy haciendo prubas el .jar lo estoy cambiando de vez en cuando y yo lo que hago es volver a firmarlo, eos esta mal?no entiendo nada...
Title: Re: Abrir una ventana desde java
Post by: chuidiang on Junio 05, 2007, 01:34:29 am
Hola:

El jar es el que lleva la firma. Si haces un jar nuevo, debes firmarlo.

Se buena.
Title: Re: Abrir una ventana desde java
Post by: nenuka on Junio 05, 2007, 02:00:03 am
ok, ok, ya voy entendiendo.
Ahora otra cosa, q casi nos e ni explicar, pero a ver si me podeis ayudar:
yo etsoy utilizanto un codigo de un herramienta para hacer graficos llamada prefuse, y yo lo que hago es en el eclipse compilo los datos y depsues me llevo los .class a mi servidor comprimidos en .jar y los utilizo como un applet; mi problema es que yo utilizo una consulta a la bd y para eso inclui el conector de jdbc al eclipse y asi me funciono, pero despues cuando lo paso al servidor no me va, me da el error:
Controlador JDBC no encontrado: java.lang.ClassNotFoundException: org.gjt.mm.mysql.Driver
04-jun-2007 19:58:23 prefuse.action.ActionList run
ADVERTENCIA: null
java.lang.NullPointerException
   at prefuse.conexion.ConexionBD.ejecutaConsulta(ConexionBD.java:66)
   at prefuse.demos.TreeView$NodeColorAction.getColor(TreeView.java:4

La clase conexion la he copiado yo de las que tengo en mi servidor, la cosa es que en eclipse me va todo bien, pero depsues al agregar el .jar no se como hacerlo para que vaya.
No se si entendera lo que digo, porque es algo lioso.
Title: Re: Abrir una ventana desde java
Post by: chuidiang on Junio 05, 2007, 03:40:01 am
Hola:

Tienes que subir el jar con el conector también al servidor, junto con tu applet. Luego en el código html del applet, debes poner también dicho jar. Más o menos esto

Code: [Select]
<applet code="TuApplet" archive="TuJar.jar conector.jar ....
Se buena.
Title: Re: Abrir una ventana desde java
Post by: nenuka on Junio 05, 2007, 07:33:17 am
Gracias, con eso ya me funciono!!!
Lo que queria hacer ya me funciona localmente, pero ahora al subirlo a un servidor linux tengo el siguiente problema, al ejecutarlo me sale:

Error de entrada/salida
Excepcion:java.io.FileNotFoundException: C:\usr\local\tomcat\webapps\anai\proy\graficos\chi-ontology.xml (El sistema no puede hallar la ruta especificada)
En la llamada a parse()
05-jun-2007 1:25:50 prefuse.action.ActionList run
ADVERTENCIA: null
java.lang.NullPointerException
   at prefuse.demos.TreeView$NodeColorAction.getColor(TreeView.java:435)
   at prefuse.action.assignment.ColorAction.process(ColorAction.java:196)

yo en el codigo tengo puesto para crear el fichero lo siguiente:

File fich=new File("/usr/local/tomcat/webapps/anai/proy/graficos/chi-ontology.xml");

Como esta dentro de un applet pone siempre el c: delante de la ruta o que es lo que pasa?como puedo acceder a la ruta del servidor, o en otro caso, podria copiar el fichero a una carpeta temporal del usuario y poder leerlo desde alli?
Title: Re: Abrir una ventana desde java
Post by: chuidiang on Junio 05, 2007, 10:40:56 am
Hola:

Efectivamente, un Applet lee en el disco del cliente y no en el del servidor. Prueba pasando una url al fichero

Code: [Select]
File fichero = new File ("http://....");
si no funciona, quizás tengas que usar la clase HttpURLConnection

Code: [Select]
InputStream is = new HttpURLConnection("http://....").getInputStream
Se buena.
Title: Re: Abrir una ventana desde java
Post by: nenuka on Junio 05, 2007, 05:41:56 pm
vale, ya consegui leer el archivo del servidor, pero he tenido q copiarlo temporalmente, pero bueno eso si que m funciona ya.
Ahora mi problema es, yo tengo mi clase para conectarme a la base de datos, pero como esa clase estara en el cliente(no?)como hago para conetarme a una base de datos remota?
yo lo que hago es:
Class.forName("org.gjt.mm.mysql.Driver");
miCon = DriverManager.getConnection("jdbc:mysql://carpex.usal.es:8080/referencias?user=***&password=**");

donde meto mis calves para conectarme, no se si el puerto 8080 esta bien, cunado pongo eso me sale este error:

xcepcion capturada de SQL: java.sql.SQLException: Communication link failure: java.io.IOException, underlying cause: Unexpected end of input stream

** BEGIN NESTED EXCEPTION **

java.io.IOException
MESSAGE: Unexpected end of input stream

STACKTRACE:

java.io.IOException: Unexpected end of input stream
   at com.mysql.jdbc.MysqlIO.readPacket(MysqlIO.java:1096)
   at com.mysql.jdbc.MysqlIO.doHandshake(MysqlIO.java:387)
   at com.mysql.jdbc.Connection.createNewIO(Connection.java:1562)
   at com.mysql.jdbc.Connection.<init>(Connection.java:491)
   at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:346)
   at java.sql.DriverManager.getConnection(Unknown Source)
   at java.sql.DriverManager.getConnection(Unknown Source)
   at prefuse.conexion.ConexionBD.EstablecerConexion(ConexionBD.java:41)
   at prefuse.demos.TreeView$NodeColorAction.getColor(TreeView.java:469)
   at prefuse.action.assignment.ColorAction.process(ColorAction.java:196)
   at prefuse.action.ItemAction.run(ItemAction.java:102)
   at prefuse.action.EncoderAction.run(EncoderAction.java:143)
   at prefuse.action.ActionList.run(ActionList.java:79)
   at prefuse.action.Action.run(Action.java:122)
   at prefuse.activity.Activity.runActivity(Activity.java:152)
   at prefuse.activity.ActivityManager.run(ActivityManager.java:327)


** END NESTED EXCEPTION **


Excepcion en la uri:java.lang.NullPointerException

y poniendo el puerto 3306 que es el q yo creia q  era para la conexion a la bd me da el siguiente error:

Excepcion capturada de SQL: java.sql.SQLException: Unable to connect to any hosts due to exception: java.net.ConnectException: Connection timed out: connect
Excepcion en la uri:java.lang.NullPointerException

como me puedo conectar sino?esto lo etsoy probando desde el eclipse ahora, antes de meterlo en el servidor
Title: Re: Abrir una ventana desde java
Post by: chuidiang on Junio 05, 2007, 08:13:27 pm
Hola:

8080 es el puerto que usa el servidor web y no la base de datos.

El puerto de la base de datos depende de cómo esté configurado el servidor de base de datos. Si no has hecho ninguna configuración especial y está por defecto, depende de qué servidor de base de datos sea (oracle, mysql, etc). Para oracle suele ser el 1521, para mysql el 3306. Si no es ninguna de estas bases de datos, revisa la documentación de la que estés usando para ver qué puerto es.

También puedes tener problemas en el sentido de que algunos servidores de base de datos se instalan/configuran para que no acepten conexiones desde otros ordenadores.

Se buena.
Title: Re: Abrir una ventana desde java
Post by: nenuka on Junio 07, 2007, 11:16:25 pm
Creo que no se puede conectar al puerto de la base de datos desde fuera d la red del servidor, tengo que hablar con el administrador.
Pero otra cosa, como puedo obtener un File con la llamanda HttpURLConnection, es decir, como puedo pasar de un InputStream a un File?es que necesito un objeto File, pero no se si podra hacer....
Title: Re: Abrir una ventana desde java
Post by: chuidiang on Junio 08, 2007, 03:51:19 am
Hola:

Puedes crear un File pasándole una URI en el constructor. La URI puedes construirla con el consabido "http://servidor.com/path/fichero"

Code: [Select]

File f = new File (new URI ("http://servidor.com/path/fichero"));


Se buena.
Title: Re: Abrir una ventana desde java
Post by: nenuka on Junio 08, 2007, 04:37:03 am
Me da este error:
URI scheme is not "file", entoces q hago?
Title: Re: Abrir una ventana desde java
Post by: chuidiang on Junio 08, 2007, 04:45:22 am
Hola:

No sé, parece que File no admite algo que  no sea "file://...", así que quizás no puedas obtener un File de un http.

¿Para qué necesitas que sea File?

Se buena.
Title: Re: Abrir una ventana desde java
Post by: nenuka on Junio 08, 2007, 04:58:47 am
Necesitaba que fuera File para pasarselo a una funcion, he probado una cosa q no se si podra hacer:

fich = new File(new URI("file://localhost/java4try/bonito/graficos/chi-ontology.xml"));

pero me de un error

fich = new File(new URI("file://localhost/java4try/bonito/graficos/chi-ontology.xml"));

queria que fuera file por despues del xml saco datos...
Title: Re: Abrir una ventana desde java
Post by: chuidiang on Junio 08, 2007, 05:23:32 am
Hola:

Puedes leer un xml con un DocumentBuilder.parse() que admite un InputStream que puedes obtener fácilmente de tu HttpUrlConnection.getInputStream(), e incluso DocumentBuilder.parse admite directamente una URI, como la que hiciste antes.

Echa un ojo también a cómo leer un fichero xml (http://www.chuidiang.com/chuwiki/index.php?title=Ficheros_XML), por si te sirve de ayuda.

Se buena.