在新线程中使用EJB或Inject

时间:2017-05-15 12:25:58

标签: java multithreading java-ee ejb

我有一个SOAP WebService类,它注入了一个EJB,并且其中注入了一些其他类。像:

public class SuperWS {

    @EJB
    private SuperDaoEjb superDaoEjb;

    @Inject
    private Partner partnerComponent;

    //......

    public Response invoke(Request req) {

        //Some logic

        Thread t = new Thread(new SuperRunnable(superDaoEjb, partnerComponent));

        t.start();

        return req;

    }

}

我必须做一些逻辑然后返回响应,但启动一个线程来处理更多。在那个线程中我需要superEjbDao和partnerComponent。但据我所知,这些对象是容器管理的。所以我不能说容器不会将代理提供给其他人或处置它。我觉得我的设计有问题。我该如何解决这个问题呢?

1 个答案:

答案 0 :(得分:0)

我猜没有问题。这是必不可少的设计。只要确保SuperDaoEjb和合作伙伴都有线程安全的代码,你就可以了。您需要关心您将从Container for SuperDaoEjb和Partner获得哪些参考。