我有兴趣创建一个Spring独立应用程序,它将运行并等待使用Spring JMS从ActiveMQ队列接收消息.我搜索过很多地方,但找不到一种实现这种独立应用程序主方法的一致方法.Spring独立应用程序的示例似乎很少.我看过Tomcat,JBoss,ActiveMQ以及网络上的其他例子,但我还没有得出结论......
实现Java应用程序的主方法(特别是Spring with JMS)的最佳实践是什么?
更新:以下是一个例子:http://forum.springsource.org/showthread.php?t = 48197 这是最好的方法吗?
public static void main(String args[]) {
        try {
           ApplicationContext context = new ClassPathXmlApplicationContext("spring.xml");
            . . . . .
            Object lock = new Object();
            synchronized (lock) {
                lock.wait();  
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
}
小智 24
使用Spring JMS时,您已经在配置中使用了自动启动的组件/ bean,并且在您停止应用程序之前将保持活动状态(从队列/主题中订阅和读取).
要启动并保持应用程序运行,因此加载applicationcontext应该足够了.好的做法虽然也是调用registerShutdownHook,所以在应用程序暂停(即通过控制台中的ctrl + c),你的bean正常关闭和处理:)
public static void main(String args[]) {
    AbstractApplicationContext context = new ClassPathXmlApplicationContext("spring.xml");
    context.registerShutdownHook();
}
Dro*_*roo -4
尝试循环读取。如果找到消息,则对其进行处理,然后休眠并再次迭代。还要在其中放置某种终止符逻辑(中断线程)。您可以在 X 次尝试后终止、从文件中读取、终止 JVM、从队列中读取终止符消息等。
public static void main(String[] args) {
    while(true) {
        // look for some terminator
        // attempt to read off queue
        // process message
        try {
            TimeUnit.SECONDS.sleep(5);
        } catch (Exception e) {
            break;
        }
    }
}