jersey - JAX-RS:如何在启动时运行方法(没有 servlet)
问题描述
我有一个 JAX-RS (Jersey) 服务器,用于注册和绑定我的东西。
我想在服务器启动时打印横幅。我想使用 JAX-RS 框架而不是Web 服务器的平台(即,没有 Jetty、Netty、Thorntail 等钩子)来做到这一点。
我看到以下内容提到了经过验证的真实 Servlet 做事方式: Jax rs:如何在每次服务器重新启动时自动运行方法?,但这不起作用,因为我没有在我的服务器中运行 servlet 容器,因此永远不会进行生命周期调用。
我想一定有一个 JCA-ish 类型的对象,我可以注册Application
/ResourceConfig
有这样的生命周期调用,但我什至找不到任何你可以实际注册的东西的列表。
不要抱怨(但我会),但我无法确定这是否如此困难,因为当他们将项目移至 eclipse 时,他们破坏了旧官方文档的每个超链接,或者它只是像 Spring 一样隐含,以至于它只通过 github'ing 其他人的代码并意识到“哦,我不知道你能做到这一点”来工作。
解决方案
Jersey 有Event Listeners。你会想要使用ApplicationEventListener
并且ApplicationEvent.Type
你可能想要听的来打印横幅是INITIALIZATION_FINISHED
public class MyApplicationEventListener
implements ApplicationEventListener {
@Override
public void onEvent(ApplicationEvent event) {
switch (event.getType()) {
case INITIALIZATION_FINISHED:
printBanner();
break;
}
}
@Override
public RequestEventListener onRequest(RequestEvent requestEvent) {
return null;
}
}
推荐阅读
- swiftui - 如何在自定义 SwiftUI 视图上添加自定义点击处理程序?
- java - RxJava2 - 将对象处理的结果分组到 Map
> - sql - 为什么在表 (acct_trans) 中插入事务详细信息时出现 oracle 存储过程错误?
- sql-server - sql中的多个数据库创建脚本
- python - 使用日期时间作为键的嵌套字典中的 Python 字典 TypeError
- android - 热重载不起作用,需要热重启Flutter
- python - 从包含给定字数最大值的字符串列表创建子列表
- html - 我不知道如何解决这个悬停效果
- python-3.x - 通过Thonny中的Pico从pyserial问题名称错误导入序列
- haskell - 从安全货币中存储价值