当前位置: 首页 > 知识库问答 >
问题:

Springrmi@自动连线返回空

公孙鸿才
2023-03-14

我在RMI服务中的@autowired对象上收到一个空指针异常。我创建了一个简单的(我认为)服务,可以通过RMI从客户端调用。代码如下

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.

heartbeat-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 {

My HeartbeatImpl.java在包中com.edvs.service所以应该扫描它,并且应该实例化@autowyah HostStatus道,但事实并非如此。属性hs为NULL,这会产生NULL异常。

我在这个系统中有许多控制器使用完全相同的@自动连线技术,它们工作正常。对象被实例化。我怀疑这个类之所以失败是因为心跳servlet中的Bean定义。xml文件。在这里解决这个问题,我真是不知所措。我一定是错过了什么东西,阻止了扫描仪捕捉自动连线的工作。任何帮助都将不胜感激。

共有1个答案

缑文栋
2023-03-14

如果我浪费了任何人的时间,我很抱歉,但我想我在云端找到了答案。我像这样添加了界面ApplicationContextAware。

public class HeartbeatImpl implements Heartbeat, ApplicationContextAware {

这需要方法setApplicationContext。在该方法中,我实例化了我的属性hs。

    @Override
public void setApplicationContext(ApplicationContext ctx)
  throws BeansException {
  hs = (HostStatusDao) ctx.getBean("HostStatusDao");

}

我希望这对其他人有帮助,因为我花了一整天才弄明白。

 类似资料:
  • 环顾四周后,我找不到解决这个问题的好办法。 我的自动连线没有按预期工作,返回null。我已经在其他类中自动连接了这个特定的类,它可以工作,所以它只在constraintvalidator类中不工作。 UserService类 注释接口类 注释逻辑类。这里的自动连线返回null 主要的 编辑:尝试@Componenet

  • 我正在运行一个使用logback的Spring Boot应用程序。其思想是将日志消息发送到RabbitMQ服务器。为了实现这一点,我创建了一个扩展ch.qos的appender。向后退。果心附录基。 这是我的回程Spring。xml文件: 一切都好。但是,在MessagingAppenderLogback中,我希望用来发送消息的RabbitTemboard为空。 根据留档,我知道"日志系统在应用程

  • 我正在努力学习一本书名为《SpringMVC初学者指南》的书,我一直在努力创建存储库对象。我不断地得到一个BeanCreationException。不知道我还错过了什么。我想知道是否有人能帮我解决这个问题。 请在下面找到我的代码。谢谢 BeanCreationException XML文件: ProductCrontroller: 产品存储库: InMemoryProductRepository

  • 我有一个类。并且我已经编写了一个类的单元测试方法的类。我的代码如下:- 在我的单元测试课上,我编写了以下方法。 当我执行测试类,我得到错误。这是因为在类中,在方法的第8行中,学生机构映射字段为null。这只发生在模拟对象上。如何获得模拟对象的自动生成字段?

  • 问题内容: 我在将环境连接到Spring项目时遇到问题。在这个班上 环境始终为null。 问题答案: 自动装配发生的时间比所谓的晚(由于某种原因)。 一种解决方法是实现并依赖Spring调用方法:

  • 问题内容: 能否请您告诉我,我如何才能很好地为Hibernate实体启用Spring自动装配? 假设我有一个实体,并希望在那里有邮件发送者: 有没有比做的更好的方法 在我的DAO中? 谢谢! 问题答案: 有可能的!(这是Spring Roo中的默认样式!) 您所需要做的就是将@Configurable批注添加到您的实体。在配置中并使用AspectJ编织激活注释。 Spring参考中有一章:7.8.