开发者

How do I force GlassFish 2 to load EJBs on startup?

开发者 https://www.devze.com 2023-03-14 18:04 出处:网络
We\'re using EJB3 on GlassFish v2. My application includes a GenericServlet called StartupServlet, which has an init method. java.util.TimerTask pollers started from this method cannot lookup facades

We're using EJB3 on GlassFish v2.

My application includes a GenericServlet called StartupServlet, which has an init method. java.util.TimerTask pollers started from this method cannot lookup facades from the InitialContext.

However if I make an HTTP request and do a lo开发者_如何转开发okup, it succeeds. Therefore I have a workaround now where my poller startup code makes an HTTP connection to a page which looks up the interfaces they need.

How can I rearrange my application so I don't need to use such a hack? If possible the solution needs to work on GFv3 as well.

Thanks in advance for your help!


On GF 2, I have a servlet that on start ensures that my timer is created. This looks up a remote session bean and calls it successfully from the init() (not actual code, distilled down to the important parts):

@EJB(name="TimerSessionRef", beanInterface=TimerSessionRemote.class)
public class StartTimers extends HttpServlet {

@Override
public void init() throws ServletException {
super.init();
try {
    Context ctx = new InitialContext();
    TimerSessionRemote timerSession = (TimerSessionRemote) ctx.lookup("java:comp/env/TimerSessionRef");
    timerSession.createTimer();
} catch (NamingException ex) {
    logger.blah();
}
0

精彩评论

暂无评论...
验证码 换一张
取 消

关注公众号