이것은 내 첫 번째 게시물이므로 이해할 수없는 경우 언제든지 물어보십시오.jboss 6.1.0.final gwt and ejb combination
나는 외부 shop-project에서 내 자신의 ejb-class를 사용하는 gwt- 응용 프로그램을 개발하려고합니다.
필자의 ServiceImpl은 필요에 따라 ejb에 도달하지만 나에게 맞는 것으로서 Injection을 사용할 수는 없습니다. 내 ejb-class에서 더미 데이터를 사용하여 테스트 데이터베이스를 만드는 함수를 호출합니다. 이것을 위해 (그리고 나중에 모든 요청에 대해) 나는 EntityManager를 삽입하려고했다. 이것은 내 Base-Class HomeBase에서 수행됩니다. 문제 : entityManager가 초기화되지 않을 수 있습니다. 내가 JBOSS 6.1.0.Final, GWT 내 EJB-함수를 호출 2.4 서버 측을 실행하는거야
@PersistenceContext(unitName="sung.app.kylintv.ejb")
protected EntityManager entityManager;
:로,뿐만 아니라
@PersistenceUnit(unitName = "sung.app.kylintv.ejb")
protected EntityManagerFactory entityManagerFactory;
protected EntityManager entityManager = entityManagerFactory.createEntityManager();
: 나는 모두 주석을 tryed. JBoss가 올바르게 시작되고 오류가 표시되지 않습니다. 그러나 함수를 호출 할 때이 오류 메시지가 나타날 때 :
Caused by: javax.ejb.EJBException: java.lang.NullPointerException
...
Caused by: java.lang.NullPointerException
at sung.app.kylintv.HomeBase.<init>(HomeBase.java:28) [:]
at sung.app.kylintv.product.ProductHome.<init>(ProductHome.java:35) [:]
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) [:1.6.0_25]
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39) [:1.6.0_25]
at
함수를 디버깅하면 entityManager가 NULL이됩니다. 어떻게 주사를 작동시킬 수 있습니까? 아니면 이것에 대해 완전히 잘못된 접근법을 취하고 있습니까? 더 많은 정보를 들어
필요 : 번호 :
package sung.app.kylintv.gwt.server;
import javax.ejb.EJB;
import sung.app.kylintv.gwt.client.DatabaseBuilderService;
import sung.app.kylintv.product.Product;
import sung.app.kylintv.product.ProductHome;
import com.google.gwt.user.server.rpc.RemoteServiceServlet;
public class DatabaseBuilderServiceImpl extends RemoteServiceServlet implements DatabaseBuilderService
{
@EJB(mappedName = "sung/app/kylintv/product")
private transient Product product;
@Override
public boolean createDefaultDatabaseEntries()
{
return product.createTestEntry();
}
}
(인터페이스 제품 통해) 개시 클래스 ProductHome :
@Stateless(name="Product")
@Local(Product.class)
public class ProductHome extends HomeBase<ProductEntity> implements Serializable, Product
{
@EJB
protected Option sessionOption;
@TransactionAttribute(REQUIRED)
public boolean createTestEntry()
{
try
{
System.out.println("TEST creating Data BEGIN");
ProductEntity currentProduct = new ProductEntity();
// ++++ fill FIRST product ++++
currentProduct.setName("bo_product_europe_basic_name");
currentProduct.setDescription("bo_product_europe_basic_description");
getEntityManager().persist(currentProduct); **<- HERE THE ERROR OCCURS**
... **For better overview I removed the further object-creation**
}
catch(Exception e)
{
//print out an error message and return false
System.out.println(e.getCause().getMessage());
return false;
}
return true;
}
}
확장 된 HomeBase를 :
public abstract class HomeBase<T>
{
@PersistenceUnit(unitName = "sung.app.kylintv.ejb")
protected EntityManagerFactory entityManagerFactory;
private EntityManager entityManager = entityManagerFactory.createEntityManager();
// @PersistenceContext(unitName = "sung_app_kylintv")
// protected EntityManager entityManager;
//
public void setEntityManager(EntityManager entityManager) {
this.entityManager = entityManager;
}
public EntityManager getEntityManager() {
return entityManager;
}
}
... 심각하게? 적은 downvotes 및 어쩌면 답변에 대한 질문의 크기를 줄이기보십시오. –
죄송합니다. 아래 코드를 이동하고 그 중 일부를 제거하여 질문을 더 읽기 쉽도록 만들었습니다. 첫 번째 라인은 이제 내 문제를 보여 주어야합니다. – Norman