当前位置: 首页 > 知识库问答 >
问题:

WELLD-001408注入EntityManager时不满足的依赖项

端木存
2023-03-14

我有@statelessbean,它实现了两个接口(远程和本地)。我还添加了@localbean注释,用于使用无接口视图访问bean。

@Stateless
@LocalBean
public class WeatherDataBean implements WeatherDataBeanRemote, WeatherDataBeanLocal {
    @Inject
    private EntityManager entityManager;

    public WeatherDataBean () {

    }
    // ....attributes, getter & setter methods ....
}

我使用@inject的原因取自JBoss AS7快速入门示例

@PersistenceContext(unitName="WeatherStationJPA")
private EntityManager entityManager;
public class Resources {
     @SuppressWarnings("unused")
     @PersistenceContext(unitName="WeatherStationJPA")
     @Produces
     private EntityManager entityManager;

     @Produces
     FacesContext getFacesContext() {
         return FacesContext.getCurrentInstance();
     }
}

>

  • WeatherDataBean具有:

    import javax.ejb.LocalBean;
    import javax.ejb.Stateless;
    import javax.inject.Inject;
    

    资源具有:

    import javax.enterprise.inject.Produces;
    import javax.faces.context.FacesContext;
    import javax.inject.Singleton;
    import javax.persistence.EntityManager;
    import javax.persistence.PersistenceContext;
    
  • 共有1个答案

    殳宸
    2023-03-14

    我也遇到了同样的问题,我通过将这个类添加到我的项目中来解决了这个问题

    import java.util.logging.Logger;
    
    import javax.enterprise.context.RequestScoped;
    import javax.enterprise.inject.Produces;
    import javax.enterprise.inject.spi.InjectionPoint;
    import javax.faces.context.FacesContext;
    import javax.persistence.EntityManager;
    import javax.persistence.PersistenceContext;
    
    /**
     * This class uses CDI to alias Java EE resources, such as the persistence context, to CDI beans
     * 
     * <p>
     * Example injection on a managed bean field:
     * </p>
     * 
     * <pre>
     * &#064;Inject
     * private EntityManager em;
     * </pre>
     */
    public class Resources {
       // use @SuppressWarnings to tell IDE to ignore warnings about field not being referenced directly
       @SuppressWarnings("unused")
       @Produces
       @PersistenceContext
       private EntityManager em;
    
      // @Produces
      // public Logger produceLog(InjectionPoint injectionPoint) {
       //   return Logger.getLogger(injectionPoint.getMember().getDeclaringClass().getName());
      // }
    
       @Produces
       @RequestScoped
       public FacesContext produceFacesContext() {
          return FacesContext.getCurrentInstance();
       }
    
    }
    
     类似资料:
    • 我的LdapService类是一个无状态EJB,默认无参数构造函数(此项目是一个EJB包) 我试着把它注入到另一个类中,比如: CDI可以识别带有@EJB注释的bean,但注入点向我抛出了关于@Inject的错误: 如果在LdapService中使用@named(“LdapService”),然后在注入点使用: 然后我得到了这个错误: 部署失败。消息是:org.jboss.weld.excepti

    • 在JBoss上部署我的Java应用程序时,我遇到了一个愚蠢的问题。在我使用接口类更改源代码之前,一切都很好。所以我的问题是: 10:05:34,838错误[org.jboss.MSC.service.fail](MSC服务线程1-6)MSC00001:无法启动服务jboss.deployment.unit。“MDK-Exchange-1.1.0.war”。WeldService:org.jboss

    • 我正在尝试创建一个带有Wildfly和数据库连接的EJB Web项目,以持久化我的类“article”。但当我启动我的应用程序时,我得到了错误 包装服务; ArticleDaoImpl

    • 我在JBoss上部署我的Java应用程序时遇到了一个愚蠢的问题。在我使用接口类更改源代码之前,一切都很好。所以这是我的问题: ... 在JBoss 7.1上部署时会出现以下错误: 10:05:34838错误[org.jboss.msc.service.fail](msc服务线程1-6)MSC00001:无法启动服务jboss。部署。单元“mdk-exchange-1.1.0.战争”。WeldSer

    • My beans.xml如下所示: 我的服务(后端类型的EJB)如下所示: 而注释bean使用以下(web): Build已成功,但deploy给了我这个例外: 2018-11-12 11:28:25,706错误[org.jboss.MSC.service.fail](MSC服务线程1-2)MSC000001:无法启动服务jboss.deployment.unit。“kajava-ear-0.0.

    • 我有一个非常简单的测试: 我只想注入类型为的对象<代码>单一实体是一个单一的POJO: 之后,我执行。为了让Arquillian在Wildfly嵌入式实例中执行这些测试,我已经配置了测试: 这很简单,但是,我收到一个异常,告诉我无法解决: 原因:org。jboss。焊接例外。DeploymentException:WELD-001408:SingleEntity类型与限定符@Default的不满意