フォーラム: 公開討議 (スレッド #23630)

テストクラス作成し実行した時の挙動の不具合 (2009-08-13 22:23 by さくら #45414)

こんにちは、お世話になります。

今、テストクラスを作成しており、標題の通りのエラーが下記クラスを実行すると起こります。
フレームワーク側で悪さを起こしてるように思えるのですが、、、。
エラーについて調べてもよくわからず困ってます。

Couldn't find a destroy method named 'close' on bean with name 'dataSource'

誰かご教授お願いできないでしょうか。
下記に、クラスと、コンソールを貼り付けます。

【RealizationTest.java】※テストクラス
----------------------------------------------------------------------------------------------------
package logic;

import jp.terasoluna.fw.dao.QueryDAO;

public class RealizationTest extends DaoTestCase {

public void testGetChildJobContext01() {
System.out.println("####testGetChildJobContext01 -Start######");
System.out.println("####testGetChildJobContext01 -End######");
}

@Override
protected String[] doGetConfigLocations() {
System.out.println("####doGetConfigLocations -Start######");
return new String[] {"/dao-test.xml"};
}

/**
* 初期化メソッド。
* (初期データの投入など必要に応じて実装)
*/
@Override
protected void setUpData() throws Exception {
System.out.println("####setUpData -Start######");
System.out.println("####setUpData -End######");

}

/**
* 終了時メソッド。
* (テスト終了時に行う処理を実装)
*/
@Override
protected void cleanUpData() throws Exception {
System.out.println("####cleanUpData -Start######");
System.out.println("####cleanUpData -End######");
}
}



----------------------------------------------------------------------------------------------------

【実行コンソール】
----------------------------------------------------------------------------------------------------
####doGetConfigLocations -Start######
2009-08-13 22:13:22,143 INFO [logic.RealizationTest] - Loading context for locations: jp/terasoluna/utlib/spring/DaoTestCase.xml,/dao-test.xml
2009-08-13 22:13:22,878 INFO [logic.RealizationTest] - Began transaction (1): transaction manager [org.springframework.jdbc.datasource.DataSourceTransactionManager@113beb5]; default rollback = true
####setUpData -Start######
####setUpData -End######
####testGetChildJobContext01 -Start######
####testGetChildJobContext01 -End######
####cleanUpData -Start######
####cleanUpData -End######
2009-08-13 22:13:22,878 INFO [logic.RealizationTest] - Rolled back transaction after test execution
2009-08-13 22:13:22,878 ERROR [org.springframework.beans.factory.support.DisposableBeanAdapter] - Couldn't find a destroy method named 'close' on bean with name 'dataSource'

----------------------------------------------------------------------------------------------------
一番最後に出力されている↓

2009-08-13 22:13:22,878 ERROR [org.springframework.beans.factory.support.DisposableBeanAdapter] - Couldn't find a destroy method named 'close' on bean with name 'dataSource'

ここの部分です。
設定ファイルの『dataAccessContext-batch.xml』に記述されている、dataSourceのdestroy-method="close"がないせい?

よくわかりません。。

よろしくお願い致します。

m(_ _)m

メッセージ #45414 への返信×

Wiki文法は使えません
ログインしていません。投稿を区別するために投稿者のニックネームをつけてください(ニックネームの一意性は保証されません。全く別の人も同じ名前を利用することが可能ですので本人であることの特定には利用できません。本人であることを保証したい場合にはログインして投稿を行なってください)。 ログインする

RE: テストクラス作成し実行した時の挙動の不具合 (2009-08-18 23:51 by yggd #45448)

Bean定義ファイルの、id="dataSource" で指定されたデータソース実装クラスから、
リソース解放時に呼び出される close()メソッドが見つからなかった旨の
エラーメッセージが表示されています。

例として、Commons-DBCP によるデータソースクラス:"org.apache.commons.dbcp.BasicDataSource" にはclose() メソッドが
用意されていますが、
"org.springframework.jdbc.datasource.DriverManagerDataSource" など、
こちらに close() メソッドを持たない、別のデータソース実装クラスが
指定されている可能性があります。

以下、ブランクプロジェクトにおけるデフォルトのデータソース指定
dataAccessContext-batch.xml の抜粋を転載いたしますので、
class 属性の完全修飾名をご確認いただければと存じます。

[ ブランクプロジェクト内の dataAccessContext-batch.xml 抜粋 ]
---
<!-- Basicデータソース -->
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
<property name="driverClassName" value="${jdbc.driverClassName}" />
<property name="url" value="${jdbc.url}" />
<property name="username" value="${jdbc.username}" />
<property name="password" value="${jdbc.password}" />
<property name="poolPreparedStatements" value="true" />
<property name="defaultAutoCommit" value="false" />
<!-- property name="maxActive" ref="threadSize"/ -->
</bean>
---
#45414 への返信

メッセージ #45448 への返信×

Wiki文法は使えません
ログインしていません。投稿を区別するために投稿者のニックネームをつけてください(ニックネームの一意性は保証されません。全く別の人も同じ名前を利用することが可能ですので本人であることの特定には利用できません。本人であることを保証したい場合にはログインして投稿を行なってください)。 ログインする