编程语言
首页 > 编程语言> > java-@EJB批注-什么错误处理合适?

java-@EJB批注-什么错误处理合适?

作者:互联网

@EJB批注可以在“托管客户端”中使用以访问EJB.

可以将这个注释放在servlet类中,声明一个成员变量.

public class MyServlet extends HttpServlet {
     @EJB
     private MyWorkerInterface theWorker;
}

@EJB注释扩展为JNDI查找,我假设该初始化在Servlet初始化时执行.这些JNDI查找可能会失败:EJB提供者可以选择修改其批注以指定特定的JNDI名称,然后我的@EJB引用将需要指定非默认的JNDI名称,否则查找将会失败.

我也猜想,由于EJB可以是远程的,因此可能会出现短暂的,网络故障和服务器反弹错误.

我的想法是:使用Worker时,应检查其有效性.

  if ( theWorker == null ) {
      // ... etc.

我的问题:

1.)是否需要这种空检查?

2.)如果是这样,并且null可能是由诸如远程服务器的临时故障之类的暂时性错误引起的,是否可以进行恢复? Servlet现在已初始化.我是否真的需要重新启动servlet才能恢复?当然可以吗?

3.)初步的想法:优先使用@EJB可能需要显式的,惰性的JNDI查找代码.评论?

解决方法:

很抱歉没有提供任何规格说明,我只是从以前的JBoss经验谈起.

1)不可以,除非容器弄错了.
2)不相关,您的实例将是实现远程接口的远程服务的代理.因此,注入将始终成功.当您调用代理的方法时,将出现该错误,因此在使用远程接口时,您需要做好处理这些错误的准备.这就是RemoteException的目的,所有错误都应包装在RemoteException中,以便在出现问题时捕获.如果您将其传播,则将回滚tx,如果仅操作启用了tx的资源,则这是默认设置.
3)通常仅在需要用于JNDI查找的不同初始上下文属性时才需要,但是在这些情况下,我将亲自使用DI引擎和另一个注释(例如@ EJBFromHost2).使用显式的JNDI查找非常麻烦,尤其是如果您以后想要更改为其他JNDI实现或设置(例如,如果要对应用程序进行集群)时,尤其如此.

标签:error-handling,ejb,java
来源: https://codeday.me/bug/20191210/2102057.html