2011-11-08 2 views
1

GWT-P 응용 프로그램에서 최대 절전 모드의 EntityManager을 사용하려고합니다. 내가 제안 PersistFilterGWT-P + JPA Hibernate EntityManager

public class MyModule extends ServletModule { 
    protected void configureServlets() { 
    install(new JpaPersistModule("myJpaUnit")); // like we saw earlier. 
    filter("/*").through(PersistFilter.class); 
    } 
} 

을 사용할 수 없습니다처럼

불행하게도 그것은 ClassCastException 원인이 보인다 : (이 일에 대한 제안이없는 경우)

org.hibernate.service.jdbc.connections.internal.C3P0ConnectionProvider cannot be cast to org.hibernate.service.jdbc.connections.spi.ConnectionProvider 

그래서 내가 다른 접근 방식을 시도하고있다.

내가 일을 첫 번째 서비스를받을 꽤 가까이해야하지만 주입 EntityManager 항상 내가 설정에서 실수를 의심 null

public class ImageMetaDataService { 
    @Inject EntityManager em; 
    @Transactional 
    public void createNewImageMetaData(ImageMetaDataImpl imd) { 
     em.persist(imd); 
    } 
} 

입니다. 이 같은 JpaPersistModule를 추가 대 (DispatchServletModule에서) install(new JpaPersistModule("name")); 사용에 차이가 있습니다 :

public class MyGuiceServletContextListener extends GuiceServletContextListener { 
    @Override 
    protected Injector getInjector() { 
     return Guice.createInjector(new ServerModule(), new DispatchServletModule(), new JpaPersistModule("name")); 
    } 
} 

그리고 마지막으로 내 가장 중요한 질문 : 나는 JPA를 시작하는 것입니다 방법.

public class MyInitializer { 
     @Inject MyInitializer(PersistService service) { 
       service.start(); 
       // At this point JPA is started and ready. 
     } 
} 

하지만 (GWT-P에) 그렇게하는 방법을 볼 수 없습니다 : 문서 클래스 다음과 같이 제안한다.

+0

해결책을 찾았습니까? –

답변

0

"가장 중요한 질문"과 관련하여 MyGuiceServletContextListener는 ServletContextListener입니다. 오버 타고

public void contextInitialized(ServletContextEvent servletContextEvent) { 
     persistService = injector.getInstance(PersistService.class); 
     persistService.start(); 
} 

다음은 경호 국 중지도 contextDestroyed을 구현하려는 것의 기본 구현 :이 방법 모두에서

@Override 
public void contextDestroyed(ServletContextEvent contextEvent) { 
    if (persistService != null) { 
     persistService.stop(); 
    } 
} 

을 그 전에, 인젝터 변수는 로컬 캐시 getInjector() 메서드에서 반환됩니다.

+0

인젝터는 컨텍스트가 초기화 될 때까지 실제로 생성됩니까? – pschuegr