1

我尝试使用 GWT + hibernate4 + Apache Tomcat 开发一个简单的 webapp。现在我已经用 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)

有什么办法吗?

4

1 回答 1

1

正在发生的事情正是它所说的:

“java.lang.NoClassDefFoundError: javax.naming.InitialContext 是一个受限类。有关更多详细信息,请参阅 Google App Engine 开发人员指南。”

由于 Google App Engine JRE 白名单,您的代码不会像这样开箱即用地运行。换句话说,您不能使用可以运行“独立”Java 应用服务器(如 Tomcat)的所有 Java 类和库。

查看允许在 Google App Engine 上运行的应用程序中使用哪些 Java 类的精确列表:

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

于 2012-03-13T14:07:19.863 回答