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

同事在测试环境中升级定时任务的Listener后,系统启动时报错找不到数据源。通过分析发现问题是由于Listener在数据源建立连接之前尝试使用数据源导致。最终解决方案是将Listener改为Servlet并在web.xml中设置其最后加载。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

问题描述:

 

同事在测试环境升级一个定时任务的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)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值