struts2升级后在tomcat后台报not a Jboss5 提示

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,

[img]http://dl2.iteye.com/upload/attachment/0104/7436/e2cf215b-b778-32c1-8c83-99be694bba68.png[/img]

[img]http://dl2.iteye.com/upload/attachment/0104/7438/e0200bd2-6839-33d5-89c9-6c78193c1b57.png[/img]

。而FileManager会用来加载xml配置文件和action中的配置信息。(OsgiConfigurationProvider类中),action中的配置这块是给super中的struts config用的。

这里用来加载xml配置文件

[img]http://dl2.iteye.com/upload/attachment/0104/7440/4d1a8ded-49d5-3faa-b513-3de5ba6d1bf3.png[/img]


这里用来加载action类

[img]http://dl2.iteye.com/upload/attachment/0104/7442/e5ec14cb-73b0-3268-b98f-f7a6cdb826b3.png[/img]

这是最终加载action类的逻辑

[img]http://dl2.iteye.com/upload/attachment/0104/7444/ba4018a0-05e3-3f5e-95b7-880b30de1092.png[/img]


[img]http://dl2.iteye.com/upload/attachment/0104/7446/f5a1343e-7d50-3265-96fd-72566f4ef41d.png[/img]

每次要使用FileManager,容器中只有两个 system和jboss,因此会判断是否是jboss环境,不是的话采用system,因此在OSGi环境下查找多个配置文件和action类便出现了很多次判断是否是jboss。
再验证问题的过程中,发现以上逻辑走了两遍,因为我们在web.xml中配了StrutsListener和StrutsPrepareFilter,这两个都是struts入口,都会初始化dispatcher,加载xml配置和action中的配置。

[img]http://dl2.iteye.com/upload/attachment/0104/7448/427533f5-27dc-3290-bb9e-e78448d4f54d.png[/img]

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后尚未发现有影响。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
YOLO高分设计资源源码,详情请查看资源内容中使用说明 YOLO高分设计资源源码,详情请查看资源内容中使用说明 YOLO高分设计资源源码,详情请查看资源内容中使用说明 YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值