关于不能初始化ACTION的错误以及排除的办法

最近有测试发邮件说测试WEB前端的时候,有错误报出,我登陆服务器一看,错误代码如下


Error Message
Unable to instantiate Action, counterActionBean, defined for 'counterAction' in namespace '/stat'Error creating bean with name 'counterActionBean' defined in ServletContext resource [/WEB-INF/counter-context.xml]:
Cannot resolve reference to bean 'counterChartService' while setting bean property 'ccs'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'counterChartService' defined in ServletContext resource [/WEB-INF/counter-context.xml]:
Cannot resolve reference to bean 'counterDAO' while setting bean property 'counterDAO'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'counterDAO' defined in ServletContext resource [/WEB-INF/counter-context.xml]:
Cannot resolve reference to bean 'counterDS' while setting bean property 'dataSource'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'counterDS' defined in ServletContext resource [/WEB-INF/counter-context.xml]: Error setting property values; nested exception is org.springframework.beans.PropertyBatchUpdateException; nested PropertyAccessExceptions (1) are: PropertyAccessException 1: org.springframework.beans.MethodInvocationException: Property 'initialPoolSize' threw exception; nested exception is java.sql.SQLException: Unable to start the Universal Connection Pool: oracle.ucp.UniversalConnectionPoolException: Error during pool creation in Universal Connection Pool Manager MBean


里面的错误信息居然是在加载counter-context.xml时候的错误,并点出是[color="red"] initialPoolSize [/color]的错误,counter-context.xml文件如下

<bean id="counterDS" class="oracle.ucp.jdbc.PoolDataSourceFactory" factory-method="getPoolDataSource" lazy-init="true">
<property name="URL" value="${nbg.db.url}" />
<property name="user" value="${nbg.db.user}" />
<property name="password" value="${nbg.db.password}" />
<property name="connectionFactoryClassName" value="oracle.jdbc.pool.OracleDataSource"/>
<property name="connectionPoolName" value="COUNTER_POOL" />
<property name="minPoolSize" value="5" />
<property name="maxPoolSize" value="10" />
<property name="initialPoolSize" value="5" />
<property name="inactiveConnectionTimeout" value="120" />
<property name="validateConnectionOnBorrow" value="true" />
<property name="maxStatements" value="10" />
</bean>

<bean name="counterDAO" class="com.warlock.stat.cdrgui.dao.CounterDAO">
<property name="dataSource" ref="counterDS" />
</bean>

<bean name="counterChartService" class="com.warlock.stat.cdrgui.service.CounterChartService">
<property name="counterDAO" ref="counterDAO" />
</bean>

<bean name="counterActionBean" class="com.warlock.stat.cdrgui.web.action.CounterAction" scope="request">
<property name="ccs" ref="counterChartService" />
</bean>

我先看了官方的文档说的是initialPoolSize 默认的是0,范围在0到integer.max_size之间,然后用sqlplus连接下oracle数据库,发现也没有问题,最后我将它这个配置注释掉,初始化不分配任何的poolsize 问题得到了解决; 原因是:服务器上的oracle不能分配这么多的连接,从而造成了错误的产生,这个问题应该是环境的问题,并不是spring的问题。


注:后来发现,果然是环境的问题,主要是用root登陆以后,不能使用sqlplus连接数据库,SQLPLUS不在root权限下面,使用env没有找到,于是修改了/etc/profile然后export了SQLPLUS,同时将ojdbc6.jar加入了/opt/nsn/nstat/lib/下面,上面counter-context.xml的initialPoolSize再加入就没有问题了, 教训是惨痛的。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值