2013-04-10 4 views
1

У меня есть приложение GWT + GAE с базой данных nosql, которая отлично работает в Google App Engine и в плагине eclipse + gwt со встроенным сервером причала в среде разработки. Теперь в производственной среде по многим причинам мне нужно развернуть это приложение на внешнем самоуправляемом сервере, таком как Tomcat или JBoss. Я следую без удачи многих учебников и советов & приемов, как:Как развернуть приложения GWT GAE на внешнем сервере

https://developers.google.com/web-toolkit/doc/latest/DevGuideCompilingAndDebugging#How_do_I_use_my_own_server_in_development_mode_instead_of_GWT%27s

https://groups.google.com/forum/?fromgroups=#!topic/google-appengine-java/LYySmvqdbO8

или Link1Link2Link3Link4Link5

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

Caused by: java.lang.NullPointerException: No API environment is registered for this thread. 
    at com.google.appengine.api.datastore.DatastoreApiHelper.getCurrentAppId(DatastoreApiHelper.java:86) 
    at com.google.appengine.api.datastore.DatastoreApiHelper.getCurrentAppIdNamespace(DatastoreApiHelper.java:96) 
    at com.google.appengine.api.datastore.Query.<init>(Query.java:171) 
    at com.google.appengine.api.datastore.Query.<init>(Query.java:102) 
    at com.googlecode.objectify.impl.QueryImpl.<init>(QueryImpl.java:69) 
    at com.googlecode.objectify.impl.AsyncObjectifyImpl.query(AsyncObjectifyImpl.java:354) 
    at com.googlecode.objectify.impl.ObjectifyImpl.query(ObjectifyImpl.java:207) 
    at com.beoui.geocell.ObjectifyGeocellQueryEngine.query(ObjectifyGeocellQueryEngine.java:52) 
    at com.beoui.geocell.GeocellManager.proximitySearch(GeocellManager.java:381) 

Как я могу развернуть внешние серверы, такие как Tomcat, JBOSS или Jetty? Или it isn't possible?

Мое мнение таково: работает ли приложение корректно на затмение встроенный причалу, каким-то образом можно настроить внешний распределение пристани, чтобы запустить приложение

ответ

1

GAE поставляется с set of services, которые в основном большие внешние системы скрыты за API. Локальный сервер-разработчик - это просто Jetty со встроенной базой данных и уровнем API, имитирующим производственный GAE. Вы не можете использовать сервер dev для производственных целей - он не был создан для этого и не имеет функций параллелизма и надежности производственной системы.

Если вы хотите запустить код GAE где-то еще, то сервис GAE, посмотрите на AppScale или CapeDwarf.

Кроме того, большинство ссылок, которые вы предоставили, имеют дело с запуском приложения GWT на Tomcat/Jetty, но у вас проблемы с AppEngine. GWT и AppEngine - это две отдельные технологии (которые могут работать вместе, но это не требуется).

+0

Я думаю, что CapeDwarf решает мои проблемы, даже если сейчас это эмбриональное распространение, и документации мало. Теперь он дает мне эту ошибку: 'org.jboss.weld.resources.spi.ResourceLoadingException: ошибка загрузки класса org.jboss.capedwarf.admin. DatastoreStatistics at org.jboss.weld.resources.ClassTransformer.loadClass (ClassTransformer.java: 167) at org.jboss.weld.manager.BeanManagerImpl.createAnnotatedType (BeanManagerImpl.java:1026) '. Любые предложения? – fl4l

Смежные вопросы