powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / GWTP + Guice EntityManager равен null во время выполнения
5 сообщений из 5, страница 1 из 1
GWTP + Guice EntityManager равен null во время выполнения
    #39069859
alleo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте.

Пытаюсь связать GWTP + Guice в качестве CDI. Во время выполнения получаю такую ошибку:

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
1) Error in custom provider, java.lang.NullPointerException
  while locating com.google.inject.persist.jpa.JpaPersistService
  while locating javax.persistence.EntityManager
  at online.shashki.rus.server.dao.impl.PlayerDaoImpl.<init>(PlayerDaoImpl.java:25)
  while locating online.shashki.rus.server.dao.impl.PlayerDaoImpl
  while locating online.shashki.rus.server.dao.PlayerDao
  at online.shashki.rus.server.service.PlayerServiceImpl.<init>(PlayerServiceImpl.java:27)
  at online.shashki.rus.server.service.PlayerServiceImpl.class(PlayerServiceImpl.java:27)
  while locating online.shashki.rus.server.service.PlayerServiceImpl



GuiceListener.java
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
@WebListener
public class GuiceListener extends GuiceServletContextListener {

  private PersistService persistService;

  @Override
  protected Injector getInjector() {
    return Guice.createInjector(new ServerServletModule(), new ServiceModule());
  }
}



ServerServletModule.java
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
public class ServerServletModule extends ServletModule {

  private static final String SHASHKI_PU = "shashki64PU";

  @Override
  protected void configureServlets() {
    install(new JpaPersistModule(SHASHKI_PU));
    filter("/*").through(PersistFilter.class);

    bind(PlayerDao.class).to(PlayerDaoImpl.class);
    bind(GameDao.class).to(GameDaoImpl.class);
    bind(GameMessageDao.class).to(GameMessageDaoImpl.class);

    serve("/Application/ProfileService").with(PlayerServiceImpl.class);
    serve("/Application/GameService").with(GameServiceImpl.class);
    serve("/Application/GameMessageService").with(GameMessageServiceImpl.class);
  }
}



ServiceModule.java
Код: java
1.
2.
3.
4.
5.
6.
7.
public class ServiceModule extends AbstractModule {
  protected void configure() {
    bind(PlayerService.class).to(PlayerServiceImpl.class).in(Singleton.class);
    bind(GameRpcService.class).to(GameServiceImpl.class).in(Singleton.class);
    bind(GameMessageRpcService.class).to(GameMessageServiceImpl.class).in(Singleton.class);
  }
}



PlayerDaoImpl.java
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
public class PlayerDaoImpl extends DaoImpl<Player> implements PlayerDao {

  private final EntityManager entityManager;

  @Inject
  public PlayerDaoImpl(TypeLiteral<Player> type, Provider<EntityManager> entityManagerProvider) {
    super(type);
    entityManager = entityManagerProvider.get();
  }

  @Override
  protected EntityManager getEntityManager() {
    return entityManager;
  }
}



PlayerServiceImpl.java
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
@Singleton
public class PlayerServiceImpl extends RemoteServiceServlet implements PlayerService {

  private final PlayerDao playerDao;

  @Inject
  public PlayerServiceImpl(Provider<PlayerDao> playerDao) {
    this.playerDao = playerDao.get();
  }
}



Есть идеи, что не так?
...
Рейтинг: 0 / 0
GWTP + Guice EntityManager равен null во время выполнения
    #39070094
0FD
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alleo,

Далее после этого должен быть stacktrace, его бы привел. Провайдер EntityManager нормально инжектится, не null, NPE далее в JpaPersistServicе, возможно не может найти PU shashki64PU.
...
Рейтинг: 0 / 0
GWTP + Guice EntityManager равен null во время выполнения
    #39071320
alleo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
0FD,

Код: trace
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
22:12:47,356 ERROR [io.undertow.request] (default task-3) UT005023: Exception handling request to /rus/index.html: com.google.inject.ProvisionException: Unable to provision, see the following errors:

1) Error in custom provider, java.lang.NullPointerException
  while locating com.google.inject.persist.jpa.JpaPersistService
  while locating javax.persistence.EntityManager
  at online.shashki.rus.server.dao.impl.PlayerDaoImpl.(PlayerDaoImpl.java:25)
  while locating online.shashki.rus.server.dao.impl.PlayerDaoImpl
  while locating online.shashki.rus.server.dao.PlayerDao
  at online.shashki.rus.server.service.PlayerServiceImpl.(PlayerServiceImpl.java:27)
  at online.shashki.rus.server.service.PlayerServiceImpl.class(PlayerServiceImpl.java:27)
  while locating online.shashki.rus.server.service.PlayerServiceImpl

1 error
	at com.google.inject.internal.InjectorImpl$2.get(InjectorImpl.java:1025) [guice-4.0.jar:]
	at com.google.inject.internal.InjectorImpl.getInstance(InjectorImpl.java:1047) [guice-4.0.jar:]
	at com.google.inject.servlet.ServletDefinition.init(ServletDefinition.java:112) [guice-servlet-4.0.jar:]
	at com.google.inject.servlet.ManagedServletPipeline.init(ManagedServletPipeline.java:82) [guice-servlet-4.0.jar:]
	at com.google.inject.servlet.ManagedFilterPipeline.initPipeline(ManagedFilterPipeline.java:103) [guice-servlet-4.0.jar:]
	at com.google.inject.servlet.GuiceFilter.init(GuiceFilter.java:220) [guice-servlet-4.0.jar:]
	at io.undertow.servlet.core.LifecyleInterceptorInvocation.proceed(LifecyleInterceptorInvocation.java:111) [undertow-servlet-1.1.0.Final.jar:1.1.0.Final]
	at org.wildfly.extension.undertow.security.RunAsLifecycleInterceptor.init(RunAsLifecycleInterceptor.java:85)
	at io.undertow.servlet.core.LifecyleInterceptorInvocation.proceed(LifecyleInterceptorInvocation.java:97) [undertow-servlet-1.1.0.Final.jar:1.1.0.Final]
	at io.undertow.servlet.core.ManagedFilter.createFilter(ManagedFilter.java:79) [undertow-servlet-1.1.0.Final.jar:1.1.0.Final]
	at io.undertow.servlet.core.ManagedFilter.getFilter(ManagedFilter.java:65) [undertow-servlet-1.1.0.Final.jar:1.1.0.Final]
	at io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:60) [undertow-servlet-1.1.0.Final.jar:1.1.0.Final]
	at io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:132) [undertow-servlet-1.1.0.Final.jar:1.1.0.Final]
	at io.undertow.servlet.handlers.FilterHandler.handleRequest(FilterHandler.java:85) [undertow-servlet-1.1.0.Final.jar:1.1.0.Final]
	at io.undertow.servlet.handlers.security.ServletSecurityRoleHandler.handleRequest(ServletSecurityRoleHandler.java:61) [undertow-servlet-1.1.0.Final.jar:1.1.0.Final]
	at io.undertow.servlet.handlers.ServletDispatchingHandler.handleRequest(ServletDispatchingHandler.java:36) [undertow-servlet-1.1.0.Final.jar:1.1.0.Final]
	at org.wildfly.extension.undertow.security.SecurityContextAssociationHandler.handleRequest(SecurityContextAssociationHandler.java:78)
	at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43) [undertow-core-1.1.0.Final.jar:1.1.0.Final]
	at io.undertow.servlet.handlers.security.SSLInformationAssociationHandler.handleRequest(SSLInformationAssociationHandler.java:131) [undertow-servlet-1.1.0.Final.jar:1.1.0.Final]
	at io.undertow.servlet.handlers.security.ServletAuthenticationCallHandler.handleRequest(ServletAuthenticationCallHandler.java:56) [undertow-servlet-1.1.0.Final.jar:1.1.0.Final]
	at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43) [undertow-core-1.1.0.Final.jar:1.1.0.Final]
	at io.undertow.security.handlers.AbstractConfidentialityHandler.handleRequest(AbstractConfidentialityHandler.java:45) [undertow-core-1.1.0.Final.jar:1.1.0.Final]
	at io.undertow.servlet.handlers.security.ServletConfidentialityConstraintHandler.handleRequest(ServletConfidentialityConstraintHandler.java:63) [undertow-servlet-1.1.0.Final.jar:1.1.0.Final]
	at io.undertow.security.handlers.AuthenticationMechanismsHandler.handleRequest(AuthenticationMechanismsHandler.java:58) [undertow-core-1.1.0.Final.jar:1.1.0.Final]
	at io.undertow.servlet.handlers.security.CachedAuthenticatedSessionHandler.handleRequest(CachedAuthenticatedSessionHandler.java:70) [undertow-servlet-1.1.0.Final.jar:1.1.0.Final]
	at io.undertow.security.handlers.SecurityInitialHandler.handleRequest(SecurityInitialHandler.java:76) [undertow-core-1.1.0.Final.jar:1.1.0.Final]
	at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43) [undertow-core-1.1.0.Final.jar:1.1.0.Final]
	at org.wildfly.extension.undertow.security.jacc.JACCContextIdHandler.handleRequest(JACCContextIdHandler.java:61)
	at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43) [undertow-core-1.1.0.Final.jar:1.1.0.Final]
	at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43) [undertow-core-1.1.0.Final.jar:1.1.0.Final]
	at io.undertow.servlet.handlers.ServletInitialHandler.handleFirstRequest(ServletInitialHandler.java:261) [undertow-servlet-1.1.0.Final.jar:1.1.0.Final]
	at io.undertow.servlet.handlers.ServletInitialHandler.dispatchRequest(ServletInitialHandler.java:247) [undertow-servlet-1.1.0.Final.jar:1.1.0.Final]
	at io.undertow.servlet.handlers.ServletInitialHandler.access$000(ServletInitialHandler.java:76) [undertow-servlet-1.1.0.Final.jar:1.1.0.Final]
	at io.undertow.servlet.handlers.ServletInitialHandler$1.handleRequest(ServletInitialHandler.java:166) [undertow-servlet-1.1.0.Final.jar:1.1.0.Final]
	at io.undertow.server.Connectors.executeRootHandler(Connectors.java:197) [undertow-core-1.1.0.Final.jar:1.1.0.Final]
	at io.undertow.server.HttpServerExchange$1.run(HttpServerExchange.java:759) [undertow-core-1.1.0.Final.jar:1.1.0.Final]
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) [rt.jar:1.7.0_79]
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) [rt.jar:1.7.0_79]
	at java.lang.Thread.run(Thread.java:745) [rt.jar:1.7.0_79]
Caused by: java.lang.NullPointerException
	at org.hibernate.engine.transaction.internal.jta.JtaStatusHelper.getStatus(JtaStatusHelper.java:76) [hibernate-core-4.3.7.Final.jar:4.3.7.Final]
	at org.hibernate.engine.transaction.internal.jta.JtaStatusHelper.isActive(JtaStatusHelper.java:118) [hibernate-core-4.3.7.Final.jar:4.3.7.Final]
	at org.hibernate.engine.transaction.internal.jta.CMTTransaction.join(CMTTransaction.java:149) [hibernate-core-4.3.7.Final.jar:4.3.7.Final]
	at org.hibernate.jpa.spi.AbstractEntityManagerImpl.joinTransaction(AbstractEntityManagerImpl.java:1602) [hibernate-entitymanager-4.3.7.Final.jar:4.3.7.Final]
	at org.hibernate.jpa.spi.AbstractEntityManagerImpl.postInit(AbstractEntityManagerImpl.java:210) [hibernate-entitymanager-4.3.7.Final.jar:4.3.7.Final]
	at org.hibernate.jpa.internal.EntityManagerImpl.(EntityManagerImpl.java:91) [hibernate-entitymanager-4.3.7.Final.jar:4.3.7.Final]
	at org.hibernate.jpa.internal.EntityManagerFactoryImpl.internalCreateEntityManager(EntityManagerFactoryImpl.java:345) [hibernate-entitymanager-4.3.7.Final.jar:4.3.7.Final]
	at org.hibernate.jpa.internal.EntityManagerFactoryImpl.createEntityManager(EntityManagerFactoryImpl.java:313) [hibernate-entitymanager-4.3.7.Final.jar:4.3.7.Final]
	at com.google.inject.persist.jpa.JpaPersistService.begin(JpaPersistService.java:77) [guice-persist-4.0.jar:]
	at com.google.inject.persist.jpa.JpaPersistService.get(JpaPersistService.java:57) [guice-persist-4.0.jar:]
	at com.google.inject.persist.jpa.JpaPersistService.get(JpaPersistService.java:41) [guice-persist-4.0.jar:]
	at com.google.inject.internal.ProviderInternalFactory.provision(ProviderInternalFactory.java:81) [guice-4.0.jar:]
	at com.google.inject.internal.BoundProviderFactory.provision(BoundProviderFactory.java:72) [guice-4.0.jar:]
	at com.google.inject.internal.ProviderInternalFactory.circularGet(ProviderInternalFactory.java:61) [guice-4.0.jar:]
	at com.google.inject.internal.BoundProviderFactory.get(BoundProviderFactory.java:62) [guice-4.0.jar:]
	at com.google.inject.internal.InjectorImpl$2$1.call(InjectorImpl.java:1016) [guice-4.0.jar:]
	at com.google.inject.internal.InjectorImpl.callInContext(InjectorImpl.java:1103) [guice-4.0.jar:]
	at com.google.inject.internal.InjectorImpl$2.get(InjectorImpl.java:1012) [guice-4.0.jar:]
	at online.shashki.rus.server.dao.impl.PlayerDaoImpl.(PlayerDaoImpl.java:26) [classes:]
	at online.shashki.rus.server.dao.impl.PlayerDaoImpl$$FastClassByGuice$$5cf34862.newInstance() [guice-4.0.jar:]
	at com.google.inject.internal.cglib.reflect.$FastConstructor.newInstance(FastConstructor.java:40) [guice-4.0.jar:]
	at com.google.inject.internal.DefaultConstructionProxyFactory$1.newInstance(DefaultConstructionProxyFactory.java:61) [guice-4.0.jar:]
	at com.google.inject.internal.ConstructorInjector.provision(ConstructorInjector.java:105) [guice-4.0.jar:]
	at com.google.inject.internal.ConstructorInjector.construct(ConstructorInjector.java:85) [guice-4.0.jar:]
	at com.google.inject.internal.ConstructorBindingImpl$Factory.get(ConstructorBindingImpl.java:267) [guice-4.0.jar:]
	at com.google.inject.internal.FactoryProxy.get(FactoryProxy.java:56) [guice-4.0.jar:]
	at com.google.inject.internal.InjectorImpl$2$1.call(InjectorImpl.java:1016) [guice-4.0.jar:]
	at com.google.inject.internal.InjectorImpl.callInContext(InjectorImpl.java:1103) [guice-4.0.jar:]
	at com.google.inject.internal.InjectorImpl$2.get(InjectorImpl.java:1012) [guice-4.0.jar:]
	at online.shashki.rus.server.service.PlayerServiceImpl.(PlayerServiceImpl.java:28) [classes:]
	at online.shashki.rus.server.service.PlayerServiceImpl$$FastClassByGuice$$c5582598.newInstance() [guice-4.0.jar:]
	at com.google.inject.internal.cglib.reflect.$FastConstructor.newInstance(FastConstructor.java:40) [guice-4.0.jar:]
	at com.google.inject.internal.DefaultConstructionProxyFactory$1.newInstance(DefaultConstructionProxyFactory.java:61) [guice-4.0.jar:]
	at com.google.inject.internal.ConstructorInjector.provision(ConstructorInjector.java:105) [guice-4.0.jar:]
	at com.google.inject.internal.ConstructorInjector.construct(ConstructorInjector.java:85) [guice-4.0.jar:]
	at com.google.inject.internal.ConstructorBindingImpl$Factory.get(ConstructorBindingImpl.java:267) [guice-4.0.jar:]
	at com.google.inject.internal.ProviderToInternalFactoryAdapter$1.call(ProviderToInternalFactoryAdapter.java:46) [guice-4.0.jar:]
	at com.google.inject.internal.InjectorImpl.callInContext(InjectorImpl.java:1103) [guice-4.0.jar:]
	at com.google.inject.internal.ProviderToInternalFactoryAdapter.get(ProviderToInternalFactoryAdapter.java:40) [guice-4.0.jar:]
	at com.google.inject.internal.SingletonScope$1.get(SingletonScope.java:145) [guice-4.0.jar:]
	at com.google.inject.internal.InternalFactoryToProviderAdapter.get(InternalFactoryToProviderAdapter.java:41) [guice-4.0.jar:]
	at com.google.inject.internal.InjectorImpl$2$1.call(InjectorImpl.java:1016) [guice-4.0.jar:]
	at com.google.inject.internal.InjectorImpl.callInContext(InjectorImpl.java:1092) [guice-4.0.jar:]
	at com.google.inject.internal.InjectorImpl$2.get(InjectorImpl.java:1012) [guice-4.0.jar:]
	... 38 more
...
Рейтинг: 0 / 0
GWTP + Guice EntityManager равен null во время выполнения
    #39071474
0FD
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alleo,

transaction-type="RESOURCE_LOCAL" и non-jta-data-source если нужно в persistence.xml
...
Рейтинг: 0 / 0
GWTP + Guice EntityManager равен null во время выполнения
    #39071741
alleo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
0FD,

Спасибо за ответы, разобрался. Проблема была в конфликте Guice версий. На сервере 4.0, а на клиенте GIN тянул 3.0. Разнес код на три Maven модуля client, server и shared со своими библиотеками.
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / GWTP + Guice EntityManager равен null во время выполнения
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]