Пока я работал над этим блогом, я столкнулся с этой ошибкой:
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 @LocalBean public 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, являются их собственными. |