以前、実行可能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>