问题描述:TOMCAT启动时servlet会从数据库中加载内容到Constants类作为静态变量赋值,但此时ORACLE可能没有启动,导到后面使用到静态变量的功能出现问题;
解决:修改tomcat与oracle的启动顺序
方法:
原因如下:
Tomcat启动时DpcisSystemInit类需从数据库加载汇率exchrate等值做为Constants类的静态变量,供“入仓单接单”等功能使用;
但因机器重启后Tomcat启动比Oracle启动快,这些值并没有得到加载,导致接单时查询语句异常;
解决方法:
1、 修改注册表,使Tomcat服务依赖于oracle服务启动;(该设置重启服务器生效)
修改方法如下:打开注册表目录HKEY_LOCAL_MACHINE/ SYSTEM/ CurrentControlSet/ Services/ Tomcat6
新增类型为“多字符串值”,数值名称:DependOnService,数值数据为:OracleServiceORCL(为对应的oracle服务名)
修改完后机器重启时,tomcat在oracle服务启动再启动
2、 在DpcisSystemInit类先检测数据库连接,如果连接不成功则等待20秒,待数据库启动后完成初始化;