新服务器部署Grails应用启动失败:创建sessionFactory的bean报错
问题根因定位
从提供的异常栈可直接定位核心问题:Hibernate初始化JDBC服务时触发空指针,本质是应用无法获取有效数据库连接,导致sessionFactory创建失败,最终连带事务管理器、Spring上下文初始化全部中断。
新手可执行排查步骤
- 核对数据库配置
从旧服务器硬盘中找到原部署包的配置文件,路径一般为旧Tomcat部署目录下的WEB-INF/classes/application.properties或WEB-INF/classes/grails-app/conf/DataSource.groovy,提取其中数据库地址、库名、用户名、密码,和新服务器上部署的war包解压后的同路径配置文件逐一对比,确保完全一致。 - 测试数据库连通性
在新服务器使用命令行验证数据库连接:MySQL环境执行mysql -h [提取的数据库地址] -u [提取的用户名] -p,输入密码后确认能否正常登录;PostgreSQL环境执行psql -h [提取的数据库地址] -U [提取的用户名] [提取的库名]。如果连接失败,优先排查数据库白名单是否添加了新服务器IP、密码是否正确、数据库服务是否正常运行。 - 统一数据库驱动版本
从旧服务器原war包的WEB-INF/lib目录中找到数据库驱动jar包(如MySQL驱动为mysql-connector-java-x.x.x.jar),将该jar包拷贝到新服务器部署包的同一路径下覆盖现有文件,避免驱动版本不兼容问题。 - 核对Java版本一致性
查询旧系统使用的Java大版本(Ubuntu14默认一般为Java7或Java8),执行新服务器的java -version命令,确保新旧环境Java大版本完全一致,高版本JDK的兼容问题极易触发此类空指针异常。 - 核对Tomcat数据源配置
如果原应用使用Tomcat JNDI数据源,从旧服务器的Tomcat/conf/server.xml或Tomcat/conf/context.xml文件中找到<Resource>节点的数据源配置,原样复制到新服务器Tomcat的对应配置文件中,不要遗漏参数。 - 修复目录权限
给新服务器Tomcat的部署目录、日志目录授予读写权限,执行命令:
sudo chmod -R 755 [你的Tomcat安装路径] sudo chown -R tomcat:tomcat [你的Tomcat安装路径]
避免因权限不足导致配置文件读取失败。
内容的提问来源于stack exchange,提问作者Michael Fallavollita
相关产品推荐
相关产品推荐

