コールアウトの制限事項
Apex コードで、HTTP 要求または Web サービスコールに対するコールアウトを実行する場合に次の制限が適用されます。Web サービスコールには、SOAP API コールまたは外部の Web サービスコールを使用できます。
- 1 つの Apex トランザクションで、HTTP 要求または API コールに対するコールアウトを最大 100 回実行できます。
- デフォルトのタイムアウトは 10 秒です。カスタムタイムアウトはコールアウトごとに定義できます。最小値は 1 ミリ秒、最大値は 120,000 ミリ秒です。Web サービスまたは HTTP コールアウトのカスタムタイムアウトの設定方法については、次のセクションの例を参照してください。
- 1 つの Apex トランザクションによる各コールアウトのタイムアウトの累積値は、最大 120 秒です。累積値とは、特定の Apex トランザクションによって呼び出されたすべてのコールアウトのタイムアウトを合計した値です。
- 同じトランザクション内に待機中の操作が存在する場合はコールアウトを実行できません。操作が待機中となるものには、DML ステートメント、非同期 Apex (future メソッドや Apex 一括処理ジョブなど)、スケジュール済み Apex、メールの送信があります。このような操作を行う前に、コールアウトを実行するようにします。
- 同じトランザクション内で疑似コールアウトより前に待機中の操作が発生する可能性があります。「DML 操作と擬似コールアウトの実行」または「DML 操作と擬似コールアウトの実行」を参照してください。
- ヘッダー Expect: 100-Continue がコールアウト要求に追加されていると、HTTP/1.1 100 Continue 応答が外部サーバーから返されない場合にタイムアウトが発生します。
コールアウトタイムアウトの設定
次の例では、Web サービスコールアウトのカスタムタイムアウトを設定します。この例では、サンプルの WSDL ファイルと生成された DocSamplePort クラス (「生成される WSDL2Apex コード」を参照) を使用します。スタブの timeout_x 変数に値を割り当てることにより、ミリ秒単位でタイムアウト値を設定します。
次に、HTTP コールアウトのカスタムタイムアウトの設定の例を示します。