Jboss从4到5的版本的变化是比较大的,主要是它对包的冲突限制非常严格,在4版本中基本上不是非常严格,如果有包冲突,会自动选择,但在5中回出非常多的转换异常错误,导致项目无法发布,或是发布完成后无法访问,现把这次升级中遇到的错误及解决办法记录如下.
1 The method getJspApplicationContext(ServletContext) is undefined for the type JspFactory
将工程路径下的WebRoot下的WEB-INF下的lib里的jsp-api-2.0.jar,servlet-api-2.4.jar删除就OK 了,应该是工程里自带的这两个文件和TOMCAT里的文件冲突导致的ok!
2 org.jboss.util.NestedSQLException: Could not create connection; - nested throwable: (java.lang.NullPointerException); - nested throwable: (org.jboss.resource.JBossResourceException: Could not create connection; - nested throwable: (java.lang.NullPointerException))
这个是由于配置了数据库的连接池,但是lib中没有相应的连接数据库的驱动,无法产生连接.
3
1,Jboss 在启动时报Failed to create a new SAX parser 错误。
2,Jboss 在启动时报(java.lang.ClassNotFoundException: JACC:Error PolicyConfigurationFactory : cannot find class : null)
解决方案
1,删除 xerces*.jar 和xml-apis*.jar,解决XML 解析器实现冲突。
2,删除jaas.jar and jcr*.jar,解决jaas 实现冲突。
4
java.lang.ClassCastException: gnu.xml.aelfred2.JAXPFactory cannot be cast to javax.xml.parsers.SAXParserFactory
原因为:
项目中的gnujaxp.jar和服务器上的java xml解析器冲突.
5
Getting java.lang.ClassCastException: org.apache.catalina.connector.RequestFacade cannot be cast to javax.servlet.http.HttpServletRequest
这个是由于项目中包含的Servlet.jar和服务器上的jar发生了冲突.
6 JBoss是自带Hibernate的绝大多数库文件的,所以IDE引入的Hibernate相关库绝对不能随着项目打包,做法同上,把“package”的勾选去掉即可。我曾被这个问题困扰,因为将Hibernate打进war包的结果就是JBoss将在程序运行的时候报出下面的错误信息:
org.jboss.resource.adapter.jdbc.WrapperDataSource cannot be cast to javax.sql.DataSource
这个问题非常的搞,即使把hibernate等的包都搞掉可能还会出问题,我在这边被搞了好久,还好解决了,
总结一下
1 可能是hibernate包冲突问题.
2 可能是项目中的数据库驱动和服务器上数据库驱动重复,导致冲突
3 这个很隐蔽,可能有的包中含有Javax.sql.DataSource,也会冲突,我查到的就有一个,class12.jar
总之来说Jboss5是一个很让人头疼的版本.