【发布时间】:2018-01-06 12:51:57
【问题描述】:
我有一个 SQL 实例“MySQL 2nd Gen 5.7”,它必须处理来自 Google App Engine 的简单更新查询操作。
此 Google App Engine 标准 Java 项目服务是使用 JDK 1.8, 日食氧气, 休眠 3, 和经典的 servlet 内容。
每当我从我的计算机上运行该项目时,连接都会正常工作,并且程序将毫无错误地执行。但是当我将它部署到 Google 创建一个新版本时,如果我尝试它,查询页面将加载 30 秒,直到出现错误 500。 错误详情:
网站展示:
错误:服务器错误
服务器遇到错误,无法完成您的请求。 请在 30 秒后重试。
堆栈跟踪的显示:
hbt.HibernateUtil 中的 java.lang.ExceptionInInitializerError。 (HibernateUtil.java:21) 在 dao.TurnoDAO.getTurno (TurnoDAO.java:69) 在 Controlador.Main.getTurno (Main.java:32) 在 RegularizarTurno.doPost (RegularizarTurno.java:33) 在 javax.servlet.http.HttpServlet.service (HttpServlet.java:637) 在 javax.servlet.http.HttpServlet.service (HttpServlet.java:717)
问题是 SessionFactory 不会创建,因为项目无法连接到数据库,就像我的电脑一样。 因此,正如 Google 文档中所说,如果服务在同一个 GoogleProject 中运行,则不会出现访问问题,那么答案不应该是权限方式。
打包hbt;
导入 org.hibernate.SessionFactory; 导入 org.hibernate.cfg.AnnotationConfiguration;
导入实体。*;
public class HibernateUtil{
private static final SessionFactory sessionFactory;
static {
try {
AnnotationConfiguration config = new AnnotationConfiguration();
config.addAnnotatedClass(Turno.class);
config.addAnnotatedClass(Persona.class);
sessionFactory = config.buildSessionFactory();
}catch (Throwable ex){
System.err.println("Initial SessionFactory creation failed." + ex);
throw new ExceptionInInitializerError(ex); //LINE 21
}
}
public static SessionFactory getSessionFactory(){
return sessionFactory;
}
}
所以,IP 寻址工作正常,权限应该没问题,与编码相关的一切都很好(因为在 2 台电脑上测试过)。我错过了什么?我应该获得任何特殊权限吗?提前致谢
【问题讨论】:
-
您是否更改了数据库配置?它是否尝试从 google 连接到您的本地数据库?
-
@Konrad 你好,是的,它与本地主机完美连接(这很奇怪)。 db config,hibernate.config 文件是什么意思?一旦项目在 localhost 中运行,我就将其部署到 GAE。谢谢!
标签: java mysql hibernate google-app-engine servlets