3

SpringJMSアプリケーションがあります。実際、UIはありません。Spring構成(JMSリスナー)とSpring構成はweb.xmlによってロードされます。したがって、サーバーにデプロイすると、リスナーが機能し始めます。

しかし、UIがないため、Webパーツは必要ありません。これは、キューをリッスンして処理を行うプロジェクトにすぎません。したがって、JARであり、スタンドアロンで実行する必要があると思います(またはサーバーにデプロイする場合)。サーバーにデプロイするときにそのようなプロジェクト/ JARを作成する方法は、自動的に実行を開始します。JARを更新するたびにメインクラスを実行したくありません。

4

2 に答える 2

1

以前、実行可能jarを使用してJMSキューを起動しました。SpringとJMSのすべてのjar依存関係にアクセスできることを確認する必要があります。これは多くのことです。これは、依存関係jarを指すようにクラスパスを設定するか、Uberjarを作成して、すべての依存関係jarを実行可能jarにパックすることで実行できます。

これは、jarマニフェストでメインクラスとして設定したときにJarからActiveMQを起動するクラスの例です。jms.pidは、プロセスのプロセスIDを使用して作成されますConfigurableApplicationContextでJMSのSpringコンテキストへのパスを設定する必要があります。

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();

    }

}

BrokerServiceにアクセスするためのSpring構成の例

<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>
于 2012-09-18T16:31:55.840 に答える
0

私は通常、JMSアプリケーションがWindowsサービスまたはUnixデーモンとして実行されるのを見てきました。これらは、サーバーが再起動した場合にJMSアプリを再起動するなどの構成可能な機能を提供します。

クラスタ内のノードの起動時にJMSアプリケーションを起動するために使用できる起動クラスを提供するWeblogicなどの商用JavaEEコンテナがいくつかあります。これにより、JMSアプリケーション/サーバーをコンソールで制御できます。しかし、それはあなたの場合の選択肢ではないようです。

于 2012-09-18T16:48:05.960 に答える