我有一个SQL实例“MySQL 2nd Gen 5.7”,它必须处理来自Google App Engine的简单更新查询操作。
此Google App Engine标准Java项目服务已创建 JDK 1.8, Eclipse Oxygen, Hibernate 3, 和经典的servlet包括在内。
每当我从计算机运行项目时,连接都将正常运行,程序将无错误地执行。但是当我将其部署到Google创建新版本时,如果我尝试它,查询页面将加载30秒,直到出现错误500。 错误详情:
网站显示:
错误:服务器错误
服务器遇到错误,无法完成您的请求。 请在30秒后再试一次。
显示堆栈跟踪:
hbt.HibernateUtil中的java.lang.ExceptionInInitializerError。 (HibernateUtil.java:21)在dao.TurnoDAO.getTurno(TurnoDAO.java:69)at at RegularizarTurno.doPost中的controlador.Main.getTurno(Main.java:32) (RegularizarTurno.java:33)在javax.servlet.http.HttpServlet.service (HttpServlet.java:637)在javax.servlet.http.HttpServlet.service (HttpServlet.java:717)
问题是SessionFactory不会创建,因为项目无法连接到数据库,在我的计算机中也是如此。 因此,正如在Google文档中所说,如果服务在同一个GoogleProject中运行,则无法访问问题,答案不应该是权限方式。
package hbt;
import org.hibernate.SessionFactory; import 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台PC上测试过)。我错过了什么?我应该要求特殊权限吗?提前致谢
答案 0 :(得分:0)
答案:有一个奇怪的权限问题,即GAE不允许访问具有相同项目ID的数据库。它通过允许所有网络访问数据库来解决。风险很大,我们仍然需要有密码的用户才能进入。非常感谢。