Java + Hibernate4 + GWT + App Engine = ошибка InitialContext - PullRequest
1 голос
/ 13 марта 2012

Я пытаюсь разработать простое веб-приложение, используя GWT + hibernate4 + Apache Tomcat. Теперь я написал свои простые классы для GWT & hibernate (впервые используя сервер App Engine по умолчанию), но при отправке данных на сервер я получаю сообщение об ошибке, которое возникает в классе

public class HibernateUtil {
private static SessionFactory sessionFactory;
private static ServiceRegistry serviceRegistry;

static SessionFactory getSessionFactory() throws HibernateException {
    Configuration configuration = new Configuration();
    configuration.configure();
    serviceRegistry = new ServiceRegistryBuilder().applySettings(configuration.getProperties()).buildServiceRegistry();        
    sessionFactory = configuration.buildSessionFactory(serviceRegistry);
    return sessionFactory;
}

}

в строке sessionFactory = configuration.buildSessionFactory (serviceRegistry); Вот эта трассировка стека

    java.lang.NoClassDefFoundError: javax.naming.InitialContext is a restricted class. Please see the Google  App Engine developer's guide for more details.
    at com.google.appengine.tools.development.agent.runtime.Runtime.reject(Runtime.java:51)
at org.hibernate.service.jndi.internal.JndiServiceImpl.buildInitialContext(JndiServiceImpl.java:77)
at org.hibernate.service.jndi.internal.JndiServiceImpl.bind(JndiServiceImpl.java:107)
at org.hibernate.internal.SessionFactoryRegistry.addSessionFactory(SessionFactoryRegistry.java:79)
at org.hibernate.internal.SessionFactoryImpl.<init>(SessionFactoryImpl.java:440)
at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1737)
at ru.leti.alexeeva.server.HibernateUtil.getSessionFactory(HibernateUtil.java:17)

Есть ли способ обойти?

1 Ответ

1 голос
/ 13 марта 2012

То, что происходит, это именно то, что написано:

"java.lang.NoClassDefFoundError: javax.naming.InitialContext - это класс с ограниченным доступом. Дополнительные сведения см. В руководстве разработчика Google App Engine."

Ваш код не будет работать таким образом, из-за белого списка JRE Google App Engine. Другими словами, вы не можете использовать все классы и библиотеки Java, которые можно использовать для запуска «автономного» сервера приложений Java, такого как Tomcat.

См. Точный список того, какие классы Java разрешено использовать в приложении, работающем в Google App Engine:

http://code.google.com/appengine/docs/java/jrewhitelist.html

...