0

現在、Spring Batch を使用して SQL サーバーからデータをインポートしています。データソースを構成可能にするために、データソース Bean を「ステップ スコープ」にする必要がありました。しかし、これは私に関係があります。接続プーリングを行うデータソース Bean がステップ スコープである場合、プール内の接続をどのように管理でき、それを使用するメリットさえありますか。

私のデータソースは次のように構成されています。

<bean id="dataSourceMssql" class="org.apache.tomcat.jdbc.pool.DataSource" scope="step">
    <property name="driverClassName" value="${batch.mssql.driver}" />
    <property name="username" value="${batch.mssql.user}" />
    <property name="password" value="${batch.mssql.password}" />
    <property name="removeAbandoned" value="true" />
    <property name="removeAbandonedTimeout" value="3610" />
    <property name="url"
        value="${batch.mssql.connect}#{jobParameters['dburl']}:#{jobParameters['port']}/#{jobParameters['databaseName']}" />
</bean>

なぜステップスコープなのですか?データソースを構成するには、jobParameters を取得する必要があったためです。

何を知りたいですか? 接続プーリングは引き続き発生しますか? (おそらく、Bean リソースは存続し、再利用されます)

助けてくれてありがとう。

4

1 に答える 1

0

スコープ「ステップ」は、Spring バッチ Bean でのみ使用できます。他の Bean (Spring) は、スコープ (シングルトン、プロトタイプ、リクエスト、またはセッション) のみを認識します。

これを処理する通常の方法は、applicatioonContext.xml によって読み取られるプロパティ ファイルでこれらのパラメータを設定することです。

同じ JobParameters を持つジョブは 2 回実行できないため、JobParameters はジョブ関連のパラメーター (パス、ファイル名、日付、seqNo など) を渡すために使用されます。

EDIT:あなたの仕事はマルチスレッドですか?作成されるジョブの大部分はシングル スレッドであるためです。あなたの仕事が実際にシングル スレッドである場合、接続のプールが必要な理由を自問します。

よろしく

于 2013-04-11T14:59:33.493 に答える