2011-11-28 100 views
0

后,我有一个使用jtds司机和commons-dbcp作为连接池的Java应用程序。此应用程序连接到Sybase ASE 12.5。不时sybase重新启动的维护。重启后我的应用程序尝试重新连接到sybase,但似乎失败所有的时间,以下情况例外:重新连接的JDBC DataSource的Sybase ASE 12.5数据库重新启动

java.sql.SQLException: Stored procedure 'dbo.pmxSystemDate' not found. Specify owner.objectname or use sp_help to check whether the object exists (sp_help may produce lots of output). at 
    net.sourceforge.jtds.jdbc.SQLDiagnostic.addDiagnostic(SQLDiagnostic.java:368) at 
    net.sourceforge.jtds.jdbc.TdsCore.tdsErrorToken(TdsCore.java:2820) at 
    net.sourceforge.jtds.jdbc.TdsCore.nextToken(TdsCore.java:2258) at 
    net.sourceforge.jtds.jdbc.TdsCore.getMoreResults(TdsCore.java:632) at 
    net.sourceforge.jtds.jdbc.JtdsStatement.executeSQLQuery(JtdsStatement.java:477) at 
    net.sourceforge.jtds.jdbc.JtdsStatement.executeQuery(JtdsStatement.java:1304) 

这里是数据源的spring配置:

<bean id="ds" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close"> 
    <property name="driverClassName" value="net.sourceforge.jtds.jdbc.Driver" /> 
    <property name="url" value="jdbc:jtds:sybase://dbms:6000/dbTD" /> 
    <property name="username" value="sa" /> 
    <property name="password" value="" /> 
    <property name="initialSize" value="5"/> 
    <property name="maxActive" value="10"/> 
    <property name="validationQuery" value="SELECT 1" /> 
    <property name="testOnBorrow" value="true" /> 
    <property name="maxWait" value="10" />  
    <property name="removeAbandoned" value="true" /> 
    <property name="removeAbandonedTimeout" value="10" /> 
    <property name="validationQueryTimeout" value="3" /> 
</bean> 

如果我试图仿效通过禁用然后启用网络接口一切正常,我的应用程序重新连接成功。

我也曾尝试jconnectsybase驱动程序,但没有成功。

我知道我可以通过指定完全限定对象名称来解决此问题,但在这种情况下,我将有很多我的消息来源编辑的,所以我在寻找简单的解决方案。

有任何人面对这样的问题吗?

回答

0

好了,为了解决这个问题,我不得不从

select 1 

更改验证查询

select name from dbTD..sysobjects where name='sysobjects' 
相关问题