Google Guice и JPA Injection - Странная ошибка - PullRequest
1 голос
/ 12 августа 2011

В настоящее время я работаю над сервлетом Джерси JPA, и я пытаюсь использовать Guice для внедрения зависимостей Проблема в том, что я получаю следующую ошибку:

Exception while loading the app : java.lang.IllegalStateException: ContainerBase.addChild: start: org.apache.catalina.LifecycleException: com.google.inject.CreationException: Guice creation errors:

1) null returned by binding at com.google.inject.persist.jpa.JpaPersistModule.configurePersistence(JpaPersistModule.java:63)
 but parameter 1 of com.google.inject.persist.jpa.JpaPersistService.<init>() is not @Nullable
  while locating java.util.Properties annotated with @com.google.inject.persist.jpa.Jpa()
   for parameter 1 at com.google.inject.persist.jpa.JpaPersistService.<init>(JpaPersistService.java:43)
 at com.google.inject.persist.jpa.JpaPersistModule.configurePersistence(JpaPersistModule.java:67)
 while locating com.google.inject.persist.jpa.JpaPersistService
   for field at com.google.inject.persist.jpa.JpaLocalTxnInterceptor.emProvider(JpaLocalTxnInterceptor.java:33)
 at com.google.inject.persist.jpa.JpaPersistModule.configurePersistence(JpaPersistModule.java:76)

2) null returned by binding at com.google.inject.persist.jpa.JpaPersistModule.configurePersistence(JpaPersistModule.java:63)
 but parameter 1 of com.google.inject.persist.jpa.JpaPersistService.<init>() is not @Nullable
  while locating java.util.Properties annotated with @com.google.inject.persist.jpa.Jpa()
    for parameter 1 at com.google.inject.persist.jpa.JpaPersistService.<init>(JpaPersistService.java:43)
  at com.google.inject.persist.jpa.JpaPersistModule.configurePersistence(JpaPersistModule.java:67)
  while locating com.google.inject.persist.jpa.JpaPersistService
  while locating com.google.inject.persist.UnitOfWork 
    for field at com.google.inject.persist.jpa.JpaLocalTxnInterceptor.unitOfWork(JpaLocalTxnInterceptor.java:36)
  at com.google.inject.persist.jpa.JpaPersistModule.configurePersistence(JpaPersistModule.java:76)
2 errors

Код, который я генерирую эту ошибку:

install(new JpaPersistModule("theseen")); 
filter("/*").through(PersistFilter.class);

Если я использую «стандартный» способ, создавая экземпляр EntitiManager и раскомментируя эти строки, ничего не происходит.

 EntityManagerFactory emf = Persistence
            .createEntityManagerFactory("theseen");
 EntityManager em = emf.createEntityManager();

 em.getTransaction().begin();
 em.merge(s);
 em.getTransaction().commit();

работает как шарм. Поэтому я думаю, что установка соединения с базой данных должна быть в порядке.

Что это может быть за ошибки? Я протестировал то же приложение в другой тестовой среде, и оно работает! Обе машины используют Glassfish 3.1, Eclipse Indigo с интеграцией m2eclipse и m2wtp. Я использую Guice 3.0 с guice-persist 3.0 и guice-servlet 3.0. Компьютер, на котором работает приложение, работает под управлением Ubuntu 11.04 с OpenJDK, компьютер, на котором возникают проблемы, использует Windows 7 с JDK1.6v26. Обычно я использую источник данных, предоставленный Glassfish, но даже использование простого файла persistence.xml не работает.

Я серьезно запутался ... Есть идеи, что не так с Guice Injection для JPA?

1 Ответ

2 голосов
/ 13 августа 2011

Так как никто не ответил, я пошел грубой силой:

Полностью переустановите Glassfish и WebApp сработало ...

Что-то должно быть повреждено в течение долгих месяцев тестирования здесь на моей локальной машине.

...