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 文件进行了日志记录。 .我在许多论坛帖子中找到了设置,只是为了解决这种情况。主要设置是调试以捕捉最大的细节。

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

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

-S

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

相关文章:

java - 我如何知道为使用JDBC的批处理更新创建了哪些自动增量值?

java - Phonegap导出到Android

java - Spring Data JPA查询

java - HQL不返回任何结果,但生成的SQL在SQL Developer上运行良好

java - 安卓工作室 : SavedInstanceState of object doesn't work

java - 在 jre 中更新 gzip 库

java - 如何在 hibernate 中使用数据库作为备份/故障转移?

tomcat - Icefaces 1.8 webapp中使用Tomcat的ThreadLocal内存泄漏

tomcat - IntelliJ 和 TomEE 7.0.1 JMX 未连接

java - Tomcat 7 部署问题