s2buri-exampleとs2jms-activemq-blank-serverを使ったデモ
id:koichikさんが作成したs2jms-activemq-blank-serverを使って、作成中のS2JMS用デモを書き換えたところ、はまっていた問題が解決し、s2buri-exampleとの連携に成功しました!
やっていることは、PaymentActionImplをS2JMSによってイベントを受信して処理を行うPaymentActionJmsImplを作成し、S2JMS.Containerから呼び出させています。
また、別プロセス(JVM)で動作するため、derbyをサーバモードで起動し、bao以降の処理はそのままs2buri-exampleの実装に任せています。
PaymentActionJmsImpl
public class PaymentActionJmsImpl implements PaymentAction { private GasRateBao gasRateBao; @JMSPayload private String billCode; @JMSPayload private int paymentAmount; @OnMessage public String pay() { ・・・略・・・ (PaymentActionImplのまま) } public void setBillCode(String billCode) { this.billCode = billCode; } public void setGasRateBao(GasRateBao gasRateBao) { this.gasRateBao = gasRateBao; } public void setPaymentAmount(int paymentAmount) { this.paymentAmount = paymentAmount; } }
PaymentActionJmsImplTest
public class PaymentActionJmsImplTest extends S2JMSTestCase { protected PaymentActionJmsImpl testAction; protected TransactionManager tm; protected MessageSender sender; @Override protected void setUp() throws Exception { super.setUp(); include("PaymentActionImplTest.dicon"); } public void test() throws Exception { tm.begin(); try { Map<String, Object> msg = new HashMap<String, Object>(); msg.put("billCode", "1144"); msg.put("paymentAmount", 3000); sender.send(msg); } finally { tm.commit(); } assertTrue(true); } }