Inboud шлюза:держать сделку в течение весны интеграции поток
<int-http:inbound-gateway id="inbound.gateway"
request-channel="transactional.channel.input"
reply-channel="channel.output"
error-channel="channel.error"
request-payload-type="java.lang.String"
</int-http:inbound-gateway>
Advice определение:
<tx:advice id="advice">
<tx:attributes>
<tx:method name="send" propagation="REQUIRES_NEW" rollback-for="MyClassException"/>
</tx:attributes>
</tx:advice>
Рекомендация конфигурация:
<aop:config>
<aop:advisor advice-ref="advice" pointcut="bean(transactional.channel.input)"/>
</aop:config>
цепь, которая должна быть транзакционными:
<int:chain input-channel="transactional.channel.input" output-channel="non.transactional.channel.input>
<int:service-activator ref="v1.registerUser.service" method="registerUser"/>
<int:service-activator ref="v1.saveObject.service" method="saveObject"/>
</int:chain>
цепи, которая нуждается в транзакции должна быть выполнена ранее, чтобы получить идентификатор объекта генерируется в последнем transational шага цепи:
<int:chain input-channel="non.transactional.channel.input" output-channel="channel.output">
<int:service-activator ref="v1.getObjectId.service" method="getObjectId"/>
<int:object-to-json-transformer/>
</int:chain>
Имея этот упрощенный контекст, когда доступ к идентификатору в службе getObjectId, сделка не имеет был выполнен.
Таким образом, транзакция, по-видимому, совершается на выходном уровне входящего-шлюза.
Это зависит о том, как начинается ваш поток - что у вас есть перед v1.getEvent.channel.input? –
У меня есть входящий-шлюз, подключенный к одной цепочке, и у этого есть 'v1.getEvent.channel.input' в качестве выходного канала так:' (inbound-gateway) '->' (chain) '->' (код I выложили) ' –