Java & Tomcat : Severe Error starting obfuscated app w/hibernate inside

标签 java hibernate tomcat obfuscation war

这有点难以解释..

我正在使用 tomcat 6.0 来测试部署 WAR 文件。我正在使用 proGuard 来混淆 WAR 文件。

要使用 proGuard,通常位于 WEB-INF/classes 中的所有 com.*、org.* 等都必须打包到 WEB-INF/lib 中的单个 .jar 中。

到目前为止还不错。

当我部署时,问题就来了。该应用程序使用 Hibernate 和一个 hibernate 监听器。此监听器无法加载。由此我了解到,已经找到并至少开始使用具有完整类集的 .jar。但是, hibernate 监听器的失败会结束应用程序的部署,并且什么也不会出现,甚至索引页面也不会出现。

我的日志文件(设置为 DEBUG)给我:

[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...

然后停止。

卡塔利娜给我:

11-Nov-2011 10:21:35 org.apache.catalina.core.StandardContext start
SEVERE: Error listenerStart

有没有人有过让 hibernate 在可混淆的 war 中运行的经验( war 实际上还没有被混淆,它只是以 proGuard 需要的格式设置以便混淆),一个独立的 jar,或者甚至只是如何获得更精确的日志记录!

谢谢

更新: 我以为 Tomcat 正在找到 com.* 类等所在的 jar ,但现在我不确定。有谁知道如何使用 web.xml 指向 WEB-INF/lib 文件夹中的特定 .jar 文件?

目前是,例如:

<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...

但所有这些路径都需要指向 .jar 文件中。或者 web.xml 中的属性需要定义可以找到这些路径的位置。

谢谢

最佳答案

已解决。

对于遇到相同问题的任何人:我最终使用 WEB-INF/classes 中的 logging.properties 文件使日志记录正常工作。我在许多论坛帖子中找到的设置就是为了这种可能性。主要设置是 DEBUG 以捕捉最大的细节。

这个日志记录让我看到缺少一个 jar,我之前把它放在 /WEB-INF/lib 文件夹中,但是应用程序看不到它所以我不得不把/src/ 文件夹中的类并重新编译。无论如何它都有效。

我仍然对 WAR 混淆的其他元素存在重大问题,但这些是针对其他问题的。

-S

关于Java & Tomcat : Severe Error starting obfuscated app w/hibernate inside,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8092770/

相关文章:

java - 分离的实体传递到持久化 : JPA inheritance

Spring security - 身份验证在几天后停止工作 - 需要重启

linux - 从 tomcat 日志中提取 ORACLE 错误列表

tomcat - 尝试使用 intellij 部署时服务器未连接

java - 为什么这个逻辑对于整数回文是错误的

java - 用于捕获包含逗号和空格的数字和单词的复杂正则表达式

java - 何时使用 @JsonProperty 属性以及它的用途是什么?

java - 如何确定给定 Maven 依赖项的来源?

java - 带有命名参数的 hibernate 查询没有给出结果

java - 如何在 JPA 中查询多对多关系中的实体列表?