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

Error desplegando aplicacion en Tomcat

Estas en el tema de Error desplegando aplicacion en Tomcat en el foro de Java en Foros del Web. Hola. Estoy haciendo una aplicacion en Java+Spring+Tapestry. Durante el desarrollo he utilizado el servidor Jetty por comodidad pero ahora queria desplegar mi aplicacion en Tomcat. ...
  #1 (permalink)  
Antiguo 17/09/2012, 17:19
 
Fecha de Ingreso: mayo-2011
Mensajes: 24
Antigüedad: 13 años
Puntos: 0
Error desplegando aplicacion en Tomcat

Hola. Estoy haciendo una aplicacion en Java+Spring+Tapestry. Durante el desarrollo he utilizado el servidor Jetty por comodidad pero ahora queria desplegar mi aplicacion en Tomcat.

El caso es que genero el .war (dicom.war) lo pego en el directorio webapps de tomcat lo inicio con startup.sh y me funciona perfectamente hasta que al intentar loguearme me da un error, o sea da error al acceder a la base de datos. Me dice:

Could not open Hibernate Session for transaction; nested exception is org.hibernate.exception.GenericJDBCException: Cannot open connection

y mas abajo me pone:

com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorEx ception: Table 'dicom.PingTable' doesn't exist

Creo que configure bien Tomcat siguiendo los pasos de un tutorial que me dieron para configurar todo lo necesario.
En el archivo server.xml añadí dentro de <GlobalNamingResources>

<!-- MySQL -->
<Resource name="jdbc/dicom"
auth="Container"
type="javax.sql.DataSource"
driverClassName="com.mysql.jdbc.Driver"
url="jdbc:mysql://localhost/dicom"
username="dicom"
password="dicom"
maxActive="4"
maxIdle="2"
maxWait="10000"
removeAbandoned="true"
removeAbandonedTimeout="60"
logAbandoned="true"
validationQuery="SELECT COUNT(*) FROM PingTable"/>

y en context.xml dentro de <Context>
<ResourceLink name="jdbc/dicom" global="jdbc/dicom" type="javax.sql.DataSource"/>

Supongo que el problema viene de esa tabla PingTable, que la verdad no se que significa ni para que se usa. A ver si me podeis echar una mano porque buscando por internet ví que es necesario poner esa linea en la configuracion pero a nadie le daba ese error en concreto

Gracias de antemano!
  #2 (permalink)  
Antiguo 18/09/2012, 15:53
Avatar de Ronruby  
Fecha de Ingreso: julio-2008
Ubicación: 18°30'N, 69°59'W
Mensajes: 4.879
Antigüedad: 15 años, 9 meses
Puntos: 416
Respuesta: Error desplegando aplicacion en Tomcat

El error claramente te dice que no existe esa tabla. Porque no la creas en tu base de datos y pruebas a ver ?
  #3 (permalink)  
Antiguo 26/09/2012, 09:19
 
Fecha de Ingreso: mayo-2011
Mensajes: 24
Antigüedad: 13 años
Puntos: 0
Respuesta: Error desplegando aplicacion en Tomcat

Hola.

Al final eliminé la ultima linea de la configuracion:
validationQuery="SELECT COUNT(*) FROM PingTable"/
que la verdad no sé para que era, simplemente aparecía en el tutorial que nos entregaron para configurarlo
y me funciona perfectamente...

Perfectamente no... ahora tengo un problema que la verdad no sé de donde puede salir. En una página de mi aplicacion muestro una imagen que genero mediante un StreamResponse. Desde esa página llamo a una pagina que se llama MostrarImagenpage que es copiada tal cual de tutoriales que me encontre por la red. Copio dicha pagina:

public class MostrarImagenPage {

@Inject
private LinkSource linkSource;

@Inject
private EstudioService estudioService;

private String contentType = "image/jpeg";

private String extension = "jpg";

private String filename = "default";

public Link getUploadedFile(String imageId) {
return linkSource.createPageRenderLink(MostrarImagenPage. class.getSimpleName(),false, new Object[]{imageId});
}

public StreamResponse onActivate(final String imageId) {
this.filename = imageId;
return new StreamResponse() {

public String getContentType() {
return contentType;
}

public InputStream getStream(){
Imagen imagen=null;
try {
imagen = estudioService.findImagen(imageId);
return estudioService.dicom2jpg(imagen.getNombreFich());

} catch (InstanceNotFoundException e) {

} catch (IOException e) {

}
return null;
}
public void prepareResponse(Response response) {
response.setHeader("Content-Disposition", "inline;filename=" + filename+ ((extension == null) ? "" : ("." +extension)));
}

};
}

}




El caso es que en jetty me funciona perfectamente pero en Tomcat no se muestra la imagen..
Voy a continuar buscando a ver si encuentro la solución para pegarla por aqui, por si a alguienle pasa algo similar pero de momento no doy con ello.

Alguien tiene idea de que puede ser?



Gracias


Edito: Despues de acceder a la pagina en la que no se me muestra la imagen, pero tampoco me da error ni nada, si intento acceder a otra pagina cualquiera de mi aplicacion me aparece algo de este estilo

��X{S����Oћ��fHG��G@.�)�I�����t:��ںa��=� ��2S����R%����;�j�j��k����*�fY�V-�֯��y���r��S�:ʲ�+S��S˚�f���ҳ�7�\���j�c6�uLW�F� ,�1��;�s�B!QӢ���Б4P(�NѰ\�? @�C�B�P����s� C'?v-GHb%Z؉��������H��Z�| ���"se=�'�(��T��4�E����dB�U8 ��ů���Ib������`?X0���M)'-IX�Ղ�pJ�2�T��[��d�#�L}�F�)S��޲��b�Tҏ�T � )�u�C��?���O\��f�x�-��\�X�c��Ӟ&�bOW}�0�U�(ؙ�O�Bu�}2��=R�Q�<0� ���)�Db%�>Q�� wQ:�-�EC�]13Q6[:s��nј�4#8"��1�H�Q� 0ƴi�T���-W��+T�Q�Z�{TFv�?�5;=TkV;��%���6ׅf@޶�����. ��|�0�Qa��8$ �B�A�����(�b�V �egJ��H+�Q^V� ə�K��Q�G��ģa���I�C�^Fqr�dJwž>z��>��hC��U� G]*|�JU�)�(&��3+��~�A�ᅈ��}�=H5��6Aé�)EO}=�4L8 ޣ�*ž� ���&�:�IJT7���7�����5����;z�%c�Äh l V���-�N��G3�N�y�I�pcADc��'�p*��$_ s������t�<�i� ��E� �~�6 �j*tC�ZD���z���a-��YʟhH�L�.�A��f���Q�,/_�g&�Qs^ ��Gj�0i=�.ON�T>���

Nunca trabajé con tomcat y se me hacen estraños estos errores..
  #4 (permalink)  
Antiguo 27/09/2012, 02:34
Avatar de chuidiang
Colaborador
 
Fecha de Ingreso: octubre-2004
Mensajes: 3.774
Antigüedad: 19 años, 7 meses
Puntos: 454
Respuesta: Error desplegando aplicacion en Tomcat

Hola:

Aquí response.setHeader("Content-Disposition", "inline;filename=" + filename+ ((extension == null) ? "" : ("." +extension))); te falta poner el content-type para que el navegador sepa que es una imagen.

Has copiado de donde sea el método del content-type (lo tienes), pero te has olvidado de copiar donde se está usando (no lo usas).

Se bueno.
__________________
Apuntes Java
Wiki de Programación
  #5 (permalink)  
Antiguo 27/09/2012, 11:12
 
Fecha de Ingreso: mayo-2011
Mensajes: 24
Antigüedad: 13 años
Puntos: 0
Respuesta: Error desplegando aplicacion en Tomcat

Pues la solución tenia muy buena pinta pero tampoco me funciona

Deje mi método así (creo que era lo que me decías)

public void prepareResponse(Response response) {
response.setHeader("Content-type","image/jpeg");
response.setHeader("Content-Disposition", "inline;filename=" + filename+ ((extension == null) ? "" : ("." +extension)));
}

Estoy también en el foro de Tapestry comentándolo a ver si sale....

En cuanto lo tenga pondré por aquí la solución
  #6 (permalink)  
Antiguo 28/09/2012, 21:17
 
Fecha de Ingreso: mayo-2011
Mensajes: 24
Antigüedad: 13 años
Puntos: 0
Respuesta: Error desplegando aplicacion en Tomcat

Ya creo que sé de donde viene el error, el tema es que la imagen la leo en tiempo real de un fichero y el problema es que no estoy accediendo a ese fichero

Estoy perdidisimo con Tomcat.... con lo facil que va todo en Jetty...
Estuve haciendo pruebas para enlazar por ejemplo un pdf desde un enlace del código, y por ejemplo en Jetty poniendo en el .tml <a href="hola.pdf">descargar</a> y situar el hola.pdf en la carpeta webapp me funcionaba.

Pero en Tomcat ya no doy ni echo eso.. Donde tendría que poner el fichero hola.pdf? probé dentro del war al generarlo y nada, probé a crearlo en la carpeta que se llama igual que el war y que se genera automaticamente pero tampoco....
No entiendo muy bien como trabaja Tomcat con los ficheros o como poder enlazarlos o acceder a ellos desde el codigo. Se da accedido a ficheros que tengo en mi escritorio o tienen que estar dentro del directorio de Tomcat en algun sitio específico? porque tampoco di enlazado al escritorio.

PD: probe tanto href="hola.pdf" como href="/hola.pdf" porque leí algo acerca de la / inicial y tal pero ni por esas.

Lo siento por todos los problemas pero se me está haciendo cuesta arriba esto y cuando parece que tengo la solución a algo me encuentro con algo peor ...XD
  #7 (permalink)  
Antiguo 06/10/2012, 10:54
 
Fecha de Ingreso: mayo-2011
Mensajes: 24
Antigüedad: 13 años
Puntos: 0
Respuesta: Error desplegando aplicacion en Tomcat

el post anterior está mal, no viene de ahi el problema, si que doy accedido al fichero y extraer datos del el.... ya lo comprobé.

El problema creo que está aquí

Mire las peticiones y respuestas que devuelve tomcat y en la problematica me pone esto

[18:05:12.747] GET http://localhost:8080/dicom-1.0.0/mostrarimagenpage/1.3.6.1.4.1.9328.50.3.10887 [HTTP/1.1 500 Error Interno del Servidor 424ms]

y dentro hay dos campos que son los que dan el problema

x-Tapestry-ErrorMessage: org.apache.tapestry5.ioc.internal.OperationExcepti on
Content-Type: text/html;charset=UTF-8

No entiendo porque el content-type que devuelve es de ese estilo cuando en mi codigo fuerzo a que me lo cambie con las siguientes lineas.

@Meta("tapestry.response-content-type=image/JPEG")
@AuthenticationPolicy(AuthenticationPolicyType.AUT HENTICATED_USERS)
public class MostrarImagenPage
  #8 (permalink)  
Antiguo 09/10/2012, 14:16
 
Fecha de Ingreso: mayo-2011
Mensajes: 24
Antigüedad: 13 años
Puntos: 0
Respuesta: Error desplegando aplicacion en Tomcat

Por fin solucionado!!!!! Dios llevaba no se cuantos dias dandole vueltas a eso....

Era un problema relacionado con las librerias de IOimage que necesitaba para extraer las imagenes de los ficheros DICOM y no se porque dan algun problema con Tomcat. La verdad no se muy bien porque lo único que sé es que ahora me funciona XD.

Lo solucioné añadiendo una linea en el fichero server.xml dentro de tomcat/conf/

predefinido viene:
<Listener className="org.apache.catalina.core.JreMemoryLeakP reventionListener" />
y hay que añadir el parametro appContextProtection="false" quedando así :

<Listener className="org.apache.catalina.core.JreMemoryLeakP reventionListener"
appContextProtection="false"/>

Espero que le sirva de ayuda a alguien.

Edito: Por cierto no me hicieron falta las anotaciones @Meta("tapestry.response-content-type=image/JPEG") ni el response.setHeader("Content-type","image/jpeg");

Etiquetas: mysql, tomcat, aplicaciones
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 08:55.