我在RMI服務中的@autowired對象上得到一個NULL指針異常。 我已經創建了一個簡單的(我認爲)服務,通過RMI從客戶端調用。該代碼是作爲spring rmi @autowired return null
package com.edvs.service;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import com.edvs.dao.HostStatusDao;
@Controller
public class HeartbeatImpl implements Heartbeat {
private static final long serialVersionUID = 7502560843009449650L;
@Autowired
private HostStatusDao hs;
@Override
public int update(String hostSequenceNumber) {
int cnt = hs.update(hostSequenceNumber);
return cnt;
}
}//End of file HeartbeatImpl.java.
心跳-servlet.xml中的代碼如下:
<bean id="heartbeatBean" class="com.edvs.service.HeartbeatImpl">
<!-- Nothing here for now. -->
</bean>
<bean class="org.springframework.remoting.rmi.RmiServiceExporter">
<!-- does not necessarily have to be the same name as the bean to be exported -->
<property name="serviceName" value="Heartbeat"/>
<property name="service" ref="heartbeatBean"/>
<property name="serviceInterface" value="com.edvs.service.Heartbeat"/>
<!-- defaults to 1099 -->
<property name="registryPort" value="1199"/>
</bean>
指定組件掃描我WebConfiguration文件如下:
@Configuration
@EnableWebMvc
@EnableTransactionManagement
@ComponentScan({ "com.edvs.controller","com.edvs.service" })
public class WebConfiguration extends WebMvcConfigurerAdapter {
我HeartbeatImpl.java位於com.edvs.service包中,因此應該掃描它,並且應該實例化@autowired HostStatusDao,但它不是。屬性hs是NULL,它產生NULL異常。
我在這個系統中有許多控制器使用完全相同的@Autowired技術,他們工作正常。對象被實例化。由於heartbeat-servlet.xml文件中的Bean定義,我懷疑這個類是失敗的。我在這裏真的很難解決這個問題。我必須錯過阻止捕獲@Autowired的掃描器才能工作的內容。任何幫助將不勝感激。