如何配置jetty6来启动非Web应用程序(而不是servlet)?我的Java应用程序是一个通过tcp监听ampq消息的rabbitmq消费者。我可以让jetty init()调用我的Main入口点。有更好的方法吗?
答案 0 :(得分:2)
为什么不提供一个简单的servlet来提供init()
方法并从那里调用你的应用程序?即将它包装在一个无所事事的servlet包装器中。
它没有 来回复GETs
/ POSTs
等。虽然你可能会发现它很有用并通过简单的HTML页面报告应用程序状态。< / p>
答案 1 :(得分:2)
如果您想要一个完整的答案,您需要提供更多信息,但我可以建议一些方法,这将提供不同的行为(您需要为您的用例选择正确的行为)< / p>
1。只需将正确的代码放入jetty.xml
文件即可。 XML文件是一种非常完整的执行语言,因此您只需调用对象上的方法即可。一个适当的静态方法,以及一个<call>
标签应该可以做到这一点
缺点是,你并没有从Jetty那里得到任何东西 - 你只是将你的启动方法绑定到Jetty使用的相同启动过程中。
2. 构建实现Jetty LifeCycle
界面的组件(您最好的选择是扩展AbstractLifeCycle
),然后调用Server.addLifeCycle()
这将允许您在Jetty启动时打开您的端口,在Jetty,停止等时干净地关闭。
但你得到的只是生命周期。你没有得到任何有关部署的信息。
3. 与选项1相同,但将其放在jetty-web.xml
(或jetty-env.xml
)中,这样可以将其绑定到WAR文件的部署中。<登记/>
它对选项1的收购并不多,但如果您尝试将应用程序部署到现有的Jetty设置,它可能会有所帮助。
4. 与选项1相同,但使用jetty-web.xml
。我不确定这会有多好,因为我认为你不能将LifeCycle
附加到WebAppContext
,但它可能正常 - 你需要对此进行更多调查
5. 根据Brian's solution,只需使用init()
方法和initialise-on-startup
编写一个servlet,然后不要将其映射到任何网址。在init
内调用您的输入法。