我有以下两个问题:
如何
GlassFish 4
通过 Eclipse Juno 或其他方式在服务器上启动 java 类(不是 servlet 或 JavaBean)?在启动时运行它的正确方法是什么?
我有使用JDNI
功能并需要在服务器上运行的 Java 类。怎么做?
我发现了一些关于在服务器启动时运行它的信息,这些信息归结为以下选项:
- 使用
@Startup
and@Singleton
注释(据我所知,它专门用于 EJB) - 实现
LifecycleListener
接口 - 实现
Startup
接口
Oracle GlassFish Server 应用程序开发指南明确指出:
生命周期侦听器模块已弃用。包括对它们的支持是为了向后兼容。建议改用 org.glassfish.api.Startup 接口。
当我添加org.glassfish.api.*
导入并让我的类实现Startup
接口Eclipse
时,警告我它已被弃用。所以我不确定那里还剩下什么,因为我的班级不是 EJB。无论如何,我继续进行Startup interface
并满足它的要求,添加了以下方法:
@Override
public Lifecycle getLifecycle() {
return Lifecycle.SERVER;
}
在 Eclipse 中,我停止并启动了服务器,但该类似乎没有运行。我的班级有 System.out.println() 调用,但我在服务器和控制台选项卡和服务器日志中都没有看到它的消息。
所以这是我卡住了。
将不胜感激您的建议。
澄清:
我的问题中与启动相关的部分是指服务器(即GlassFish
)启动(而不是 Web 应用程序启动)。我需要GlassFish
在服务器启动时强制实例化这个类,并让它在服务器生命周期内运行。
它基本上是一个消息侦听器,需要监控队列并响应来自各种发送者的请求。