WEB.XML中Lisenter与Servlet的加载顺序

来源:互联网 发布:阿里云 表单 编辑:程序博客网 时间:2024/06/18 04:17

问题描述:

 

同事在测试环境升级一个定时任务的listener后,启动系统出现找不到数据源的错误。

DBDataSource platformDataSource has not registed !

分析过程:

去掉这个listener后,程序可以正常启动。数据源也可以正常连接。说明中间件的数据源配置没问题。

问题出在新添加到监听上。仔细看过这个新添的监听,发现这个listener用到了数据源。

而litener在加载时数据源还没有建立连接。所以出现数据源找不到的错误。


解决办法:

 

由于listener优先与servlet加载。而无法在web.xml中指定listener的加载顺序。

只好将listener改为servlet,并在web.xml中指定此servlet最后加载。
<load-on-startup>9</load-on-startup>,问题解决。

 

 

错误日志:

 

**** 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.executeCommandStringS
tringImpl(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)

原创粉丝点击