java - 无法安排作业 ErpConfigContext
问题描述
我正在尝试使用 Quartz 和 Cant Schedule ErpConfigContext 安排工作,当我提出请求时,工作正常。
但是在预定的工作中,这会返回一个错误。
//请求工作
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
new ODataScheduledFetch().execute();
}
//Job 类不工作 public class JobProductPricing 实现 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 中?]
有一个我没有得到的答案...
" 编辑:请注意,在后台作业(不是由请求触发)中运行代码时,您必须使用 RequestContextExecutor::execute 包装代码。
"
解决方案
查看您的代码示例,我假设您没有使用 Spring Boot,这是链接问题的重点。
您需要做的是将预定的呼叫包装成RequestContextExecutor::execute
呼叫。对于您的示例,它看起来像这样:
@Override
public void execute(JobExecutionContext arg0) throws JobExecutionException {
new RequestContextExecutor().execute(() -> {
new ODataScheduledFetch().execute();
});
}
根据您在ODataScheduledFetch::execute
通话中所做的事情,您可能需要使用JwtBasedRequestContextExecutor
(仅在 CloudFoundry 上)。
对于更多的背景:
所有*Accessor
类(例如TenantAccessor
, )都依赖于在当前线程/请求中可用的DestinationAccessor
所谓的。RequestContext
这样的 aRequestContext
是由RequestContextExecutor
上述创建的。
为了使您在通常的用例(即接收请求)中的生活更轻松,我们会自动加载RequestContextServletFilter
为您包装所有传入请求的 。
这就是您的代码在请求中工作但未计划的原因。
推荐阅读
- cluster-computing - 在 Apache NiFi 中创建两个节点集群时连接被拒绝
- batch-file - 带有来自命令提示符的参数的“用户信息”的 BAT 文件
- java - 如何将 yyy/MM/ss hh:mm:ss 转换为秒?
- angular - 如何用角度7覆盖离子4中的离子后退按钮动作
- .net-core - 如何在 Azure DevOps 管道中配置环境变量?
- java - 在一行中对可能的空对象调用 void
- selenium-webdriver - Microsoft Edge WebDriver 引发“意外错误。尝试初始化时出现未知错误
- laravel - Laravel Socialite google+ api 授权域问题?
- flutter - SchedulerBinding vs WidgetsBinding
- python - 无法为 RethinkDB 安装 Python 驱动程序