问题描述:
同事在测试环境升级一个定时任务的listener后,启动系统出现找不到数据源的错误。
DBDataSource platformDataSource has not registed !
分析过程:
去掉这个listener后,程序可以正常启动。数据源也可以正常连接。说明中间件的数据源配置没问题。
问题出在新添加到监听上。仔细看过这个新添的监听,发现这个listener用到了数据源。
而litener在加载时数据源还没有建立连接。所以出现数据源找不到的错误。
解决办法:
由于listener优先与servlet加载。而无法在web.xml中指定listener的加载顺序。
只好将listener改为servlet,并在web.xml中指定此servlet最后加载。
9,问题解决。
错误日志:
**** DBDataSource platformDataSource has not registed! java.lang.IllegalArgumentException: **** DBDataSource platformDataSource has not registed! at com.sinosoft.sysframework.reference.DBFactory.getDB(DBFactory.java:180) at com.sinosoft.sysframework.reference.DBManager.getDataSource(DBManager.java:42)at com.sinosoft.sysframework.reference.DBManager.open(DBManager.java:62)at com.sinosoft.platform.bl.facade.BLUtiPlatConfigFacadeBase.findByPrimaryKey(BLUtiPlatConfigFacadeBase.java:132)at com.sinosoft.platform.ui.model.UtiPlatConfigFindByPrimaryKeyCommand.executeCommandStringStringImpl(UtiPlatConfigFindByPrimaryKeyCommand.java:42)at com.sinosoft.platform.ui.model.UtiPlatConfigFindByPrimaryKeyCommand.executeCommand(UtiPlatConfigFindByPrimaryKeyCommand.java:75)at com.sinosoft.sysframework.web.model.BaseCommand.commandFacade(BaseCommand.java:13)at com.sinosoft.sysframework.web.model.BaseSLSBCommandServerDelegate.execute(BaseSLSBCommandServerDelegate.java:9)at com.sinosoft.sysframework.web.model.BaseCommand.execute(BaseCommand.java:9)at com.sinosoft.datacheck.util.TaskManager.getStartDateTime(TaskManager.java:56)at com.sinosoft.datacheck.util.TaskManager.contextInitialized(TaskManager.java:25)at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:3854)at org.apache.catalina.core.StandardContext.start(StandardContext.java:4348)at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:752)at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:732)at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:553)at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)at java.lang.reflect.Method.invoke(Method.java:592)at org.apache.tomcat.util.modeler.BaseModelMBean.invoke(BaseModelMBean.java:297)at org.jboss.mx.server.RawDynamicInvoker.invoke(RawDynamicInvoker.java:164)at org.jboss.mx.server.MBeanServerImpl.invoke(MBeanServerImpl.java:659)