Jboss部署问题整理

问题一:
ERROR [JBossContextConfig] XML error parsing: WEB-INF/context.xml    org.jboss.xb.binding.JBossXBRuntimeException: Failed to create a new SAX parser

解决方案:在Jboss的部署目录,找到刚刚部署的项目WebRoot/lib下,找到:xerces-2.6.2.jar和xml-apis.jar,删除即可!
问题二:
1.
ERROR [ContextLoader] Context initialization failed  org.springframework.context.ApplicationContextException: Failed to load custom context class [org.jboss.spring.vfs.context.VFSXmlWebApplicationContext]; nested exception is java.lang.ClassNotFoundException: org.jboss.spring.vfs.context.VFSXmlWebApplicationContext

解决方案:加入jboss-spring-int-vfs.jar 和 jboss-as-sprint-int-5.0.0.GA.jar两个jar包!下载地址:http://download.csdn.net/detail/tangkai_java/4434161
问题三:
你可能会出现以下二种错误的提示:

1(多见于spring mvc).
ERROR [DispatcherServlet] Context initialization failed
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'userController': Injection of autowired dependencies failed; nested exception is org.springframework.beans.factory.BeanCreationException: Could not autowire method: public void com.mvc.web.UserController.setUserService(com.mvc.service.UserService); nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No matching bean of type [com.mvc.service.UserService] found for dependency: expected at least 1 bean which qualifies as autowire candidate for this dependency. Dependency annotations: {}


2(多见于struts2).
Unable to instantiate Action, org.itec.tvecm.web.action.UserAction

核心修改方法:

classpath*:applicationContext*.xml,不会报错,但这样在jboss中是不会解析的。修改成:classpath:applicationContext.xml即可,若有多个,可以在applicationContext.xml进行引入!
问题四:
jboss 4.04是不是不支持注解

很明显它支持。
问题五:
Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name  'transactionManager'  defined in  class  path resource [spring/applicationContext-hibernate.xml]: Cannot resolve reference to bean  'sessionFactory'   while  setting bean property  'sessionFactory' ; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name  'sessionFactory'  defined in  class  path resource [spring/applicationContext-hibernate.xml]: Invocation of init method failed; nested exception is org.hibernate.AnnotationException: java.lang.NoSuchMethodException: org.hibernate.validator.ClassValidator.<init>

修改“JBOSS安装目录/server/default/deploy/jboss-web.deployer/META-INF”下的jboss-service.xml文件,改属性“UseJBossWebLoader”为true。
该属性原文解释如下:
A flag indicating if the JBoss Loader should be used. This loader uses a unified class loader as the class loader rather than the tomcat specific class loader.
The default is false to ensure that wars have isolated class loading for duplicate jars and jsp files.
该配置表明是否使用JBoss自身的classloader来加载webApp相关的资源;因为JBoss是通过集成Tomcat来实现Web Container的,而两者都有自己独立的classloader;
若设置为true,则表示Web应用加载时都将使用JBoss统一的classloader,即此时采用共享的扁平的UnifiedClassLoader;
若设置为false,则表示Web应用采用自己独立的WebAppClassLoader进行加载,此时Web应用和JBoss之间是完全隔离的,这也是该配置项的默认值;
问题六:(jboss5)
ERROR [JBossContextConfig] XML error parsing: context.xml  
org.jboss.xb.binding.JBossXBRuntimeException: Failed to create a new  SAX parser  
        at org.jboss.xb.binding.UnmarshallerFactory$UnmarshallerFactoryImpl.newUnmarshaller(UnmarshallerFactory.java:100 )   


分析可能与问题五类似,存在 classloader 问题,参考 JBoss 社区资料( http://community.jboss.org/wiki/classloadingconfiguration ),设置 Web 应用加载时使用 JBoss 统一的 classloader 。具体操作方法为:在 WEB-INF 下增加 jboss-web.xml :


<!DOCTYPE jboss-web PUBLIC "-//JBoss//DTD Web Application 5.0//EN" "http://www.jboss.org/j2ee/dtd/jboss-web_5_0.dtd">     
<jboss-web>     
<class-loading   java2ClassLoadingCompliance = "true">   
    <loader-repository>   
    com.example:archive =  unique -archive-name  
    <loader-repository-config>   
        java2ParentDelegation = true   
    </loader-repository-config>   
    </loader-repository>   
</class-loading>   

</jboss-web>  


说明: com.example:archive=unique-archive-name 代表 jar 仓库的对象名 objectName ,其中 ,com.example 可以随意取, unique-archive-name 就用部署包的名字即可,例如 com.example:archive=demo.war ,保证这一串唯一即可。
详细说明可以通过 google 搜索“ JBoss 类隔离”。
问题七:(jboss5)
ERROR [ContextLoader] Context initialization failed  
org.springframework.beans.factory.BeanDefinitionStoreException: I/O failure during classpath scanning; nested exception is java.io.FileNotFoundException: C:/JavaPro/jboss-5.1 . 0 .GA/server/ default /deploy/demo.war/WEB-INF/lib/demo.jar/com/demo (系统找不到指定的路径。)

参考 https://jira.springframework.org/browse/SPR-5120 ,下载 jboss-as-sprint-int-5.0.0.GA.jar 和 jboss-spring-int-vfs.jar ,拷贝至 Web 应用的 lib 下,修改 web.xml ,加入:


<context-param>  
<param-name>contextClass</param-name>  
<param-value>org.jboss.spring.vfs.context.VFSXmlWebApplicationContext</param-value>  
</context-param>  


以上是我在移植时遇到的问题,记录下来方便大家查阅,希望后来的人不要被这几个问题纠结,同时也欢迎大家批评指正以及贴出自己遇到的问题及解决方案!
  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

e421083458

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值