职业IT人-IT人生活圈

 找回密码
 成为会员
搜索
查看: 655|回复: 1

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

[复制链接]
芷馨 发表于 2011-8-21 11:39 | 显示全部楼层 |阅读模式
   最近有测试发邮件说测试WEB前端的时候,有错误报出,我登陆服务器一看,错误代码如下

Java代码  
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  

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时候的错误,并点出是 initialPoolSize 的错误,counter-context.xml文件如下
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>  

        <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再加入就没有问题了, 教训是惨痛的。

hxy 发表于 2011-8-21 11:39 | 显示全部楼层
推荐链接
见证又一个准百万富翁的诞生!
3G培训就业月薪平均7K+,不3K就业不花一分钱!
20-30万急聘多名天才Java/MTA软件工程师


您需要登录后才可以回帖 登录 | 成为会员

本版积分规则

QQ|手机版|小黑屋|网站帮助|职业IT人-IT人生活圈 ( 粤ICP备12053935号-1 )|网站地图
本站文章版权归原发布者及原出处所有。内容为作者个人观点,并不代表本站赞同其观点和对其真实性负责,本站只提供参考并不构成任何投资及应用建议。本站是信息平台,网站上部分文章为转载,并不用于任何商业目的,我们已经尽可能的对作者和来源进行了通告,但是能力有限或疏忽造成漏登,请及时联系我们,我们将根据著作权人的要求立即更正或者删除有关内容。

GMT+8, 2024-5-17 05:16 , Processed in 0.113946 second(s), 20 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表