java - 对于独立应用程序(对于 Spring JMS),Java main 方法应该是什么?

标签 java spring jms

我有兴趣创建一个 Spring 独立应用程序,该应用程序将运行并等待使用 Spring JMS 从 ActiveMQ 队列接收消息。我搜索了很多地方,找不到一致的方式来实现这样一个独立应用程序的主要方法。 Spring 独立应用程序的示例似乎很少。我从网上查看了 Tomcat、JBoss、ActiveMQ 和其他示例,但我还没有得出结论,所以......

为 Java 应用程序(特别是 Spring with JMS)实现 main 方法的最佳实践是什么?

更新: 下面是一个示例: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();
        }
}

最佳答案

在使用 Spring JMS 时,您已经在配置中使用了组件/bean,这些组件/beans 会自动启动并保持 Activity 状态(订阅并从队列/主题中读取),直到您停止应用程序。

因此,要启动并保持应用程序运行,加载应用程序上下文就足够了。 好的做法是同时调用 registerShutdownHook,因此在应用程序停止时(即通过控制台中的 ctrl+c),您的所有 bean 都会正常关闭和处理:)

public static void main(String args[]) {
    AbstractApplicationContext context = new ClassPathXmlApplicationContext("spring.xml");
    context.registerShutdownHook();
}

关于java - 对于独立应用程序(对于 Spring JMS),Java main 方法应该是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2497627/

相关文章:

java - 如何利用 Spring 3 的 SSO 安全性?

java - 未找到 Spring Webflow 架构 xsd

java - Spring与JMS集成配置文件错误

java - Spring 集成 Java DSL : specify custom deserializer

java - 并发执行 : Future vs parallelstream

java - 正则表达式屏蔽特定长度数字的最后两位数字以外的所有数字

java - 在 int 数组中查找第一个重复项,java

java - 在 DispatcherServlet 中未找到名称为 'spring-dispatcher' 的 URI [/FirstSpringMVCProject/stylegreen.css] 的 HTTP 请求映射

java - JMS 非 MDB 客户端

java - 使用 Java 小程序将图像保存到服务器