ObjectifyService.begin () создает исключение IllegalStateException - PullRequest
0 голосов
/ 16 января 2019

Я пытаюсь использовать облачное хранилище данных Google для своего проекта Maven, но у меня возникли некоторые проблемы.

Когда я выполню

Consumer consumer=new Consumer(username+password,username,password,name,email) {
    ofy().save().entity(consumer).now(); }

Останавливается в ObjectifyFilter.class в

try (Closeable closeable = ObjectifyService.begin()) {   ..

и бросает

java.lang.IllegalStateException at com.google.appengine.repackaged.com.google.common.base.Preconditions.checkState (Preconditions.java:443) в com.google.appengine.api.datastore.DatastoreServiceGlobalConfig $ Builder.build (DatastoreServiceGlobalConfig.java:233) в com.google.appengine.api.datastore.DatastoreServiceGlobalConfig.fromEnv (DatastoreServiceGlobalConfig.java:311) в com.google.appengine.api.datastore.DatastoreServiceGlobalConfig.getConfig (DatastoreServiceGlobalConfig.java:47) в com.google.appengine.api.datastore.DatastoreServiceFactoryImpl.getAsyncDatastoreService (DatastoreServiceFactoryImpl.java:19) в com.google.appengine.api.datastore.DatastoreServiceFactoryImpl.getAsyncDatastoreService (DatastoreServiceFactoryImpl.java:9) в com.google.appengine.api.datastore.DatastoreServiceFactory.getAsyncDatastoreService (DatastoreServiceFactory.java:32) в com.googlecode.objectify.ObjectifyFactory.createRawAsyncDatastoreService (ObjectifyFactory.java:133) в com.googlecode.objectify.ObjectifyFactory.createAsyncDatastoreService (ObjectifyFactory.java:121) в com.googlecode.objectify.impl.ObjectifyImpl.createAsyncDatastoreService (ObjectifyImpl.java:246) в com.googlecode.objectify.impl.ObjectifyImpl.createWriteEngine (ObjectifyImpl.java:257) в com.googlecode.objectify.impl.SaverImpl.entities (SaverImpl.java:60) на com.googlecode.objectify.impl.SaverImpl.entity (SaverImpl.java:35) в it.units.view.ConsumerView.createConsumer (ConsumerView.java:43) в it.units.controller.login.processRequest (login.java:45) в it.units.controller.login.doPost (login.java:92) в javax.servlet.http.HttpServlet.service (HttpServlet.java:707) в javax.servlet.http.HttpServlet.service (HttpServlet.java:790) в org.eclipse.jetty.servlet.ServletHolder.handle (ServletHolder.java:867) в org.eclipse.jetty.servlet.ServletHandler $ CachedChain.doFilter (ServletHandler.java:1623) в com.googlecode.objectify.ObjectifyFilter.doFilter (ObjectifyFilter.java:48) в org.eclipse.jetty.servlet.ServletHandler $ CachedChain.doFilter (ServletHandler.java:1610) в com.google.appengine.tools.development.ResponseRewriterFilter.doFilter (ResponseRewriterFilter.java:134) в org.eclipse.jetty.servlet.ServletHandler $ CachedChain.doFilter (ServletHandler.java:1610) в com.google.appengine.tools.development.HeaderVerificationFilter.doFilter (HeaderVerificationFilter.java:34) в org.eclipse.jetty.servlet.ServletHandler $ CachedChain.doFilter (ServletHandler.java:1610) в com.google.appengine.api.blobstore.dev.ServeBlobFilter.doFilter (ServeBlobFilter.java:63) в org.eclipse.jetty.servlet.ServletHandler $ CachedChain.doFilter (ServletHandler.java:1610) в com.google.apphosting.utils.servlet.TransactionCleanupFilter.doFilter (TransactionCleanupFilter.java:48) в org.eclipse.jetty.servlet.ServletHandler $ CachedChain.doFilter (ServletHandler.java:1610) в com.google.appengine.tools.development.jetty9.StaticFileFilter.doFilter (StaticFileFilter.java:123) в org.eclipse.jetty.servlet.ServletHandler $ CachedChain.doFilter (ServletHandler.java:1610) в com.google.appengine.tools.development.DevAppServerModulesFilter.doDirectRequest (DevAppServerModulesFilter.java:366) в com.google.appengine.tools.development.DevAppServerModulesFilter.doDirectModuleRequest (DevAppServerModulesFilter.java:349) в com.google.appengine.tools.development.DevAppServerModulesFilter.doFilter (DevAppServerModulesFilter.java:116) в org.eclipse.jetty.servlet.ServletHandler $ CachedChain.doFilter (ServletHandler.java:1610) вcom.google.appengine.tools.development.DevAppServerRequestLogFilter.doFilter (DevAppServerRequestLogFilter.java:44) в org.eclipse.jetty.servlet.ServletHandler $ CachedChain.doFilter (ServletHandler.java:1602) в org.eclipse.jetty.servlet.ServletHandler.doHandle (ServletHandler.java:540) в org.eclipse.jetty.server.handler.ScopedHandler.handle (ScopedHandler.java:146) в org.eclipse.jetty.security.SecurityHandler.handle (SecurityHandler.java:524) в org.eclipse.jetty.server.handler.HandlerWrapper.handle (HandlerWrapper.java:132) в org.eclipse.jetty.server.handler.ScopedHandler.nextHandle (ScopedHandler.java:257) в org.eclipse.jetty.server.session.SessionHandler.doHandle (SessionHandler.java:1588) в org.eclipse.jetty.server.handler.ScopedHandler.nextHandle (ScopedHandler.java:255) в org.eclipse.jetty.server.handler.ContextHandler.doHandle (ContextHandler.java:1345) в org.eclipse.jetty.server.handler.ScopedHandler.nextScope (ScopedHandler.java:203) в org.eclipse.jetty.servlet.ServletHandler.doScope (ServletHandler.java:480) в org.eclipse.jetty.server.session.SessionHandler.doScope (SessionHandler.java:1557) в org.eclipse.jetty.server.handler.ScopedHandler.nextScope (ScopedHandler.java:201) в org.eclipse.jetty.server.handler.ContextHandler.doScope (ContextHandler.java:1247) в com.google.appengine.tools.development.jetty9.DevAppEngineWebAppContext.doScope (DevAppEngineWebAppContext.java:94) в org.eclipse.jetty.server.handler.ScopedHandler.handle (ScopedHandler.java:144) в org.eclipse.jetty.server.handler.HandlerWrapper.handle (HandlerWrapper.java:132) в com.google.appengine.tools.development.jetty9.JettyContainerService $ ApiProxyHandler.handle (JettyContainerService.java:595) в org.eclipse.jetty.server.handler.HandlerWrapper.handle (HandlerWrapper.java:132) в org.eclipse.jetty.server.Server.handle (Server.java:502) в org.eclipse.jetty.server.HttpChannel.handle (HttpChannel.java:364) в org.eclipse.jetty.server.HttpConnection.onFillable (HttpConnection.java:260) в org.eclipse.jetty.io.AbstractConnection $ ReadCallback.succeeded (AbstractConnection.java:305) в org.eclipse.jetty.io.FillInterest.fillable (FillInterest.java:103) в org.eclipse.jetty.io.ChannelEndPoint $ 2.run (ChannelEndPoint.java:118) в org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.runTask (EatWhatYouKill.java:333) в org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.doProduce (EatWhatYouKill.java:310) в org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.tryProduce (EatWhatYouKill.java:168) в org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.run (EatWhatYouKill.java:126) в org.eclipse.jetty.util.thread.ReservedThreadExecutor $ ReservedThread.run (ReservedThreadExecutor.java:366) в org.eclipse.jetty.util.thread.QueuedThreadPool.runJob (QueuedThreadPool.java:765) в org.eclipse.jetty.util.thread.QueuedThreadPool $ 2.run (QueuedThreadPool.java:683) at java.lang.Thread.run (Thread.java:748)

Операция регистрации сущностей завершена. Это происходит при запуске сервера:

public void contextInitialized(ServletContextEvent event) {

    ObjectifyService.register(Consumer.class);
    ObjectifyService.register(Administrator.class);
    ObjectifyService.register(Uploader.class);
    ObjectifyService.register(File.class);
}

но после этого я не могу визуализировать сущности в хранилище данных. Должен ли я увидеть их, верно? (Я уверен, что он регистрирует операции, я проверил это в режиме отладки)

Может ли кто-нибудь мне помочь?

Ответы [ 2 ]

0 голосов
/ 20 января 2019

Спасибо за вашу помощь! Я решил, добавив

    <plugin>
        <groupId>org.eclipse.jetty</groupId>
        <artifactId>jetty-maven-plugin</artifactId>
        <version>9.4.14.v20181114</version>
    </plugin>
0 голосов
/ 16 января 2019

Это исключение выбрасывается из appengine SDK - похоже, что-то вроде проблемы конфигурации. Он должен содержать сообщение об исключении, объясняющее проблему.

Регистрация объектов ничего не делает с данными в хранилище данных. Он только настраивает программное обеспечение в вашем приложении VM. Хранилище данных показывает сущности, которые вы сохранили - помните, что в значительной степени это без схемы; Вы можете создавать произвольные виды в любое время.

Может быть, сделать шаг назад и реализовать быстрый всплеск, чтобы ознакомиться с окружающей средой. Пропустите Objectify на секунду и напишите приложение, которое использует низкоуровневый API (DatastoreServiceFactory и DatastoreService) для записи одного простого тестового объекта в хранилище данных. Как только это сработает (проверка вашего конфига), перейдите к Objectify.

...