2016-12-07 8 views
0

2つの通話を行いたいとしましょう:1つはAに、もう1つはBに送信します。Webサービスの一連の呼び出しをトランザクションにする方法は?

で2回のコールをどのようにして取引するのですか?たとえば、サービスA(DBにデータを挿入する)を呼び出した後、サービスBを呼び出そうとしますが、これは失敗します。 Aサービスを呼び出したときに挿入をどのようにロールバックする必要がありますか?

「ロールバック」メソッドを呼び出す必要がありますか?

この呼び出しも機能しない場合はどうなりますか?

答えて

0

Springフレームワークは、異なるトランザクション管理APIの上に抽象レイヤーを提供します( )。

この読み:サーバー側で作られた挿入をロールバックされていないため、残念ながら、これは私の質問に答えなかった http://docs.spring.io/spring-framework/docs/4.2.x/spring-framework-reference/html/transaction.html

@Transactional(readOnly = true) 
public class DefaultFooService implements FooService { 

    public Foo getFoo(String fooName) { 
     // do something 
    } 

    // these settings have precedence for this method 
    @Transactional(readOnly = false, propagation = Propagation.REQUIRES_NEW) 
    public void updateFoo(Foo foo) { 
     // do something 
    } 
} 
+0

を。あなたがしたのは、新しい取引を開くことだけです。これは私が求めていることではありません。ありがとうございました! – Aditzu

+0

なぜ依存サービスを分離するのですか? Cサービスを作成し、CメソッドでAメソッドとBメソッドを呼び出すことができます。そしてC @transactionalに追加します。 –

+0

これらは外部サービスなので、組み合わせることはできません – Aditzu

関連する問題