1.问题:
在Tomcat启动时会在struts2初始化时提示 org.apache.struts2.util.fs.JBossFileManager DEBUG Cannot load [org.jboss.vfs.VirtualFile] class, not a JBoss 7!
整个启动过程中大概有468条类似信息,按道理来说 tomcat启动不应该报非jboss,而且即使他采用策略模式也不应该报这么多次。
2.问题原因:
struts2从大概2.3.7版本后调整了FileManager类结果,将JBoss的逻辑分离出来,在容器初始化时如果没有用户自定义的FileManager,会默认使用JbossFileManager,
。而FileManager会用来加载xml配置文件和action中的配置信息。(OsgiConfigurationProvider类中),action中的配置这块是给super中的struts config用的。
这里用来加载xml配置文件
这里用来加载action类
这是最终加载action类的逻辑
每次要使用FileManager,容器中只有两个 system和jboss,因此会判断是否是jboss环境,不是的话采用system,因此在OSGi环境下查找多个配置文件和action类便出现了很多次判断是否是jboss。
再验证问题的过程中,发现以上逻辑走了两遍,因为我们在web.xml中配了StrutsListener和StrutsPrepareFilter,这两个都是struts入口,都会初始化dispatcher,加载xml配置和action中的配置。
3.解决方案:
A.自定义一个FileManager和FileManagerFactory,继承默认实现,创建缓存,不再重复生成FileManager.并在Struts.xml和web.xml中配置参数,使其不再使用JBossFileManager.
B.上一步只能解决StrutsPrepareFilter初始化Dispatcher过程,而StrutsListener初始化Dispatcher时是不支持自定义参数的,因此还会使用默认的JBossFileManager,因此考虑去掉此Listener,这样就不会
重复初始化Dispatcher过程了,也会加快系统的启动过程。
查询资料StrutsListener是用来向其他servlet listener提供struts config信息的,比如 sitemesh和osgi,否则 推荐使用StrutsPrepareAndExecuteFilter。
The preferred way to use Struts is as a filter via the
* {@link org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter} and its variants.
* This might be useful if Struts config information is needed from other servlet listeners, like
* Sitemesh or OSGi
目前去掉此strutsListener后尚未发现有影响。
- 大小: 10.2 KB
- 大小: 27.2 KB
- 大小: 13.9 KB
- 大小: 10.1 KB
- 大小: 25.9 KB
- 大小: 19.9 KB
- 大小: 11.6 KB
分享到:
相关推荐
web工程从TOMCAT移植到JBOSS中
jboss4版本下,jbossweb-tomcat55.sar升级包,修复Apache Tomcat DIGEST身份验证多个安全漏洞(CVE-2012-3439) 升级包中的jar来源于tomcat5.5.36 使用方法:直接替换jboss中旧的jbossweb-tomcat55.sar
apache 集成 jboss 或者 tomcat 必须文件,window下专用
java项目tomcat迁移到jboss 出现的问题
TOMCAT项目转成JBOSS项目的步骤
tomcat、jboss 连接池配置,详细步骤,准确代码,让你实践中学会这两种服务器的连接池配置
jBoss+tomcat学习笔记大全,jBoss+tomcat的帮助文档
Jboss7上+maven搭建struts2+spring3+hibernate3完整能运行工程源码,在tomcat7上运行也成功测试了,注意:我工程文件是用myeclipse2013开发的,你需要导入自己ide的时候,会有兼容性问题:最好阁下是自己新建一个maven...
除了加入jboss-web.xml,删除xerces-2.6.2.jar和xml-apis.jar之外, <!DOCTYPE jboss-web PUBLIC "-//JBoss//DTD Web ...原因是旧版本的slf4j-api不包含以上方法,附件解压后覆盖jboss5.1GA/common/lib下的同名文件即可
jboss漏洞和struts漏洞的详细解决方法
如何将代码从Tomcat迁移到JBoss
tomcat转化为jboss之前遇到过,弄了很久终于解决了,现在把所有资料整理到了一起,包括解决在集成中会遇到的问题,所要添加的jar包、删除的jar包等等
Tomcat应用也算非常广泛的web 服务器,支持部分j2ee,免费,出自 apache基金组织 JBoss开源的应用服务器,比较受人喜爱,免费(文档要收费) weblogic应该说算是业界第一的app server,全部支持j2ee1.4, 对于...
Tomcat下web工程调用JBOSS部署的EJB项目 此源码包 包括local本地调用及remote远程调用 文档说明在http://blog.csdn.net/heardy/article/details/6906225
此文档描述了tomcat、weblogic、jboss的区别,并且根据不同的环境运用不同的容器,做了解析。
Struts2及jboss漏洞利用工具。非常好用本人几经尝试过。 Struts2的漏洞实用工具 ,以及jboss的jar cmd运行代码,良心出品
tomcat 和jboss 的区别基于Tomcat内核基于Tomcat内核的JBoss在J2EE应用服务器领域已成为发展最为迅速的应用服务器Tomcat的区别又在哪里
JBOSS+TOMCAT集成开发环境。完整版
JBoss+Tomcat已经成为一个免费的开源的稳定的J2EE服务器,虽然在JBoss中部署J2EE没有商用J2EE服务器那么方便,基本都是通过手工编写XML配置文件,但是这样可以让我们更容易理解J2EE的来龙去脉。本文以Jboss 2为例,...
Weblogic、Tomcat、Apache、JBoss、IIS之间的区别.Weblogic.Tomcat.Apache.JBoss?都基于java的基础架构??