2012-09-18 42 views
3

我有一個Spring JMS應用程序。事實上沒有用戶界面。 Just Spring配置(JMS監聽器)和Spring配置由web.xml加載。 所以當我部署在服務器中時,監聽器開始工作。作爲JAR項目運行的Spring JMS

但我不想Web部分,因爲沒有UI,它只是一個項目,它監聽隊列並進行處理。所以我認爲它應該是JAR,它應該獨立運行(或者當我在服務器上部署時)如何創建這樣的項目/ JAR在部署到服務器時會自動開始運行。我不想在每次更新JAR時運行主類。

+0

您可以詳細說明'部署到服務器'的含義嗎?您是使用J2EE容器還是將它作爲Java進程運行? – MarkOfHall

+0

通常我們在tomcat或application Server中部署的所有war文件。同樣,我們是否可以將JAR作爲庫項目或類似J2EE容器中的東西部署,並且一旦部署,它應該開始監聽Message Queue(我的意思是Spring JMS偵聽器應該可以工作)。但我想這可能不可能。如果可能的話,我需要知道它是如何完成的。 – Mukun

+0

@ThinkingStiff,你知道該怎麼做嗎? –

回答

1

我已經使用可執行jar來啓動JMS隊列。你只需確保你有權訪問Spring和JMS的所有jar依賴項,這是很多的。這可以通過設置類路徑指向依賴jar或創建Uberjar並打包可執行jar中的所有依賴jar來完成。

下面是一個示例類,當您將它設置爲jar清單中的主類時,它將從Jar啓動ActiveMQ。 A jms.pid將使用進程的進程ID創建。您必須在ConfigurableApplicationContext中設置JMS的Spring上下文路徑。用於獲取到BrokerService

<bean id="broker" class="org.apache.activemq.xbean.BrokerFactoryBean"> 
    <property name="config" value="classpath:org/activemq/xbean/activemq.xml" /> 
    <property name="start" value="true" /> 
</bean> 
0

我也通常出現作爲Windows服務運行或Unix守護程序JMS應用程序的訪問

public class Server { 

    public static void main(String[] args) throws Exception { 

     // Define Spring contexts required for JMS to run 
     List<String> contexts = Arrays.asList("classpath:applicationContext.xml", "classpath:spring/jmsContext.xml"); 
     ConfigurableApplicationContext applicationContext = new ClassPathXmlApplicationContext(contexts); 

     // Get activeMQ from JMS context 
     BrokerService broker = applicationContext.getBean("broker"); 

     // Start up activeMQ 
     broker.start(); 

     // Get pid for this process 
     String sysId = ManagementFactory.getRuntimeMXBean().getName(); 
     String pid = sysId.substring(0, sysId.indexOf("@")); 

     // Write PID file 
     File file = new File("jms.pid"); 
     DataOutputStream outs = new DataOutputStream(new FileOutputStream(file, false)); 
     outs.write(pid.getBytes()); 
     outs.close(); 

    } 

} 

示例Spring配置。這些爲您提供的功能,你可以配置諸如重新啓動,如果服務器重新啓動,你的JMS應用等

有一些商業Java EE容器,如Weblogic的提供start-up類,你可以用它來啓動你的JMS應用程序時的一個節點羣集啓動。這提供了對JMS應用程序/服務器的控制檯控制。這聽起來不像是你的情況下的一個選項。

相關問題