2

我有一些需要重写到 spring 的耳朵应用程序。War 包含一个运行 EJB 的类:

/**
 * The ear initialization.
 */
public final class Startup extends HttpServlet {

  private static final long serialVersionUID = 6465240550145652729L;

  @EJB(name="MyStartupBean")
  private MyBeanLocal bean;

  @Override
  public void init(final ServletConfig servletConfiguration) throws ServletException {
    bean.start();
  }


  @Override
  public void destroy() {
    bean.stop();
  }
}

EJB 包含一些每 30 秒运行一次作业的 quart 调度程序

我真的试图找到一些带有 EJB 的耳簧应用程序示例,但没有成功。我应该如何将它改写成 spring ?

4

1 回答 1

1

Spring 支持@EJB(并不广为人知,但确实如此)。所以基本上你可以通过删除extends HttpServlet、添加@Component注释、简化 init 方法以及添加@PostConstruct和添加@PreDestroydestroy方法来简单地将你的类移植到 spring。

@Component
public final class Startup {

  private static final long serialVersionUID = 6465240550145652729L;

  @EJB(name="MyStartupBean")
  private MyBeanLocal bean;

  @PostConstruct
  public void init() {
    bean.start();
  }

  @PreDestroy
  public void destroy() {
    bean.stop();
  }
}

结果会是这样。现在要么在 xml 中声明这个 bean

<bean class="Startup" />

或者使用组件扫描来检测/拾取这个 bean。

但如前所述,我可能会完全放弃 EJB 并使用 spring 来引导 Quartz

于 2013-11-05T10:20:14.573 回答