私は自分のプロジェクトでSpring Integrationを使用しています。行を挿入し結果を返さないストアドプロシージャがあります。 int-jdbc:stored-proc-outbound-gateway
を使用すると、フローは終了して次のチャネルに接続しません。結果を返さないストアドプロシージャを処理する最善の方法
DEBUG [org.springframework.jdbc.core.JdbcTemplate.doInCallableStatement] CallableStatement.execute() returned 'false'
DEBUG [org.springframework.jdbc.core.JdbcTemplate.doInCallableStatement] CallableStatement.getUpdateCount() returned 0
DEBUG [org.springframework.jdbc.core.JdbcTemplate.extractReturnedResults] CallableStatement.getUpdateCount() returned -1
私の要件は、ストアドプロシージャが結果を返さない場合でもフローを継続することです。どのような方法で対処するのですか?
UPDATE
アルテムの応答の後、私は次のようにストアドプロシージャの発信チャネルアダプタを設定している:
<int:service-activator ref="msgHandler" method="buildRequestBasedDataSource" input-channel="PQPutUserBAInformation-SPCall2" output-channel="PQPutUserBAInformation-publishSubscribeChannel"/>
<!-- PQPutUserBAInformation Channel -->
<int:publish-subscribe-channel id="PQPutUserBAInformation-publishSubscribeChannel" />
<int-jdbc:stored-proc-outbound-channel-adapter
id="PQPutUserBAInformation-AWD-StoredProcedure2"
channel="PQPutUserBAInformation-publishSubscribeChannel"
data-source="routingDataSource"
stored-procedure-name="ZSPPQINSERTUSERIDBA"
ignore-column-meta-data="true"
use-payload-as-parameter-source = "false" >
<int-jdbc:sql-parameter-definition name="P_USERID" direction="IN" type="VARCHAR" />
<int-jdbc:parameter name="P_USERID" expression="#xpath(payload, '//CurrentUserID')" />
</int-jdbc:stored-proc-outbound-channel-adapter>
<!-- Service Activator to build the Message from the Stored Procedure ResultSet -->
<int:service-activator input-channel="PQPutUserBAInformation-publishSubscribeChannel" ref="msgHandler" method="buildMessageFromExtSysResponse" />
重複した質問。ここを参照してください。私は同じことを尋ねた:) http://stackoverflow.com/questions/42676147/spring-integration-chain-flow-handling-void-gateway-calls/42676419#42676419 – haju
私のストアドプロシージャが挿入中に失敗した場合私はエラーメッセージが必要です。だから、あなたの質問はその場合に私を助けないかもしれません。 –
ストアドプロシージャで例外をキャッチし、それを飲み込んでいますか? Oracleの例外をゲートウェイに伝播し、エラー・チャネルを使用できるようにする必要があります。それが私の誤りのためにしたことです。 – haju