Spring WS中的自动装配导致空指针

时间:2015-11-17 22:27:27

标签: spring web-services soap cxf

自从我使用Spring以来,已经很长时间了,我第一次从头开始在Web服务上设置Spring,所以...我可能会在这里问一些愚蠢的问题。

我的服务及其所有bean都是使用CXF构建的。实现者的相关部分如下所示:

...

@WebService(
            endpointInterface = "mil.army.sddc.ibs.ccr.datamgmt.DataMgmtPortType",
            name="DataMgmt_Service",
            portName="DataMgmt_Port",
            targetNamespace = "http://ccr.ibs.sddc.army.mil/DataMgmt")
@Service("dataMgmtWebService")
public class DataMgmtWebServiceImpl implements DataMgmtPortType {

    @Autowired
    private RSNCodeDAO rsnCodeDAO;

    ...

那DAO,看起来像这样

@Repository
public class RSNCodeDAO {
...

位于applicationcontext.xml中:

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
   xmlns:context="http://www.springframework.org/schema/context"
   xmlns:jaxws="http://cxf.apache.org/jaxws"
   xsi:schemaLocation="http://www.springframework.org/schema/beans
   http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
   http://www.springframework.org/schema/context

   http://www.springframework.org/schema/context/spring-context-3.0.xsd
   http://cxf.apache.org/jaxws
   http://cxf.apache.org/schemas/jaxws.xsd">

   <context:component-scan base-package="https"/>
   <context:annotation-config />

   <context:component-scan base-package="mil.army.sddc.ibs.ccr.dbwrapper.dao" />

   <bean id="impl" class="mil.army.sddc.ibs.ccr.datamgmt.webservice.DataMgmtWebServiceImpl"/>

   <bean  id="reasonCodeDAO"
   class="mil.army.sddc.ibs.ccr.dbwrapper.dao.RSNCodeDAO" autowire="byName" />

   <jaxws:endpoint
        id="dataMgmtWebService"
        implementor="#impl"
        address="/DataMgmt" />

最后,我不确定你是否需要它,但这里是web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://java.sun.com/xml/ns/javaee"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
id="WebApp_ID" version="2.5">

    <display-name>CCRDataMgmt</display-name>

    <context-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>/WEB-INF/applicationContext.xml</param-value>
    </context-param>

    <listener>
        <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
    </listener>

</web-app>

所以,如果其中一个人都知道我忘记了什么愚蠢的事情,我会很感激。

编辑:已请求堆栈跟踪。我还没有设置日志记录,所以对soap异常响应格式表示道歉。

Pastebin

1 个答案:

答案 0 :(得分:-1)

而不是`

<context:component-scan base-package="https"/>`
<context:component-scan base-package="mil.army.sddc.ibs.ccr.dbwrapper.dao" />

`

尝试使用<context:component-scan base-package="https, mil.army.sddc.ibs.ccr.dbwrapper.dao"/>

我假设你的DataMgmtWebServiceImpl类住在“https”包下。