NetBeans+Tomcat = OK | Tomcat Normal = KO

bLaKnI

Buenas tardes!

Tengo un problema gordo, que no se como solventar.
A ver si podeis hecharme una mano :S

Vereis:

  • Tengo una aplicacion montada con servlets y jsps, completa, plenamente funcional, con accesos a BBDD MySQL y que esta plenamente funcionando y preparada para ser desplegada.
    Desde Netbeans, con su Tomcat 6.0 embeded, todo funciona perfectamente.
    Esta web, inicialmente se dirige a index.jsp, que immediatament en el "onload", hace un submit de un form, para acceder al servlet, recoger una serie de datos (noticias) de una BBDD y finalmente, redirigirse al jsp Principal.jsp, en donde se muestran dichas noticias recogidas de la BBDD.
    Veis que contemplo el diseño MVC, pero esto aqui no es importante.

El tema es, que esto funciona sin ningun problema.

La historia está en que cuando genero el WAR (clean&build, carpeta dist), y desplego este WAR en el Apache Tomcat (6.0.18, independiente de Netbeans, nada que ver con el embeded que este lleba), cuando ejecuto la aplic (accedo mediante URL), se queda en blanco, en el servlet.
Justo en el proceso de recogida de datos de la BBDD para ir a Principal.jsp.
Se que es eso, porque he comentado el trozo de acceso a la BBDD, he regenerado el WAR y lo he redesplegado de nuevo y al entrar en la aplic (url), funciona correctamente, mostrandose como deberia, la plana Principal.jsp, pero evidentemente, sin las noticias.

Esto sucede con TODOS los aspectos que requieren acceso a BBDD.

Tengo entonces que en Netbeand + su Tomcat embbeded, todo OK.
Pero con el WAR desplegado en el Apache Tomcat independiente de netbeans, el que se baja = KO en tema de accesos a BBDD.

Hasta aqui dirias que debo tener algun problema con MySQL y tal, pero no es así, ya que potras practicas y aplicaciones SI FUNCIONAN CORRECTAMENTE!

Es SOLO EN ESTE CASO, en que no funciona, y os aseguro que lo he probado todo, y no tengo nada raro o diferente, pues insisto, funciona perfectamente en ambito de desarrollo!

Cual es la unica cosa que es diferente?

Pues que para que se me vieran en el browser y almacenara correctamente los caràcteres especiales, acentos, ñ, ç, ... en la BBDD, tuve que cambiar los charsets generalmente.
Las tablas estan en UTF8, y las collations, a UTF8-Spanish. Lo estan tambien aquellas columnas especificas que así deben estar por contener campos sensibles.
Y el ambito de conexion de MySql, tambien esta en UTF8, con UTF8-Spanish de collation por defecto.

La conexion mediante el DAO que tengo programado, la hago especificando un ISO-8859-1 como parametro, y esta a sido LA UNICA combinacion possible que he encontrado para poder hacer que se vea y almacene todo OK.

Entonces, ¿puede ser que sea un problema de configuracion del tomcat a pelo, relacionado con el tema del charsets?
¿Porque me funciona en netbeans todo Y NO EN EL TOMCAT A PELO?
¿Y porque todas las otras cosas me funcionan perfectamente tanto en tomcat como en netbeans+su tomcat embeded sin ningun problema, pero ESTA APLICACION EN CONCRETO, no?

Seria genial si alguien tuviera respuesta para esto, porque me está matando!!

Muchisimas grácias!

erdanblo

Lo más probable es que me equivoque, pero... no puede ser que el apache tengas configurada la política de mostrar errores a un nivel muy alto y por eso en vez de lanzar el error, lo que te lanza es la página en blanco.

Quizás viendo el error te puedas hacer una idea de lo que pasa (fallo en el conector, o el tema de localizaciones que comentas).

Dod-Evers

Cómo tienes los datos de conexión a la base de datos? Los tienes configurados en el netBeans? En un config del tomcat? haces la conexión "a pelo" o utilizas datasources?

bLaKnI

No he logrado cambiar la configuración de errores del tomcat! :(
Solo puedo cambiar los paths para el stderror, pero no veo que haga nada... :S

Y en cuanto a las conexiones, fabriqué un dao para encapsular, pero basicamente las conexiones son a pelo. No uso ni datasources, ni conectividad via Netbeans.

Es mediante el clásico:

...
Class.forName("com.mysql.jdbc.Driver").newInstance ();
conn = DriverManager.getConnection(url, login, password);
statement = conn.createStatement();
...

por asi ponerlo y con cambios, claro esta, ya que la conection la hago con una sola linea y con parametros (charset y otros).

Usuarios habituales

  • bLaKnI
  • Dod-Evers
  • erdanblo