java - 尝试从通用类扩展 EJB : IllegalArgumentException The Argument {0} is not a valid local client view for the EJB {1}

标签 java jakarta-ee weblogic12c

我正在尝试从通用类扩展 EJB,如下所示:

  1. 我的抽象通用类:

    public abstract class CrudDAO<T> {
    
         @PersistenceContext(unitName = "MYPU")
         protected EntityManager em;
    
         protected Class<T> entityClass;
    
         public int count() {
              Query count = em.createQuery("select count(u) from " +     entityClass.getSimpleName() + " u");
              return Integer.parseInt(count.getSingleResult().toString());
         }
    
         public T create(T entity){
              em.persist(entity);
              return entity;
        }
    
        public T update(T entity){
            return em.merge(entity);
        }
    
        public void delete(int id) {
            T entity = em.find(entityClass, id);
            em.remove(entity);
        }
    
        public T find(int id){
            return em.find(entityClass, id);
        }
    
        public List<T> findAll(Integer page, Integer maxRecords) {
            Query q = em.createQuery("select u from " + entityClass.getSimpleName() + " u");
            if (page != null && maxRecords != null) {
                q.setFirstResult((page - 1) * maxRecords);
                q.setMaxResults(maxRecords);
            }
            return q.getResultList();
        }
    
        public<V> List<V> executeListNamedQuery(String name){
            return em.createNamedQuery(name).getResultList();
        }
    
        public<V> List<V> executeListNamedQuery(String name, Map<String,Object> params){
            Query q = em.createNamedQuery(name);
            for (Map.Entry<String, Object> entry : params.entrySet()) {
                q.setParameter(entry.getKey(), entry.getValue());
            }
            return q.getResultList();
        }
    
        public<V> V executeSingleNamedQuery(String name){
            List<V> lista = em.createNamedQuery(name).getResultList();
            if(!lista.isEmpty()){
                return lista.get(0);
            }
            return null;
        }
    
        public<V> V executeSingleNamedQuery(String name, Map<String,Object> params){
            Query q = em.createNamedQuery(name);
            for (Map.Entry<String, Object> entry : params.entrySet()) {
                q.setParameter(entry.getKey(), entry.getValue());
            }
            List<V> lista = q.getResultList();
            if(!lista.isEmpty()){
                return lista.get(0);
            }
            return null;
        }
    }
    
  2. 我的 EJB 逻辑

    @Stateless
    public class UsuarioDAO extends CrudDAO<UsuarioEntity>{
        public UsuarioDAO() {
            this.entityClass = UsuarioEntity.class;
        }
    }
    
  3. 我的实体只有 getter 和 setter

  4. 我有另一个 EJB,它注入(inject) UsuarioDAO 并通过接口(interface)向 Restfull 服务公开方法。

    @Stateless
    public class AuthBean implements IAuthServiceBean {
    
        @Inject
        private UsuarioDAO usuarioDAO;
    
        @Override
        public UsuarioEntity agregarUsuario(UsuarioEntity usuario) {
            return usuarioSpadiesDAO.create(usuario);
        }
    }
    

我的 Restfull 服务调用 agregarUsuario 注入(inject) AuthBean。我的问题是当我尝试访问 Restfull 服务时它会抛出此异常:

The argument package.to.dao.CrudDAO is not a valid local client view for the EJB UsuarioDAO(Application: <MyEarSnapShot>, EJBComponent: <MyWarSnapshot>)

我有一个 EAR,其中包含一个 WAR 和一个 EJB 组件。 EJB组件是WAR组件的依赖项。 Restfull Services在WAR组件中,其他东西在EJB组件中。

我使用 WebLogic 12c 进行部署。

最佳答案

安装补丁 19533331 解决了我的问题。

19533331 依赖注入(inject) 12.1.3.0.3 CDI 在处理 EJB 时不考虑 EJB 的所有父类(super class)和接口(interface)。

关于java - 尝试从通用类扩展 EJB : IllegalArgumentException The Argument {0} is not a valid local client view for the EJB {1},我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33862780/

相关文章:

java - Hibernate 将两个表映射到一个类

java - WebLogic 12c 中的 Resteasy(或不是 Jersey - JAX RS 实现)可能吗?

java - 可以调用JAR中打包的REST-API controller吗?

java - 如何在jsf网站后台运行线程?

java - 如何在一个窗口中制作两种颜色?

jsp - 使用 Tomcat 6 中的 server.xml 连接时如何从 Active Directory 获取电子邮件

java - 使用 apache-camel[2.24.3] 使用 SOAP 服务时出错

java - Weblogic 12c 上的 Spring-boot war

java - JSF 在 View 根目录中找不到具有表单 ID 的组件

java - 在 JavaFX 中创建和停止线程