Пока я работал над этим блогом, я столкнулся с этой ошибкой:
|
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
|
[INFO ] DSRA8203I: Database product name : MySQL[INFO ] DSRA8204I: Database product version : 8.0.11[INFO ] DSRA8205I: JDBC driver name : MySQL Connector/J[INFO ] DSRA8206I: JDBC driver version : mysql-connector-java-8.0.11 (Revision: 6d4eaa273bc181b4cf1c8ad0821a2227f116fedf)[INFO ] CWWJP9990I: test/wsjpa:wsjar:file:/home/dwuysan/dev/appservers/wlp/usr/servers/test/apps/expanded/test.war/WEB-INF/lib/d9f2b261-b3c6-4001-8a61-0aaebe46aa99.jar!/_testPU login successful[INFO ] WELD-000900: 2.4.5 (Final)[INFO ] FFDC1015I: An FFDC Incident has been created: "org.jboss.weld.exceptions.DeploymentException: WELD-001408: Unsatisfied dependencies for type EntityManager with qualifiers @Default at injection point [BackedAnnotatedField] @Inject private id.co.lucyana.test.services.LogService.em at id.co.lucyana.test.services.LogService.em(LogService.java:0) com.ibm.ws.container.service.state.internal.ApplicationStateManager 31" at ffdc_18.06.21_14.11.27.0.log[INFO ] FFDC1015I: An FFDC Incident has been created: "com.ibm.ws.container.service.state.StateChangeException: org.jboss.weld.exceptions.DeploymentException: WELD-001408: Unsatisfied dependencies for type EntityManager with qualifiers @Default at injection point [BackedAnnotatedField] @Inject private id.co.lucyana.test.services.LogService.em at id.co.lucyana.test.services.LogService.em(LogService.java:0) com.ibm.ws.app.manager.module.internal.DeployedAppInfoBase 384" at ffdc_18.06.21_14.11.27.1.log[INFO ] CWWJP9990I: test/wsjpa:wsjar:file:/home/dwuysan/dev/appservers/wlp/usr/servers/test/apps/expanded/test.war/WEB-INF/lib/d9f2b261-b3c6-4001-8a61-0aaebe46aa99.jar!/_testPU logout successful[ERROR ] CWWKZ0002E: An exception occurred while starting the application test. The exception message was: com.ibm.ws.container.service.state.StateChangeException: org.jboss.weld.exceptions.DeploymentException: WELD-001408: Unsatisfied dependencies for type EntityManager with qualifiers @Default at injection point [BackedAnnotatedField] @Inject private id.co.lucyana.test.services.LogService.em at id.co.lucyana.test.services.LogService.em(LogService.java:0) |
Два класса, на которых мы должны сосредоточиться:
|
01
02
03
04
05
06
07
08
09
10
11
12
|
package id.co.lucyana.test.util;import javax.enterprise.inject.Produces;import javax.persistence.EntityManager;import javax.persistence.PersistenceContext;public class EntityManagerProducer { @PersistenceContext(unitName = "testPU") @Produces private EntityManager em;} |
И
|
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
|
package id.co.lucyana.test.services;import id.co.lucyana.test.entity.Log;import java.util.Collection;import javax.ejb.LocalBean;import javax.ejb.Stateless;import javax.inject.Inject;import javax.persistence.EntityManager;@Stateless@LocalBeanpublic class LogService { @Inject private EntityManager em; public Collection<Log> getLogs() { return this.em.createNamedQuery(Log.FIND_ALL, Log.class).getResultList(); }} |
Дело в том, что этот подход работает как для TomEE, так и для Wildfly.
Есть мысли?
PS Я следовал чьей-то рекомендации в сети, чтобы использовать этот подход ранее, с аргументом, что если нужно когда-либо изменить имя «unitName», это можно сделать в одном месте. Я не мог найти ссылку больше. Я не уверен, что это все еще «хороший» подход. Я приветствую любые комментарии.
| Опубликовано на Java Code Geeks с разрешения Дени Вуйсана, партнера нашей программы JCG. См. Оригинальную статью здесь: OpenLiberty: ошибка при инъекции, работает на TomEE и Wildfly.
Мнения, высказанные участниками Java Code Geeks, являются их собственными. |