java - EJB,JPA persistance.xml 问题 Wildfly 8.2 intellij
问题描述
我正在使用 intellij Idea 创建一个带有 JPA 和 Jboss 8.2 的 EJB:当我解压缩 jar 文件时,我正在构建一个 jar 文件作为输出我找不到异常单位名称。有没有解决方案和thanx很多。
这个persistance.xml
<?xml version="1.0" encoding="UTF-8"?>
<persistence xmlns="http://java.sun.com/xml/ns/persistence" version="2.0">
<persistence-unit name="EJBUser" transaction-type="JTA">
<jta-data-source>java:/EJBUser</jta-data-source>
<class>entities.User</class>
<properties>
<property name="javax.persistence.schema-generation.database.action" value="drop-and-create"/>
</properties>
</persistence-unit>
</persistence>
这是我的豆子
package ejb;
import bl.UserLocal;
import entities.User;
import javax.ejb.LocalBean;
import javax.ejb.Stateless;
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;
/**
* Created by mehdi on 04/02/2019.
*/
@Stateless(name = "UserImpLocalEJB")
public class UserImpLocalBean implements UserLocal{
@PersistenceContext(unitName = "EJBUser")
private EntityManager em;
public UserImpLocalBean() {
}
@Override
public User addUser(User user) {
em.persist(user);
return user;
}
}
最后这是例外;
20:10:40,122 ERROR [org.jboss.msc.service.fail] (MSC service thread 1-5) MSC000001: Failed to start service jboss.deployment.unit."EJBUser_ejb exploded.jar".INSTALL: org.jboss.msc.service.StartException in service jboss.deployment.unit."EJBUser_ejb exploded.jar".INSTALL: JBAS018733: Failed to process phase INSTALL of deployment "EJBUser_ejb exploded.jar"
at org.jboss.as.server.deployment.DeploymentUnitPhaseService.start(DeploymentUnitPhaseService.java:166) [wildfly-server-8.2.0.Final.jar:8.2.0.Final]
at org.jboss.msc.service.ServiceControllerImpl$StartTask.startService(ServiceControllerImpl.java:1948) [jboss-msc-1.2.2.Final.jar:1.2.2.Final]
at org.jboss.msc.service.ServiceControllerImpl$StartTask.run(ServiceControllerImpl.java:1881) [jboss-msc-1.2.2.Final.jar:1.2.2.Final]
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) [rt.jar:1.8.0_191]
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) [rt.jar:1.8.0_191]
at java.lang.Thread.run(Thread.java:748) [rt.jar:1.8.0_191]
Caused by: org.jboss.as.server.deployment.DeploymentUnitProcessingException: JBAS011047: Component class ejb.UserImpLocalBean for component UserImpLocalEJB has errors:
JBAS011440: Can't find a persistence unit named EJBUser in deployment "EJBUser_ejb exploded.jar"
at org.jboss.as.ee.component.deployers.ModuleJndiBindingProcessor$1.handle(ModuleJndiBindingProcessor.java:159)
at org.jboss.as.ee.component.ClassDescriptionTraversal.run(ClassDescriptionTraversal.java:54)
at org.jboss.as.ee.component.deployers.ModuleJndiBindingProcessor.processClassConfigurations(ModuleJndiBindingProcessor.java:152)
at org.jboss.as.ee.component.deployers.ModuleJndiBindingProcessor.deploy(ModuleJndiBindingProcessor.java:145)
at org.jboss.as.server.deployment.DeploymentUnitPhaseService.start(DeploymentUnitPhaseService.java:159) [wildfly-server-8.2.0.Final.jar:8.2.0.Final]
... 5 more
20:10:40,133 ERROR [org.jboss.as.controller.management-operation] (management-handler-thread - 2) JBAS014613: Operation ("deploy") failed - address: ([("deployment" => "EJBUser_ejb exploded.jar")]) - failure description: {
"JBAS014671: Failed services" => {"jboss.deployment.unit.\"EJBUser_ejb exploded.jar\".INSTALL" => "org.jboss.msc.service.StartException in service jboss.deployment.unit.\"EJBUser_ejb exploded.jar\".INSTALL: JBAS018733: Failed to process phase INSTALL of deployment \"EJBUser_ejb exploded.jar\"
Caused by: org.jboss.as.server.deployment.DeploymentUnitProcessingException: JBAS011047: Component class ejb.UserImpLocalBean for component UserImpLocalEJB has errors:
JBAS011440: Can't find a persistence unit named EJBUser in deployment \"EJBUser_ejb exploded.jar\""},
"JBAS014771: Services with missing/unavailable dependencies" => [
"jboss.deployment.unit.\"EJBUser_ejb exploded.jar\".weld.weldClassIntrospector is missing [jboss.deployment.unit.\"EJBUser_ejb exploded.jar\".beanmanager]",
"jboss.naming.context.java.comp.\"EJBUser_ejb exploded\".\"EJBUser_ejb exploded\".UserImpLocalEJB.Validator is missing [jboss.naming.context.java.comp.\"EJBUser_ejb exploded\".\"EJBUser_ejb exploded\".UserImpLocalEJB]",
"jboss.naming.context.java.comp.\"EJBUser_ejb exploded\".\"EJBUser_ejb exploded\".UserImpLocalEJB.InAppClientContainer is missing [jboss.naming.context.java.comp.\"EJBUser_ejb exploded\".\"EJBUser_ejb exploded\".UserImpLocalEJB]",
"jboss.naming.context.java.comp.\"EJBUser_ejb exploded\".\"EJBUser_ejb exploded\".UserImpLocalEJB.InstanceName is missing [jboss.naming.context.java.comp.\"EJBUser_ejb exploded\".\"EJBUser_ejb exploded\".UserImpLocalEJB]",
"jboss.naming.context.java.comp.\"EJBUser_ejb exploded\".\"EJBUser_ejb exploded\".UserImpLocalEJB.ValidatorFactory is missing [jboss.naming.context.java.comp.\"EJBUser_ejb exploded\".\"EJBUser_ejb exploded\".UserImpLocalEJB]"
]
}
20:10:40,137 ERROR [org.jboss.as.server] (management-handler-thread - 2) JBAS015870: Deploy of deployment "EJBUser_ejb exploded.jar" was rolled back with the following failure message:
{
"JBAS014671: Failed services" => {"jboss.deployment.unit.\"EJBUser_ejb exploded.jar\".INSTALL" => "org.jboss.msc.service.StartException in service jboss.deployment.unit.\"EJBUser_ejb exploded.jar\".INSTALL: JBAS018733: Failed to process phase INSTALL of deployment \"EJBUser_ejb exploded.jar\"
Caused by: org.jboss.as.server.deployment.DeploymentUnitProcessingException: JBAS011047: Component class ejb.UserImpLocalBean for component UserImpLocalEJB has errors:
JBAS011440: Can't find a persistence unit named EJBUser in deployment \"EJBUser_ejb exploded.jar\""},
"JBAS014771: Services with missing/unavailable dependencies" => [
"jboss.deployment.unit.\"EJBUser_ejb exploded.jar\".weld.weldClassIntrospector is missing [jboss.deployment.unit.\"EJBUser_ejb exploded.jar\".beanmanager]",
"jboss.naming.context.java.comp.\"EJBUser_ejb exploded\".\"EJBUser_ejb exploded\".UserImpLocalEJB.Validator is missing [jboss.naming.context.java.comp.\"EJBUser_ejb exploded\".\"EJBUser_ejb exploded\".UserImpLocalEJB]",
"jboss.naming.context.java.comp.\"EJBUser_ejb exploded\".\"EJBUser_ejb exploded\".UserImpLocalEJB.InAppClientContainer is missing [jboss.naming.context.java.comp.\"EJBUser_ejb exploded\".\"EJBUser_ejb exploded\".UserImpLocalEJB]",
"jboss.naming.context.java.comp.\"EJBUser_ejb exploded\".\"EJBUser_ejb exploded\".UserImpLocalEJB.InstanceName is missing [jboss.naming.context.java.comp.\"EJBUser_ejb exploded\".\"EJBUser_ejb exploded\".UserImpLocalEJB]",
"jboss.naming.context.java.comp.\"EJBUser_ejb exploded\".\"EJBUser_ejb exploded\".UserImpLocalEJB.ValidatorFactory is missing [jboss.naming.context.java.comp.\"EJBUser_ejb exploded\".\"EJBUser_ejb exploded\".UserImpLocalEJB]"
]
}
20:10:40,150 INFO [org.jboss.as.server.deployment] (MSC service thread 1-7) JBAS015877: Stopped deployment EJBUser_ejb exploded.jar (runtime-name: EJBUser_ejb exploded.jar) in 13ms
20:10:40,152 INFO [org.jboss.as.controller] (management-handler-thread - 2) JBAS014774: Service status report
JBAS014775: New missing/unsatisfied dependencies:
service jboss.deployment.unit."EJBUser_ejb exploded.jar".beanmanager (missing) dependents: [service jboss.deployment.unit."EJBUser_ejb exploded.jar".weld.weldClassIntrospector]
service jboss.naming.context.java.comp."EJBUser_ejb exploded"."EJBUser_ejb exploded".UserImpLocalEJB (missing) dependents: [service jboss.naming.context.java.comp."EJBUser_ejb exploded"."EJBUser_ejb exploded".UserImpLocalEJB.InstanceName, service jboss.naming.context.java.comp."EJBUser_ejb exploded"."EJBUser_ejb exploded".UserImpLocalEJB.Validator, service jboss.naming.context.java.comp."EJBUser_ejb exploded"."EJBUser_ejb exploded".UserImpLocalEJB.InAppClientContainer, service jboss.naming.context.java.comp."EJBUser_ejb exploded"."EJBUser_ejb exploded".UserImpLocalEJB.ValidatorFactory]
JBAS014777: Services which failed to start: service jboss.deployment.unit."EJBUser_ejb exploded.jar".INSTALL
[2019-02-04 08:10:40,229] Artifact EJBUser:ejb exploded: Error during artifact deployment. See server log for details.
[2019-02-04 08:10:40,250] Artifact EJBUser:ejb exploded: java.lang.Exception: {"JBAS014671: Failed services" => {"jboss.deployment.unit.\"EJBUser_ejb exploded.jar\".INSTALL" => "org.jboss.msc.service.StartException in service jboss.deployment.unit.\"EJBUser_ejb exploded.jar\".INSTALL: JBAS018733: Failed to process phase INSTALL of deployment \"EJBUser_ejb exploded.jar\"
Caused by: org.jboss.as.server.deployment.DeploymentUnitProcessingException: JBAS011047: Component class ejb.UserImpLocalBean for component UserImpLocalEJB has errors:
JBAS011440: Can't find a persistence unit named EJBUser in deployment \"EJBUser_ejb exploded.jar\""},"JBAS014771: Services with missing/unavailable dependencies" => ["jboss.deployment.unit.\"EJBUser_ejb exploded.jar\".weld.weldClassIntrospector is missing [jboss.deployment.unit.\"EJBUser_ejb exploded.jar\".beanmanager]","jboss.naming.context.java.comp.\"EJBUser_ejb exploded\".\"EJBUser_ejb exploded\".UserImpLocalEJB.Validator is missing [jboss.naming.context.java.comp.\"EJBUser_ejb exploded\".\"EJBUser_ejb exploded\".UserImpLocalEJB]","jboss.naming.context.java.comp.\"EJBUser_ejb exploded\".\"EJBUser_ejb exploded\".UserImpLocalEJB.InAppClientContainer is missing [jboss.naming.context.java.comp.\"EJBUser_ejb exploded\".\"EJBUser_ejb exploded\".UserImpLocalEJB]","jboss.naming.context.java.comp.\"EJBUser_ejb exploded\".\"EJBUser_ejb exploded\".UserImpLocalEJB.InstanceName is missing [jboss.naming.context.java.comp.\"EJBUser_ejb exploded\".\"EJBUser_ejb exploded\".UserImpLocalEJB]","jboss.naming.context.java.comp.\"EJBUser_ejb exploded\".\"EJBUser_ejb exploded\".UserImpLocalEJB.ValidatorFactory is missing [jboss.naming.context.java.comp.\"EJBUser_ejb exploded\".\"EJBUser_ejb exploded\".UserImpLocalEJB]"]}
解决方案
正如您已经从错误日志中发现的那样,Wildfly 抱怨它无法在 EJB 中找到持久性上下文,因为 JAR 中缺少 persistence.xml 文件。它必须保存在 META-INF 目录的根级别。
如果您希望 IntelliJ 自动将其打包到 JAR 中的 META-INF 目录中,META-INF/persistence.xml
则应位于 IntelliJ 的源根目录下。
推荐阅读
- reactjs - 如何在 Victory Pie 中指定数据对象内的色阶
- c# - C# TcpListener 不监听
- node.js - 如何修复我的 npm start 脚本?
- vba - VBA Dec2Hex 转换无法正常工作
- angular - 如果我们手动为 Firebase 数据库生成文档 ID,它会影响搜索操作吗?
- php - TCPDF 中的内容不破坏属性 (nobr) 在第二个标签中无法正常工作
- c++ - char p[0] 是表示自动分配的缓冲区还是安全指针?
- python - python的高级循环问题
- python - 从空索引路由时出现 403 错误
- python - BeautifulSoup get_text 只有我想要