当我尝试在我的 JBoss EAP 7.1 上部署我的项目时,我收到了这个错误(stacktrace?):
16:13:07,986 ERROR [org.jboss.as.controller.management-operation] (DeploymentScanner-threads - 1) WFLYCTL0013: Operation ("deploy") failed - address: ([("deployment" => "test.war")]) - failure description: {
"WFLYCTL0080: Failed services" => {"jboss.deployment.unit.\"test.war\".INSTALL" => "WFLYSRV0153: Failed to process phase INSTALL of deployment \"test.war\"
Caused by: org.jboss.as.server.deployment.DeploymentUnitProcessingException: WFLYEE0041: Component class rest.RestResource for component RestResource has errors:
WFLYJPA0033: Can't find a persistence unit named primary in deployment \"test.war\""},
"WFLYCTL0412: Required services that are not installed:" => ["jboss.deployment.unit.\"test.war\".beanmanager"],
"WFLYCTL0180: Services with missing/unavailable dependencies" => [
"jboss.deployment.unit.\"test.war\".batch.artifact.factory is missing [jboss.deployment.unit.\"test.war\".beanmanager]",
"jboss.deployment.unit.\"test.war\".weld.weldClassIntrospector is missing [jboss.deployment.unit.\"test.war\".beanmanager]"
所以,我有一个 DeploymentUnitProcessingException。控制台说找不到名为 primary 的持久性单元。但我认为这是一个谎言,因为在我的 RestResource.java 中,单元名称是主要的。
package rest;
import javax.ejb.Stateful;
import javax.enterprise.context.RequestScoped;
import javax.inject.Inject;
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;
import javax.ws.rs.POST;
import javax.ws.rs.Path;
@Path("/pair")
@Stateful
public class RestResource {
@PersistenceContext(unitName = "primary")
private EntityManager em;
@POST
public Pair writePair(Pair p) {
em.persist(p);
return p;
}
}
控制台的下一个声明是我没有安装 beanmanager。我搜索了它,如果我没有 beans.xml,这应该只是一个问题。但我确实有一个 src/META-INF/beans.xml,它可以在 IDE(Red Hat Developer Studio)的向导中创建。另外,我读了一个 beans.xml,通常不再需要了。
我发现的另一件事是 https://github.com/javaee-samples/javaee7-samples/issues/371
在这里他们建议使用命令重建项目
mvn clean install -Pwildfly-managed
在我的 IDE 中,我这样做:
这工作得很好,但控制台输出保持不变。
你以前有过这个问题吗?谢谢您的帮助。
编辑 08.11.18 我添加了我的文件夹结构的屏幕截图,这样人们就可以看到我的 persistence.xml 和 beans.xml 的位置
编辑 10.11.18 我的 beans.xml
<?xml version="1.0"?>
<beans bean-discovery-mode="annotated" version="2.0"
xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/beans_2_0.xsd"/>
这是对的吗?