简体   繁体   English

带有限定符 @Default 的类型 EntityManager 的不满意依赖项

[英]Unsatisfied dependencies for type EntityManager with qualifiers @Default

My project structure looks like我的项目结构看起来像

project/
  business/pom.xml
  services/pom.xml
  integration/pom.xml

business/pom.xml业务/pom.xml

    <dependencies>
        <dependency>
            <groupId>com.self</groupId>
            <artifactId>persistence</artifactId>
            <version>${project.version}</version>
        </dependency>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
        </dependency>
    </dependencies>

persistence/pom.xml持久性/pom.xml

    <dependencies>
        <dependency>
            <groupId>org.hibernate.javax.persistence</groupId>
            <artifactId>hibernate-jpa-2.0-api</artifactId>
            <version>${hibernate-jpa-2.0-api.version}</version>
        </dependency>
        <dependency>
            <groupId>com.mysema.querydsl</groupId>
            <artifactId>querydsl-apt</artifactId>
            <version>${querydsl-version}</version>
        </dependency>
        <dependency>
            <groupId>com.mysema.querydsl</groupId>
            <artifactId>querydsl-core</artifactId>
            <version>${querydsl-version}</version>
        </dependency>
        <dependency>
            <groupId>com.mysema.querydsl</groupId>
            <artifactId>querydsl-jpa</artifactId>
            <version>${querydsl-version}</version>
        </dependency>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
        </dependency>
        <dependency>
            <groupId>org.hibernate</groupId>
            <artifactId>hibernate-entitymanager</artifactId>
            <version>${hibernate-entitymanager.version}</version>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>com.h2database</groupId>
            <artifactId>h2</artifactId>
            <version>${h2.version}</version>
            <scope>test</scope>
        </dependency>
    </dependencies>

project/pom.xml项目/pom.xml

    <dependencies>
        <dependency>
            <groupId>com.google.code.findbugs</groupId>
            <artifactId>jsr305</artifactId>
            <version>${jsr305.version}</version>
            <scope>compile</scope>
        </dependency>
        <dependency>
            <groupId>javax</groupId>
            <artifactId>javaee-api</artifactId>
            <version>${javaee-api.version}</version>
        </dependency>
    </dependencies>

business/ClientRegistrationManager.java业务/ClientRegistrationManager.java

@Stateless
public class ClientRegistrationManager {
    private EntityManager entityManager;

    @SuppressWarnings("UnusedDeclaration")
    public ClientRegistrationManager() {
    }

    @Inject
    public ClientRegistrationManager(@Nonnull final EntityManager entityManager) {
        this.entityManager = entityManager;
    }

    public ClientDetail register(@Nonnull final String email, final long id, @Nonnull final String password) {
        final UserService userService = new UserService(entityManager);
        final User user = userService.getUserByEmail(email);
        return new ClientDetail("clientId", "clientSecret");
    }
}  

When I deploy, I see the following error当我部署时,我看到以下错误

[INFO] [talledLocalContainer] 17:48:53,405 ERROR [org.jboss.msc.service.fail] (MSC service thread 1-15) MSC000001: Failed to start service jboss.deployment.unit."application.war".WeldStartService: org.jboss.msc.service.StartException in service jboss.deployment.unit."application.war".WeldStartService: Failed to start service
[INFO] [talledLocalContainer]   at org.jboss.msc.service.ServiceControllerImpl$StartTask.run(ServiceControllerImpl.java:1904) [jboss-msc-1.2.0.Final.jar:1.2.0.Final]
[INFO] [talledLocalContainer]   at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) [rt.jar:1.8.0_05]
[INFO] [talledLocalContainer]   at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) [rt.jar:1.8.0_05]
[INFO] [talledLocalContainer]   at java.lang.Thread.run(Thread.java:745) [rt.jar:1.8.0_05]
[INFO] [talledLocalContainer] Caused by: org.jboss.weld.exceptions.DeploymentException: WELD-001408: Unsatisfied dependencies for type EntityManager with qualifiers @Default
[INFO] [talledLocalContainer]   at injection point [BackedAnnotatedParameter] Parameter 1 of [BackedAnnotatedConstructor] @Inject public com.self.oauth.business.oauth.ClientRegistrationManager(@Nonnull EntityManager)
[INFO] [talledLocalContainer]   at com.self.oauth.business.oauth.ClientRegistrationManager.<init>(ClientRegistrationManager.java:0)
[INFO] [talledLocalContainer] 
[INFO] [talledLocalContainer]   at org.jboss.weld.bootstrap.Validator.validateInjectionPointForDeploymentProblems(Validator.java:368)
[INFO] [talledLocalContainer]   at org.jboss.weld.bootstrap.Validator.validateInjectionPoint(Validator.java:289)
[INFO] [talledLocalContainer]   at org.jboss.weld.bootstrap.Validator.validateGeneralBean(Validator.java:135)
[INFO] [talledLocalContainer]   at org.jboss.weld.bootstrap.Validator.validateRIBean(Validator.java:166)
[INFO] [talledLocalContainer]   at org.jboss.weld.bootstrap.Validator.validateBean(Validator.java:514)
[INFO] [talledLocalContainer]   at org.jboss.weld.bootstrap.ConcurrentValidator$1.doWork(ConcurrentValidator.java:68)
[INFO] [talledLocalContainer]   at org.jboss.weld.bootstrap.ConcurrentValidator$1.doWork(ConcurrentValidator.java:66)
[INFO] [talledLocalContainer]   at org.jboss.weld.executor.IterativeWorkerTaskFactory$1.call(IterativeWorkerTaskFactory.java:60)
[INFO] [talledLocalContainer]   at org.jboss.weld.executor.IterativeWorkerTaskFactory$1.call(IterativeWorkerTaskFactory.java:53)
[INFO] [talledLocalContainer]   at java.util.concurrent.FutureTask.run(FutureTask.java:266) [rt.jar:1.8.0_05]
[INFO] [talledLocalContainer]   ... 3 more
[INFO] [talledLocalContainer] 
[INFO] [talledLocalContainer] 17:48:53,411 ERROR [org.jboss.as.controller.management-operation] (Controller Boot Thread) JBAS014613: Operation ("deploy") failed - address: ([("deployment" => "application.war")]) - failure description: {"JBAS014671: Failed services" => {"jboss.deployment.unit.\"application.war\".WeldStartService" => "org.jboss.msc.service.StartException in service jboss.deployment.unit.\"application.war\".WeldStartService: Failed to start service
[INFO] [talledLocalContainer]     Caused by: org.jboss.weld.exceptions.DeploymentException: WELD-001408: Unsatisfied dependencies for type EntityManager with qualifiers @Default
[INFO] [talledLocalContainer]   at injection point [BackedAnnotatedParameter] Parameter 1 of [BackedAnnotatedConstructor] @Inject public com.self.oauth.business.oauth.ClientRegistrationManager(@Nonnull EntityManager)
[INFO] [talledLocalContainer]   at com.self.oauth.business.oauth.ClientRegistrationManager.<init>(ClientRegistrationManager.java:0)
[INFO] [talledLocalContainer] "}}

I also added empty beans.xml at the following locations我还在以下位置添加了空beans.xml

business/src/main/resources/META-INF/beans.xml
services/src/main/resources/META-INF/beans.xml
services/src/main/webapp/WEB-INF/beans.xml

But none of them helped但他们都没有帮助

Can you please tell me what am I missing?你能告诉我我错过了什么吗?

We normally inject EntityManager through '@PersistenceContext(unitname="name")' In order for you to use the constructor injection for the EntityManager, you would probably need to define a producer method.我们通常通过 '@PersistenceContext(unitname="name")' 注入 EntityManager 为了让您使用 EntityManager 的构造函数注入,您可能需要定义一个生产者方法。

@Stateless
public class MyEntityManagerProducer{

  @PersistenceContext(unitname="name")
  private EntityManager entityManager;

  @Produces
  public EntityManager entityManager(){
    return entityManager;
  }

}

And then within your constructor injection:然后在你的构造函数注入中:

  @Inject
    public ClientRegistrationManager(@Nonnull final EntityManager entityManager) {
        this.entityManager = entityManager;
    }

There is no default producer method for EntityManager . EntityManager没有默认的生产者方法。 You need to create one to use @Inject .您需要创建一个才能使用@Inject

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 Java Web Injection(Vraptor)+ Websphere 8.5:WELD-001408:带有限定符@Default的EntityManager类型的依赖关系未得到满足 - Java Web Injection (Vraptor) + Websphere 8.5: WELD-001408: Unsatisfied dependencies for type EntityManager with qualifiers @Default Java EE CDI部署异常-WELD-001408:带有限定符@Default的EntityManager类型的依赖关系未满足 - Java EE CDI Deployment Exception - WELD-001408: Unsatisfied dependencies for type EntityManager with qualifiers @Default 带有限定符[@Default]的[PartitionManager]类型的依赖关系未满足? - Unsatisfied dependencies for type [PartitionManager] with qualifiers [@Default]? 在注入点使用限定符 @default 的类型的依赖关系不满足 - Unsatisfied dependencies for type with qualifiers @default at injection point 带有限定符@Default的XXXX类型的Arquillian不满意的依赖项 - Arquillian Unsatisfied dependencies for type XXXX with qualifiers @Default ZZZZ类型与限定符@Default的不满意依赖关系 - Unsatisfied dependencies for type ZZZZ with qualifiers @Default DeploymentException:WELD-001408:带有限定符@Default的类型[]的不满意依赖项 - DeploymentException: WELD-001408: Unsatisfied dependencies for type [] with qualifiers @Default WELD-001408:带限定符@Default的ServiceLocator类型的依赖关系未满足 - WELD-001408: Unsatisfied dependencies for type ServiceLocator with qualifiers @Default WELD-001408类型的不满意依赖关系...在注入点使用限定符[@Default] - WELD-001408 Unsatisfied dependencies for type … with qualifiers [@Default] at injection point WELD-001408:带限定符@Default的类型验证器的依赖关系不令人满意 - WELD-001408: Unsatisfied dependencies for type Validator with qualifiers @Default
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM