Spring整合XFire的注入问题

来源:互联网 发布:股票交易编程 编辑:程序博客网 时间:2024/06/05 18:30

Spring整合XFire的注入问题

分类: Spring2009-11-21 00:53 3345人阅读 评论(2) 收藏 举报
springwebserviceservletexceptionnestedsoap

给WebService注入其他类的时候,报空指针错误。

web.xml配置如下:

[xhtml] view plaincopyprint?
  1. <servlet>  
  2.   <servlet-name>XFireServlet</servlet-name>  
  3.   <servlet-class>org.codehaus.xfire.transport.http.XFireConfigurableServlet</servlet-class>  
  4.   <load-on-startup>0</load-on-startup>  
  5.  </servlet>  

 

 

结果当webservice调用webservice服务时,报错:

[xhtml] view plaincopyprint?
  1. org.codehaus.xfire.XFireRuntimeException: Could not invoke service.. Nested exception is org.codehaus.xfire.fault.XFireFault: Fault: java.lang.NullPointerException  
  2. org.codehaus.xfire.fault.XFireFault: Fault: java.lang.NullPointerException  
  3.     at org.codehaus.xfire.fault.Soap11FaultSerializer.readMessage(Soap11FaultSerializer.java:31)  
  4.     at org.codehaus.xfire.fault.SoapFaultSerializer.readMessage(SoapFaultSerializer.java:28)  
  5.     at org.codehaus.xfire.soap.handler.ReadHeadersHandler.checkForFault(ReadHeadersHandler.java:111)  
  6.     at org.codehaus.xfire.soap.handler.ReadHeadersHandler.invoke(ReadHeadersHandler.java:67)  
  7.     at org.codehaus.xfire.handler.HandlerPipeline.invoke(HandlerPipeline.java:131)  
  8.     at org.codehaus.xfire.client.Client.onReceive(Client.java:406)  
  9.     at org.codehaus.xfire.transport.http.HttpChannel.sendViaClient(HttpChannel.java:139)  
  10.     at org.codehaus.xfire.transport.http.HttpChannel.send(HttpChannel.java:48)  
  11.     at org.codehaus.xfire.handler.OutMessageSender.invoke(OutMessageSender.java:26)  
  12.     at org.codehaus.xfire.handler.HandlerPipeline.invoke(HandlerPipeline.java:131)  
  13.     at org.codehaus.xfire.client.Invocation.invoke(Invocation.java:79)  
  14.     at org.codehaus.xfire.client.Invocation.invoke(Invocation.java:114)  
  15.     at org.codehaus.xfire.client.Client.invoke(Client.java:336)  
  16.     at org.codehaus.xfire.client.XFireProxy.handleRequest(XFireProxy.java:77)  
  17.     at org.codehaus.xfire.client.XFireProxy.invoke(XFireProxy.java:57)  
  18.     at $Proxy0.btsPower(Unknown Source)  
  19.     at com.boco.veh.ws.test.WSTest.main(WSTest.java:36)  

 

 

 

 

 

 

这个问题可以通过如下配置解决。

 

[xhtml] view plaincopyprint?
  1. <servlet>  
  2.  <servlet-name>XFireServlet</servlet-name>  
  3.  <!-- 不整合时使用org.codehaus.xfire.transport.http.XFireConfigurableServlet -->  
  4.  <servlet-class>org.codehaus.xfire.spring.XFireSpringServlet</servlet-class>  
  5.  <load-on-startup>0</load-on-startup>  
  6. </servlet>  
  7. <servlet-mapping>  
  8.  <servlet-name>XFireServlet</servlet-name>  
  9.  <url-pattern>/servlet/XFireServlet/*</url-pattern>  
  10. </servlet-mapping>  
  11.   
  12. <servlet-mapping>  
  13.  <servlet-name>XFireServlet</servlet-name>  
  14.  <url-pattern>/services/*</url-pattern>  
  15. </servlet-mapping>  
  16. <listener>  
  17.  <listener-class>  
  18.   org.springframework.web.context.ContextLoaderListener  
  19.  </listener-class>  
  20. </listener>  
  21. <context-param>  
  22.  <param-name>contextConfigLocation</param-name>  
  23.  <param-value>classpath:org/codehaus/xfire/spring/xfire.xml,/WEB-INF/applicationContext.xml</param-value>  
  24. </context-param>  

 

xfire不整合spring时,使用

org.codehaus.xfire.transport.http.XFireConfigurableServlet

xfire整合spring时,使用

org.codehaus.xfire.spring.XFireSpringServlet