struts2 spring集成的一个小问题

今天作struts2和spring的集成,由于以前我们的开发框架webwork+spring所以按照以前的思路进行修改了配置文件的路径,也就是自定义了config的配置,然后出现如下问题:

com.opensymphony.xwork2.inject.DependencyException: com.opensymphony.xwork2.inject.ContainerImpl$MissingDependencyException: No mapping found for dependency [type=com.opensymphony.xwork2.ObjectFactory, name='default'] in public void com.opensymphony.xwork2.config.providers.XmlConfigurationProvider.setObjectFactory(com.opensymphony.xwork2.ObjectFactory).
 at com.opensymphony.xwork2.inject.ContainerImpl.addInjectorsForMembers(ContainerImpl.java:157)
 at com.opensymphony.xwork2.inject.ContainerImpl.addInjectorsForMethods(ContainerImpl.java:126)
 at com.opensymphony.xwork2.inject.ContainerImpl.addInjectors(ContainerImpl.java:103)
 at com.opensymphony.xwork2.inject.ContainerImpl.addInjectors(ContainerImpl.java:99)
 at com.opensymphony.xwork2.inject.ContainerImpl$1.create(ContainerImpl.java:84)
 at com.opensymphony.xwork2.inject.ContainerImpl$1.create(ContainerImpl.java:82)
 at com.opensymphony.xwork2.inject.util.ReferenceCache$CallableCreate.call(ReferenceCache.java:155)
 at java.util.concurrent.FutureTask$Sync.innerRun(Unknown Source)
 at java.util.concurrent.FutureTask.run(Unknown Source)
 at com.opensymphony.xwork2.inject.util.ReferenceCache.internalCreate(ReferenceCache.java:81)
 at com.opensymphony.xwork2.inject.util.ReferenceCache.get(ReferenceCache.java:121)
 at com.opensymphony.xwork2.inject.ContainerImpl.inject(ContainerImpl.java:452)
 at com.opensymphony.xwork2.inject.ContainerImpl$6.call(ContainerImpl.java:492)
 at com.opensymphony.xwork2.inject.ContainerImpl$6.call(ContainerImpl.java:491)
 at com.opensymphony.xwork2.inject.ContainerImpl.callInContext(ContainerImpl.java:542)
 at com.opensymphony.xwork2.inject.ContainerImpl.inject(ContainerImpl.java:490)
 at com.opensymphony.xwork2.config.impl.DefaultConfiguration.reload(DefaultConfiguration.java:151)
 at com.opensymphony.xwork2.config.ConfigurationManager.getConfiguration(ConfigurationManager.java:52)
 at org.apache.struts2.dispatcher.Dispatcher.init_PreloadConfiguration(Dispatcher.java:395)
 at org.apache.struts2.dispatcher.Dispatcher.init(Dispatcher.java:452)
 at org.apache.struts2.dispatcher.FilterDispatcher.init(FilterDispatcher.java:201)
 at com.inspur.communication.platform.startup.PlatformDispatcher.init(PlatformDispatcher.java:48)
 at org.apache.catalina.core.ApplicationFilterConfig.getFilter(ApplicationFilterConfig.java:221)
 at org.apache.catalina.core.ApplicationFilterConfig.setFilterDef(ApplicationFilterConfig.java:302)
 at org.apache.catalina.core.ApplicationFilterConfig.<init>(ApplicationFilterConfig.java:78)
 at org.apache.catalina.core.StandardContext.filterStart(StandardContext.java:3635)
 at org.apache.catalina.core.StandardContext.start(StandardContext.java:4222)
 at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:760)
 at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:740)
 at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:544)
 at org.apache.catalina.startup.HostConfig.deployDescriptor(HostConfig.java:626)
 at org.apache.catalina.startup.HostConfig.deployDescriptors(HostConfig.java:553)
 at org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:488)
 at org.apache.catalina.startup.HostConfig.start(HostConfig.java:1149)
 at org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:311)
 at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:120)
 at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1022)
 at org.apache.catalina.core.StandardHost.start(StandardHost.java:736)
 at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1014)
 at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:443)
 at org.apache.catalina.core.StandardService.start(StandardService.java:448)
 at org.apache.catalina.core.StandardServer.start(StandardServer.java:700)
 at org.apache.catalina.startup.Catalina.start(Catalina.java:552)
 at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
 at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
 at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
 at java.lang.reflect.Method.invoke(Unknown Source)
 at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:295)
 at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:433)
Caused by: com.opensymphony.xwork2.inject.ContainerImpl$MissingDependencyException: No mapping found for dependency [type=com.opensymphony.xwork2.ObjectFactory, name='default'] in public void com.opensymphony.xwork2.config.providers.XmlConfigurationProvider.setObjectFactory(com.opensymphony.xwork2.ObjectFactory).
 at com.opensymphony.xwork2.inject.ContainerImpl.createParameterInjector(ContainerImpl.java:239)
 at com.opensymphony.xwork2.inject.ContainerImpl.getParametersInjectors(ContainerImpl.java:229)
 at com.opensymphony.xwork2.inject.ContainerImpl$MethodInjector.<init>(ContainerImpl.java:282)
 at com.opensymphony.xwork2.inject.ContainerImpl$3.create(ContainerImpl.java:130)
 at com.opensymphony.xwork2.inject.ContainerImpl$3.create(ContainerImpl.java:128)
 at com.opensymphony.xwork2.inject.ContainerImpl.addInjectorsForMembers(ContainerImpl.java:154)

查询了半天,看网上有人碰到过,但是没有解决,于是分析代码进行查询原因,原因就是配置文件struts配置文件没有找到,于是想到了修改的配置,经过查询代码发现了这个问题,就是如果你要是修改了config,以后所有的配置只会读取配置的文件,所以struts-spring.jar等插件都采用的default的配置,所以会出错,故修改config的配置,把default的文件全部添加上,然后再添加上自己的配置文件,本来可以采用Dispatcher的DEFAULT_CONFIGURATION_PATHS然后添加自己的配置文件就可以,但是发现这个变量是private的,所有只能把里面的内容全部拷贝出来,所以这个地方的扩展自定义功能也是没有太大意义的。

  <param-name>config</param-name>
  <param-value>
   /WEB-INF/conf/platform-web.xml,struts-default.xml,struts-plugin.xml,struts.xml
  </param-value>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值