struts2启动报错com/opensymphony/xwork2/spring/SpringObjectFactory.java:220:-1

好久没有搞struts2,今天配置strut2.2.1,启动时遇到个小问题。记录下。

tomcat启动报错:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
Class: com.opensymphony.xwork2.spring.SpringObjectFactory
File: SpringObjectFactory.java
Method: getClassInstance
Line:  220  - com/opensymphony/xwork2/spring/SpringObjectFactory.java: 220 :- 1
     at org.apache.struts2.dispatcher.Dispatcher.init(Dispatcher.java: 428 )
     at org.apache.struts2.dispatcher.ng.InitOperations.initDispatcher(InitOperations.java: 69 )
     at org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter.init(StrutsPrepareAndExecuteFilter.java: 51 )
     at org.apache.catalina.core.ApplicationFilterConfig.getFilter(ApplicationFilterConfig.java: 295 )
     at org.apache.catalina.core.ApplicationFilterConfig.setFilterDef(ApplicationFilterConfig.java: 422 )
     at org.apache.catalina.core.ApplicationFilterConfig.<init>(ApplicationFilterConfig.java: 115 )
     at org.apache.catalina.core.StandardContext.filterStart(StandardContext.java: 3838 )
     at org.apache.catalina.core.StandardContext.start(StandardContext.java: 4488 )
     at org.apache.catalina.core.ContainerBase.start(ContainerBase.java: 1045 )
     at org.apache.catalina.core.StandardHost.start(StandardHost.java: 785 )
     at org.apache.catalina.core.ContainerBase.start(ContainerBase.java: 1045 )
     at org.apache.catalina.core.StandardEngine.start(StandardEngine.java: 443 )
     at org.apache.catalina.core.StandardService.start(StandardService.java: 519 )
     at org.apache.catalina.core.StandardServer.start(StandardServer.java: 710 )
     at org.apache.catalina.startup.Catalina.start(Catalina.java: 581 )
     at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
     at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java: 39 )
     at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java: 25 )
     at java.lang.reflect.Method.invoke(Method.java: 585 )
     at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java: 289 )
     at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java: 414 )
Caused by: java.lang.NullPointerException
     at com.opensymphony.xwork2.spring.SpringObjectFactory.getClassInstance(SpringObjectFactory.java: 220 )

原理:

查看struts2插件struts2-spring-plugin中的strtus-plugin.xml

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
< struts >
     < bean  type = "com.opensymphony.xwork2.ObjectFactory"  name = "spring"  class = "org.apache.struts2.spring.StrutsSpringObjectFactory"  />
     
     <!--  Make the Spring object factory the automatic default -->
     < constant  name = "struts.objectFactory"  value = "spring"  />
 
 
     < constant  name = "struts.class.reloading.watchList"  value = ""  />
     < constant  name = "struts.class.reloading.acceptClasses"  value = ""  />
     < constant  name = "struts.class.reloading.reloadConfig"  value = "false"  />
 
     < package  name = "spring-default" >
         < interceptors >
             < interceptor  name = "autowiring"  class = "com.opensymphony.xwork2.spring.interceptor.ActionAutowiringInterceptor" />
             < interceptor  name = "sessionAutowiring"  class = "org.apache.struts2.spring.interceptor.SessionContextAutowiringInterceptor" />
         </ interceptors >
     </ package >   
</ struts >

注意下面部分,表明该插件引入工程后,会自动设置Struts的ObjectFactory为StrutsSpringObjectFactory,从而让Spring的IOC容器来托管Struts的Action。所以导致了启动的问题。

 

1
2
3
<bean type= "com.opensymphony.xwork2.ObjectFactory"  name= "spring"  class = "org.apache.struts2.spring.StrutsSpringObjectFactory"  />
<!--  Make the Spring object factory the automatic  default  -->
<constant name= "struts.objectFactory"  value= "spring"  /> 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值