@Override
@Async
public void asyncExceptionTest() {
int i=1/0;
}
如何使用Spring
Async框架记录此日志,而不必尝试尝试每种异步方法?它似乎并没有DefaultUncaughtExceptionHandler
像正常的那样通过。
@Async
可以使用自定义配置方法Executor
以记录任何引发的异常。
以下代码实现了此模式。标记为的任何方法@Async
都将使用Executor
method 的返回值public Executor getAsyncExecutor()
。这将返回,HandlingExecutor
它会处理所有日志记录(在这种情况下,它仅显示单词“
CAUGHT!”,但您可以将其替换为日志记录。
@Configuration
@EnableAsync
public class ExampleConfig implements AsyncConfigurer {
@Bean
public Runnable testExec() {
return new TestExec();
}
@Override
public Executor getAsyncExecutor() {
final ThreadPoolTaskExecutor executor = new ThreadPoolTaskExecutor();
executor.setCorePoolSize(7);
executor.setMaxPoolSize(42);
executor.setQueueCapacity(11);
executor.setThreadNamePrefix("MyExecutor-");
executor.initialize();
return new HandlingExecutor(executor);
}
}
public class HandlingExecutor implements AsyncTaskExecutor {
private AsyncTaskExecutor executor;
public HandlingExecutor(AsyncTaskExecutor executor) {
this.executor = executor;
}
@Override
public void execute(Runnable task) {
executor.execute(task);
}
@Override
public void execute(Runnable task, long startTimeout) {
executor.execute(createWrappedRunnable(task), startTimeout);
}
@Override
public Future<?> submit(Runnable task) {
return executor.submit(createWrappedRunnable(task));
}
@Override
public <T> Future<T> submit(final Callable<T> task) {
return executor.submit(createCallable(task));
}
private <T> Callable<T> createCallable(final Callable<T> task) {
return new Callable<T>() {
@Override
public T call() throws Exception {
try {
return task.call();
} catch (Exception e) {
handle(e);
throw e;
}
}
};
}
private Runnable createWrappedRunnable(final Runnable task) {
return new Runnable() {
@Override
public void run() {
try {
task.run();
} catch (Exception e) {
handle(e);
}
}
};
}
private void handle(Exception e) {
System.out.println("CAUGHT!");
}
}
我正在使用带有thymeleaf的Spring Boot,我所有的资源都在Spring应用程序之外的路径上,例如。在dev env上应该使用url解析路径,并且live env继续路径。 为什么资源处理程序不处理这些类型的资源,但是如果我处理没有问题?我错过了什么吗? 编辑:如果是并且位置是url也没有被处理
问题内容: 我试图在Go中启动一个HTTP服务器,该服务器将使用自己的处理程序来提供自己的数据,但与此同时,我想使用默认的http FileServer来提供文件。 我在使FileServer的处理程序在URL子目录中工作时遇到问题。 该代码不起作用: 我期望在localhost:1234 / files /中找到本地目录,但是它返回一个。 但是,如果我将文件服务器的处理程序地址更改为/,它将起作
一个预处理器只是一些代码,运行在加载书之后,和渲染之前,允许您更新和改变本书。可能的用例是: 创建自定义帮助程序{{#include /path/to/file.md}} 更新链接[some chapter](some_chapter.md)自动更改为[some chapter](some_chapter.html),这是 HTML 渲染器功能 用 latex 样式($$ \frac{1}{3}
我试图在db数据配置中使用jndiName属性。xml。这在tomcat中非常有效。然而,在websphere中存在问题。 引发以下异常 确保J2EE应用程序不会在静态代码块内或该J2EE应用程序创建的线程中对“java:”名称执行JNDI操作。此类代码不一定在服务器应用程序请求的线程上运行,因此“java:”名称上的JNDI操作不支持这些代码。[根异常是javax.naming.NameNotF
我正在尝试使用多个处理器类在处理器步骤中处理记录。这些类可以并行工作。目前我已经编写了一个多线程步骤,其中我 设置处理器类的输入和输出行 提交给遗嘱执行人服务 获取所有未来对象并收集最终输出
调用存储引擎的第1个方法是调用新的处理程序实例。 在存储引擎源文件中定义handlerton之前,必须定义用于函数实例化的函数题头。下面给出了1个来自CSV引擎的示例: static handler* tina_create_handler(TABLE *table); 正如你所见到的那样,函数接受指向处理程序准备管理的表的指针,并返回处理程序对象。 定义了函数题头后,用第21个handlerto
主要内容:1. 查看正在运行的进程列表,2. 杀死/终止一个进程,3. 启动一个新的过程在本章中,我们将讨论批处理脚本中涉及的各种进程。 1. 查看正在运行的进程列表 在批处理脚本中,可以使用命令来获取系统中当前正在运行的进程的列表。 语法 以下是命令的选项的说明。 /S system - 指定要连接的远程系统。 /U [domain]user - 指定命令应在其下执行的用户上下文。 /P [password] - 指定给定用户上下文的密码。 提示输入,如果省略。 /M [modul
主要内容:面向读者,前提条件,问题反馈批处理脚本存储在简单的文本文件中,其中包含按顺序依次执行的命令。 脚本是一种可以通过自动化这些命令序列,用来减轻重复执行命令的方法,以便让自动化工作更容易和更高效。 本教程将讨论学习批处理脚本的基本功能以及相关示例,以便于理解。 面向读者 本教程已经为初学者准备了解批处理脚本的基本概念。 前提条件 如果有计算机程序设计和概念,例如变量,命令,语法等是将对学习本教程有帮助。 问题反馈 我们不能保证您