같은 주제에 대해 수백 가지 답변을 읽었지만 여전히 작동하지 않습니다! 나는 이런 식으로 내 EntityManager를 호출EntityManager를 초기화 할 때 NPE
@Stateless
public class MyTest {
@PersistenceContext
private EntityManager entityManager;
public Long create(MyUser user) {
entityManager.persist(user);
return user.getId();
}
}
은 그 때 나는 이런 식으로, REST 웹 서비스를 이용하여이 클래스를 호출
@Path("/myapp/{username}")
@ApplicationScoped
public class MyResource implements Serializable {
private static final long serialVersionUID = 1L;
MyTest service = new MyTest();
@POST
@Consumes({"application/json"})
@Produces({"text/plain"})
public String create(@Valid MyUser user) {
MyUser testUser = new MyUser();
//testUser.setParams(some_parameters)
return service.create(testUser).toString();
return "";
}
}
나는 항상 NullPointerException이 얻을 POST 요청을 할 때, EntityManager는 항상 null이기 때문에.
내 persistence.xml 아래이지만 내 응용 프로그램이 잘 배치되어 데이터베이스에 테이블을 완벽하게 생성하기 때문에 문제가없는 것 같습니다.
<persistence version="2.0" 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"> <persistence-unit name="myserver-unit" transaction-type="JTA">
<provider>org.eclipse.persistence.jpa.PersistenceProvider</provider>
<jta-data-source>jdbc/MyData</jta-data-source>
<properties>
<property name="javax.persistence.schema-generation.create-source" value="metadata-then-script"/>
<property name="javax.persistence.schema-generation.drop-source" value="metadata-then-script"/>
<property name="javax.persistence.schema-generation.create-script-source" value="create-script.sql"/>
<property name="javax.persistence.schema-generation.drop-script-source" value="drop-script.sql"/>
<property name="javax.persistence.sql-load-script-source" value="load-script.sql"/>
<property name="eclipselink.logging.level" value="FINEST"/>
<property name="javax.persistence.schema-generation.database.action" value="drop-and-create"/>
<property name="eclipselink.jdbc.user" value="APP"/>
<property name="eclipselink.jdbc.password" value="APP"/>
</properties>
당신은 나에게 힌트를 줄 수주십시오? EntityManager를 초기화하는 또 다른 방법이 있습니까? Netbeans 8 및 GlassFish 4와 함께 작업하고 있습니다.
나는 주사 대신에 "표준 방법"으로 MyTest의 메소드를 호출하는 대신 이미 주입 문제가있었습니다.
사이에 상황에 맞는 불일치가 다른 @Singleton하는 @Stateless에서 MYTEST 변경 ' 이 방법으로 MyTest 서비스를 만들 수 있습니다. '@ EJB'를 사용해야하는데, 그 문제는 무엇입니까? – unwichtich