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

Imágenes en aplicación JSF con Primefaces y GlassFish

Estas en el tema de Imágenes en aplicación JSF con Primefaces y GlassFish en el foro de Java en Foros del Web. Hola, estoy haciendo una aplicación en JSF y uso Primefaces y como servidor GlassFish que viene por defecto en NetBeans . Como base de datos ...
  #1 (permalink)  
Antiguo 14/12/2013, 10:07
 
Fecha de Ingreso: noviembre-2013
Mensajes: 26
Antigüedad: 11 años
Puntos: 0
Imágenes en aplicación JSF con Primefaces y GlassFish

Hola, estoy haciendo una aplicación en JSF y uso Primefaces y como servidor GlassFish que viene por defecto en NetBeans. Como base de datos uso Postgre.

Mi duda viene dado que estoy pensando en poner imágenes sobre ciertas clases (por ejemplo para Clientes o Productos, tener una imagen asociada a un Cliente o Producto), y así al mostrar información que salga a parte de los campos nombre, apellidos y demás, una imagen.

Buscando información y probando cosas no llego a hacer que funcione nada. Una de mis preguntas es si en la BD almacenar las imágenes o una ruta a las imágenes. Que me recomendáis?

Para que os hagáis una idea, con Primefaces he hecho el upload de imágenes para que las guarde en una carpeta concreta, pero luego a la hora de mostrarlas, no sé como hacerlo, ya que hago algo como esto:

Código:
<p:graphicImage  height="96" width="96" value="/#{backBean.imagen}" />
El caso es que no sé a que carpeta está entrando. Si le doy a abrir imagen me sale lo siguiente:

http://localhost:8080/MiApp-war/1.PNG?pfdrid_c=true

Donde está esa ubicación dentro de mi PC? He probado varias ubicaciones donde debería de estar la Aplicación en GlassFish, pongo el archivo "1.PNG" pero no lo encuentra en ninguna.

Una ayudita? Acepto recomendaciones formas de como hacer el manejo de imágenes.

Un saludo!
  #2 (permalink)  
Antiguo 14/12/2013, 10:57
Avatar de HackmanC  
Fecha de Ingreso: enero-2008
Ubicación: Guatemala
Mensajes: 1.817
Antigüedad: 16 años, 9 meses
Puntos: 260
Sonrisa Respuesta: Imágenes en aplicación JSF con Primefaces y GlassFish

Hola,

Cita:
Iniciado por malome88 Ver Mensaje
... Para que os hagáis una idea, con Primefaces he hecho el upload de imágenes para que las guarde en una carpeta concreta,
...
¿Cual es esa carpeta concreta? ¿Está dentro del sitio o fuera del sitio?

Cita:
Iniciado por malome88 Ver Mensaje
... Donde está esa ubicación dentro de mi PC? He probado varias ubicaciones donde debería de estar la Aplicación en GlassFish, pongo el archivo "1.PNG" pero no lo encuentra en ninguna.
...
Netbeans hace un 'hot deploy' cuando estas probando (run o debug) dentro del IDE, osea que mientras estas probando el proyecto usa los archivos dentro de la carpeta:

Código:
${proyecto}\target\gfdeploy\
No están dentro del directorio donde está instalado Glassfish.

Saludos,
  #3 (permalink)  
Antiguo 14/12/2013, 11:06
 
Fecha de Ingreso: noviembre-2013
Mensajes: 26
Antigüedad: 11 años
Puntos: 0
Respuesta: Imágenes en aplicación JSF con Primefaces y GlassFish

Los estoy almacenando en una carpeta en Mis Documentos, pero luego no lo pretendo leer de ahí, es una prueba. Estoy copiando el archivo en varios sitios para ver donde está esa carpeta, pero no doy con ello.

Como debo hacerlo entonces para leer de una carpeta concreta y cuál es la mejor forma?

Saludos
  #4 (permalink)  
Antiguo 14/12/2013, 12:32
Avatar de HackmanC  
Fecha de Ingreso: enero-2008
Ubicación: Guatemala
Mensajes: 1.817
Antigüedad: 16 años, 9 meses
Puntos: 260
Sonrisa Respuesta: Imágenes en aplicación JSF con Primefaces y GlassFish

Hola,

Posiblemente,

Cita:
Iniciado por malome88 Ver Mensaje
...
Como debo hacerlo entonces para leer de una carpeta concreta y cuál es la mejor forma? ...
La carpeta 'Mis documentos' no es accesible desde la aplicación. Tienes que subirla en una carpeta dentro del sitio Web. Para saber cual es el Path podrías usar:

http://developerarticles.com/how-to-...l-path-in-jsf/

E indicarle a Primefaces que la suba allí, o preferiblemente en una carpeta /img/. Eso dependerá de como hagas el upload, y así podrás usarla en la etiqueta. Donde backBean.imagen es solamente el nombre del archivo, sin el path.

Código XML:
Ver original
  1. <p:graphicImage  height="96" width="96" value="/#{backBean.imagen}" />

Saludos,
  #5 (permalink)  
Antiguo 15/12/2013, 10:32
 
Fecha de Ingreso: noviembre-2013
Mensajes: 26
Antigüedad: 11 años
Puntos: 0
Respuesta: Imágenes en aplicación JSF con Primefaces y GlassFish

Gracias por contestar. He conseguido que muestre la imagen en esa carpeta. El problema es que cuando se hace deploy de la aplicación se borra todo lo que hay ahí, por lo tanto no me sirve.

Necesito una ubicación donde no se borre.

Saludos
  #6 (permalink)  
Antiguo 15/12/2013, 12:42
Avatar de HackmanC  
Fecha de Ingreso: enero-2008
Ubicación: Guatemala
Mensajes: 1.817
Antigüedad: 16 años, 9 meses
Puntos: 260
Sonrisa Respuesta: Imágenes en aplicación JSF con Primefaces y GlassFish

Hola,

Cita:
Iniciado por malome88 Ver Mensaje
...
Necesito una ubicación donde no se borre.
...
Técnicamente no se puede fácilmente, el problema está en que todo el sitio se borra cada vez que haces un deploy, y solamente puedes servir archivos desde dentro del sitio web.

Lo único que se me ocurre es que hagas un Servlet que recoja las imágenes de una ubicación pero las sirva desde una URL dentro de tu aplicación.

Algo parecido a esto:
http://balusc.blogspot.com/2007/07/fileservlet.html
http://stackoverflow.com/questions/4...context-in-jsf

Saludos,

Última edición por HackmanC; 15/12/2013 a las 12:53
  #7 (permalink)  
Antiguo 16/12/2013, 09:52
 
Fecha de Ingreso: noviembre-2013
Mensajes: 26
Antigüedad: 11 años
Puntos: 0
Respuesta: Imágenes en aplicación JSF con Primefaces y GlassFish

Y no hay ninguna ubicación donde poner las imágenes y no se borre cada vez que se haga un deploy? :S

Veo todo demasiado complicado para una simple imagen asociada a cada cliente.
  #8 (permalink)  
Antiguo 16/12/2013, 10:09
Avatar de rgf1987  
Fecha de Ingreso: diciembre-2012
Ubicación: Asturias
Mensajes: 269
Antigüedad: 11 años, 10 meses
Puntos: 22
Respuesta: Imágenes en aplicación JSF con Primefaces y GlassFish

Un problema similar lo tuve yo trabajando también con Glassfish.
Mi solución? pasarme a Tomcat que te permite indicar si quieres trabajar desde el entorno de trabajo (que supongo que es donde almacenas tus archivos ahora) o desde el directorio de aplicación de Tomcat.
Con esto pude resolver mi problema.
  #9 (permalink)  
Antiguo 16/12/2013, 13:31
Avatar de HackmanC  
Fecha de Ingreso: enero-2008
Ubicación: Guatemala
Mensajes: 1.817
Antigüedad: 16 años, 9 meses
Puntos: 260
Sonrisa Respuesta: Imágenes en aplicación JSF con Primefaces y GlassFish

Hola,

Cita:
Iniciado por malome88 Ver Mensaje
Y no hay ninguna ubicación donde poner las imágenes y no se borre cada vez que se haga un deploy? :S

Veo todo demasiado complicado para una simple imagen asociada a cada cliente.
Simplificando, el servidor solo puede servir archivos que están dentro del sitio, es decir, si tu carpeta es /www/sitio solamente los archivos que están dentro pueden ser vistos externamente. http ://servidor:8080/sitio/...

Pero en el caso de Java, cuando haces un deploy, el /sitio/ se borra completamente y se vuelve a construir.

Existen varios métodos, como crear soft links en linux, mapear directorios y otros pero, seguramente, creo que solo te va a dar problemas. Así que lo normal en estos casos es crear un Servlet o un Filter. También podrías cambiar tu metodología de trabajo y nunca hacer deploy.

En el caso de Glassfish también podrías probar a usar: http://docs.oracle.com/cd/E19776-01/...qpl/index.html

Cita:
Iniciado por rgf1987 Ver Mensaje
...
Mi solución? pasarme a Tomcat que te permite indicar si quieres trabajar desde el entorno de trabajo (que supongo que es donde almacenas tus archivos ahora) o desde el directorio de aplicación de Tomcat. ...
Glassfish también permite hacer deploy de una carpeta fuera del directorio donde está Glassfish. Básicamente es lo que está haciendo ahora, en Netbeans ese es el método que usa para hacer pruebas.

Lo que no estoy completamente seguro es, si al hacer deploy lo borra también, en el caso de usar las herramientas de Netbeans si lo borra.

Si no lo borra podría ser una solución tanto en Tomcat como en Glassfish.

Saludos,

Última edición por HackmanC; 16/12/2013 a las 13:38

Etiquetas: bd, clase, glassfish, jsf, netbeans, primefaces
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 13:36.