0

jtdsドライバーをcommons-dbcp接続プールとして使用する Java アプリケーションがあります。このアプリケーションは に接続しますSybase ASE 12.5。定期sybase的にメンテナンスのため再起動します。再起動後、アプリケーションは に再接続しようとしますsybaseが、次の例外で常に失敗しているようです:

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>

ネットワーク インターフェイスを無効にしてから有効にしてネットワーク障害をエミュレートしようとすると、すべてが期待どおりに機能し、アプリが正常に再接続されます。

ドライバーも試しjconnect sybaseましたが、成功しませんでした。

完全修飾オブジェクト名を指定することでこの問題を回避できることは理解していますが、その場合、ソースを何度も編集する必要があるため、より簡単な解決策を探しています。

誰かがそのような問題に直面したことがありますか?

4

1 に答える 1

0

さて、この問題を克服するために、検証クエリをから変更する必要がありました

select 1

select name from dbTD..sysobjects where name='sysobjects'
于 2011-11-29T06:37:26.247 に答える