用MyEclipse+struts+hibernate测试时遇到的问题
由于工作原因,使用了MyEclipse+Struts1.2+Hibernate3.1+Spring2.0框架写程序,刚开始的时候在Tomcat6.0上写,后来上面的领导非要弄到Resin3.0上,具体原因不清楚,没办法,照办吧。
把MyEclipse下自动生成的SSH结构直接发布到Resin3.0上,结果痛苦便开始了,弹出错误说什么
21:13:32,500 ERROR Digester:686 - Digester.getParser: |
还有其他错误,总之就是xml解析异常,后来经过好多次试验总结后发现,如果单独部署Hibernate或Spring或Struts或Spring+Struts都是没有问题的,但只要把Hibernate加进来,就肯定会出Strtus的配置文件无法初始化的错误,后来研究了一下Hibernate项目添加进来的包文件,经过研究,把一下几个包从里面删除:
commons-collections-2.1.1.jar |
与Struts加入的包功能重复 |
antlr-2.7.5H3.jar |
与Struts加入的包功能重复 |
commons-logging-1.0.4.jar |
与Struts加入的包功能重复 |
xerces-2.6.2.jar、xml-apis.jar |
一套xml解析器 |
经过查阅无数的资料(当然了是通过Google和Baidu)得到如下结论
用 hibernate2 需要hibernate2.jar;用 hibernate3 需要 hibernate3.jar和antlr-2.7.5H3.jar
然后加入Struts1.2,
添加到Resin3.0中运行一下吧,看没问题。嘿嘿。。暂时没问题,
附录:Hibernate中不必要的类库
ant.jar和optional.jar |
Ant使用的 |
c3p0.jar |
一个数据库连接池 |
proxool.jar |
一个数据库连接池 |
commons-pool.jar, commons-dbcp.jar |
DBCP数据库连接池,罗嗦啊,tomcat也有这个 |
connector.jar |
JCA 规范,如果你在App Server上把Hibernate配置为Connector的话,就需要这个jar。不过实际上一般App Server肯定会带上这个包,所以实际上是多余的包。 |
jaas.jar |
JAAS是用来进行权限验证的,已经包含在JDK1.4里面了 |
jcs.jar |
如果你准备在Hibernate中使用JCS的话,那么必须包括它,否则就不用 |
jdbc2_0-stdext.jar |
JDBC2.0的扩展包,一般来说数据库连接池会用上它。不过App Server都会带上 |
jta.jar |
JTA规范,当Hibernate使用JTA的时候需要,不过App Server都会带上 |
junit.jar |
Junit包,当你运行Hibernate自带的测试代码的时候需要,否则就不用 |
xalan.jar, xerces.jar, xml-apis.jar |
Xerces是XML解析器,Xalan是格式化器,xml-apis实际上是JAXP。一般App Server都会带上,JDK1.4也包含了解析器,不过不是Xerces,是Crimson,效率比较差,不过Hibernate用XML只不过是读取配置文件,性能没什么紧要的,所以也是多余的。而且也是罪恶的根源,不定哪个有冲突了。 |