Quartz でジョブをスケジュールしようとしていて、ErpConfigContext をスケジュールすることはできません。リクエストを実行すると、正常に動作します。
ただし、スケジュールされたジョブでは、これはエラーを返します。
//リクエスト作業
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
new ODataScheduledFetch().execute();
}
//Job クラスが機能しない public class JobProductPricing implements Job {
@Override
public void execute(JobExecutionContext arg0) throws JobExecutionException {
// TODO Auto-generated method stub
new ODataScheduledFetch().execute();
}
}
ODataScheduledFetch().execute() を実行し、いくつか考えてこのメソッドを呼び出し、実行時に query.execute(new ErpConfigContext()); を実行します。スケジュール ジョブでのみエラーを返す
private boolean tryRequestERP(ODataQuery query,ODataQueryResult[] queryResult) {
boolean boReturn=false;
try {
//queryResult
queryResult[0] = query.execute(new ErpConfigContext());
boReturn = true;
}catch(Exception e) {
String error = e.toString();
System.out.println(error);
boReturn = false;
}
return boReturn;
}
そして、このエラーを受け取りました:
[ com.sap.cloud.sdk.cloudplatform.connectivity.exception.DestinationAccessException: ConnectivityConfiguration の取得に失敗しました: RequestContext が利用できません。リクエストによってトリガーされないバックグラウンド タスクを実行するときに、RequestContextServletFilter を正しく構成したか、またはロジックを RequestContextExecutor にラップしましたか? ]
このErpConfigContextの作成で例外がスローされました
私が得られない答えがあります...
編集: コードをバックグラウンド ジョブ (リクエストによってトリガーされない) で実行する場合は、コードを RequestContextExecutor::execute でラップする必要があることに注意してください。
"