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

2022-09-01 23:37:32

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

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

更新:这里有一个例子: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();
        }
}

答案 1

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

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

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

答案 2

这就是我们所拥有的,在应用程序上下文中.xml我们使用弹簧JMS类,如(org.springframework.jms.listener.DefaultMessageListenerContainer)来管理消费者数量,并使用org.springframework.jms.listener.adapter.MessageListenerAdapter提供自定义监听器。)

app-context.xml包含所有spring bean监听器和其他东西,下面的代码是引导Spring在队列上提供的监听器。所以这个想法是使用Spring类来管理多个消费者。让我知道这是否是你需要的,并且需要更多关于配置MessageListenerAdapter的信息。

public static void main(String[] args)
{

    try
    {
        new ClassPathXmlApplicationContext("app-context.xml");

    }
    catch (Throwable e)
    {
        e.printStackTrace();
        System.exit(-1);
    }

}

推荐