JBoss AS와 함께 제공되는 기본 최대 절전 모드 및 기본 데이터베이스와 함께 JBoss AS 7을 사용하는 데모를 구현하려고합니다. 내 구현은 JBoss의 "로그인"예제와 비슷합니다 (웹 서비스를 구현하고 EAR로 배포하기위한 몇 가지 추가 프로젝트가 있습니다). 어쨌든 나는 끊임없이 내 beans.xml 환경이 비어 등JBoss AS 7에서 지속성을 유지할 수 없습니다 ("하위 배포시 이름 지정된 배치 단위를 찾을 수 없습니다")
Caused by: java.lang.RuntimeException: Can't find a deployment unit named at subdeployment "myproject.persistence.war" of deployment "myproject.ear"
at org.jboss.as.weld.services.bootstrap.WeldJpaInjectionServices.getScopedPUName(WeldJpaInjectionServices.java:94) [jboss-as-weld-7.0.2.Final.jar:7.0.2.Final]
at org.jboss.as.weld.services.bootstrap.WeldJpaInjectionServices.resolvePersistenceContext(WeldJpaInjectionServices.java:59) [jboss-as-weld-7.0.2.Final.jar:7.0.2.Final]
at org.jboss.weld.util.Beans.injectEEFields(Beans.java:784) [weld-core-1.1.2.Final.jar:2011-07-26 15:02]
내 MANIFEST.MF
Manifest-Version: 1.0
Dependencies: org.hibernate
으로 런타임 예외를 얻을. 내 lib 폴더에서 최대 절전 기능을 기본 항아리 기능에 액세스 할 수있는 항아리가 있습니다.
내 persistence.xml을
<?xml version="1.0" encoding="UTF-8"?>
<persistence xmlns="http://java.sun.com/xml/ns/persistence"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd"
version="2.0">
<persistence-unit name="accessControlDatabase">
<provider>org.hibernate.ejb.HibernatePersistence</provider>
<jta-data-source>java:jboss/datasources/ExampleDS</jta-data-source>
<properties>
<property name="hibernate.hbm2ddl.auto" value="create-drop" />
</properties>
</persistence-unit>
</persistence>
그리고 내 두 개의 관련 클래스 :
import javax.enterprise.inject.Produces;
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;
public class Resources {
@SuppressWarnings("unused")
@Produces
@PersistenceContext(name = "accessControlDatabase")
private EntityManager em;
}
import java.util.List;
import javax.enterprise.context.RequestScoped;
import javax.inject.Inject;
import javax.inject.Named;
import javax.persistence.EntityManager;
import myproject.model.Session;
import myproject.model.User;
@Named("accessControlRepository")
@RequestScoped
public class AccessControlRepository {
@Inject
private EntityManager em;
@SuppressWarnings("unchecked")
public List<Session> getAllSessions() {
return em.createQuery("from Session").getResultList();
}
}
어떤 예외를 일으킬 수 있습니다? 문제를 해결하기 위해 무엇을 찾아야합니까?
이전에 'persistence.xml'은 어디에 있었습니까? EAR 내에서 ejb-jar의 META-INF 디렉토리에 있습니까? –
그리고 전쟁을 사용하는 사람은 persistence.xml이 your_app_name \ src \ main \ resources \ META-INF에 있어야합니다. 내 1 시간이 걸립니다. ( – halil
안녕하세요, 많은 IDE (intellij와 같은)가 WRONG 폴더에 지속성 XML을 만듭니다. .war를 사용하고 있습니다. 매우 도움이되는 설명 – Goot