从JSF bean到EJB的随机EJB连接失败

时间:2015-01-04 21:06:31

标签: java jsf java-ee ejb

我正在使用JSF框架和一个公开EJB的独立应用程序服务器来运行Web应用程序。 我尝试做的是与JSF托管bean中的EJB进行交互,但我得到的结果如下:

  

没有可用于处理组合的EJB接收器   调用上下文   org.jboss.ejb.client.EJBClientInvocationContext@4d8d3512

当我尝试在使用JNDI查找检索的EJB代理上调用方法时会发生这种情况。

有两个有趣的事实:

  1. 这种情况大部分时间都会发生,但有时它实际上没有例外
  2. 如果我从JSF托管bean外部调用相同的EJB方法(例如从一个简单的Servlet),它一直有效
  3. 所以这可能与JSF bean生命周期有关。

    这是JSF bean:

    @ManagedBean
    @ApplicationScoped
    public class UserMgr {
    
        IManager mgr;
    
        @PostConstruct
        public void init() {
            try {
                // JNDI lookup for EJB with IManager interface
                mgr = ServiceLocator.getRemoteService(IManager.class);
            } catch (NamingException e) {
                e.printStackTrace();
            }
        }
    
        public UserDTO getUser(long uid) {
            //This call throws the exception (sometimes)
            return mgr.getUser(uid);
        }
    }
    

    我在GlassFish 4.1上使用JSF 2.2

0 个答案:

没有答案