Das ist ein bisschen schwer zu erklären.
Ich verwende Tomcat 6.0, um die Bereitstellung einer WAR-Datei zu testen. Ich verwende proGuard, um die WAR-Datei zu verschleiern.
Um proGuard zu verwenden, müssen alle com.*, org.* usw., die sich normalerweise in WEB-INF/classes befinden würden, in ein einziges .jar in WEB-INF/lib gepackt werden.
So weit so gut.
Das Problem tritt auf, wenn ich sie einsetze. Die App verwendet Hibernate und einen Hibernate-Listener. Dieser Listener kann nicht geladen werden. Daraus schließe ich, dass die .jar-Datei mit dem kompletten Satz an Klassen gefunden wurde und zumindest begonnen hat, genutzt zu werden. Das Fehlschlagen des Hibernate-Listeners beendet jedoch die Bereitstellung der Anwendung und es wird nichts angezeigt, nicht einmal die Indexseite.
Meine Protokolldatei (auf DEBUG eingestellt) zeigt mir:
[2011-11-11 10:19:33] [1381 prunsrv.c] [debug] Commons Daemon procrun log initialized
[2011-11-11 10:19:33] [info] Commons Daemon procrun (1.0.2.0) started
[2011-11-11 10:19:33] [info] Running Service...
[2011-11-11 10:19:33] [1165 prunsrv.c] [debug] Inside ServiceMain...
[2011-11-11 10:19:33] [info] Starting service...
[2011-11-11 10:19:33] [447 javajni.c] [debug] Jvm Option[0] -Dcatalina.home=C:\tomcat\Tomcat 6.0
[2011-11-11 10:19:33] [447 javajni.c] [debug] Jvm Option[1] -Dcatalina.base=C:\tomcat\Tomcat 6.0
[2011-11-11 10:19:33] [447 javajni.c] [debug] Jvm Option[2] -Djava.endorsed.dirs=C:\tomcat\Tomcat 6.0\endorsed
[2011-11-11 10:19:33] [447 javajni.c] [debug] Jvm Option[3] -Djava.io.tmpdir=C:\tomcat\Tomcat 6.0\temp
[2011-11-11 10:19:33] [447 javajni.c] [debug] Jvm Option[4] -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager
[2011-11-11 10:19:33] [447 javajni.c] [debug] Jvm Option[5] -Djava.util.logging.config.file=C:\tomcat\Tomcat 6.0\conf\logging.properties
[2011-11-11 10:19:33] [447 javajni.c] [debug] Jvm Option[6] -Djava.class.path=C:\tomcat\Tomcat 6.0\bin\bootstrap.jar
[2011-11-11 10:19:33] [447 javajni.c] [debug] Jvm Option[7] vfprintf
[2011-11-11 10:19:33] [629 javajni.c] [debug] argv[0] = start
[2011-11-11 10:19:33] [655 javajni.c] [debug] Java Worker thread started org/apache/catalina/startup/Bootstrap:main
[2011-11-11 10:19:34] [1006 prunsrv.c] [debug] Java started org/apache/catalina/startup/Bootstrap
[2011-11-11 10:19:34] [info] Service started in 1138 ms.
[2011-11-11 10:19:34] [1272 prunsrv.c] [debug] Waiting worker to finish...
und hält dann an.
Catalina gibt mir:
11-Nov-2011 10:21:35 org.apache.catalina.core.StandardContext start
SEVERE: Error listenerStart
Hat jemand Erfahrung damit, hibernate innerhalb eines obfuscatable war (war ist nicht wirklich obfuscated noch, es ist nur in das Format proGuard muss es sein, um zu obfuscate), ein unabhängiges jar, oder auch nur, wie man eine genauere Protokollierung!
Danke
UPDATE: Ich dachte, dass Tomcat das Jar findet, in dem sich die com.*-Klassen usw. befinden, aber jetzt bin ich mir unsicher. Weiß jemand, wie man die web.xml verwendet, um in ein bestimmtes .jar im WEB-INF/lib-Ordner zu zeigen?
Derzeit ist das zum Beispiel so:
<listener>
<listener-class>com.*etc*.HibernateListener</listener-class>
</listener>
<servlet>
<servlet-name>Application Name</servlet-name>
<servlet-class>com.vaadin.terminal.gwt.server.ApplicationServlet</servlet-class>
etc etc...
aber alle diese Pfade müssen in eine .jar-Datei zeigen. Oder aber eine Eigenschaft in der web.xml muss definieren, wo diese Pfade zu finden sind.
Danke