トピックを自分のコンテナに入れることができるかどうかテストしようとしています。しかし、私の工場内でcreateConnectionメソッドを呼び出すときには、nullポインタ例外が発生し続けます。ここに私のコードが実行されている方法です。ArquillianとJMSの統合テスト
@RunWith(Arquillian.class)
public class TopicPublishTest {
@Resource(mappedName = "java:jboss/jms/topic/sample/MySample")
private Topic topic;
@Resource(mappedName = "java:/ConnectionFactory")
private ConnectionFactory factory;
@Test
public void testMessageInTopic() throws Exception {
final Connection connection = factory.createConnection();
connection.start();
final Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
final MessageConsumer consumer = session.createConsumer(topic);
final TextMessage message = (TextMessage) consumer.receiveNoWait();
System.out.println("### the mssage is " + message);
}
}
私はこのようにArquillianと展開があります。
:@Deployment(name = "my-service", order = 1, testable = true)
public static Archive<?> targetDeployment() {
final WebArchive archive = ShrinkWrap.createFromZipFile(WebArchive.class, new File(
"target/my-service.war"));
return archive;
}
をマイJBossのEAP 6.0.0 G2の実装は、次のコード行が含まれています
<connection-factory name="InVmConnectionFactory">
<connectors>
<connector-ref connector-name="in-vm"/>
</connectors>
<entries>
<entry name="java:/ConnectionFactory"/>
</entries>
</connection-factory>
....
<jms-topic name="MySample">
<entry name="java:jboss/jms/topic/sample/MySample"/>
<entry name="java:jboss/exported/jms/topic/sample/MySample"/>
</jms-topic>
私は私の人生のために、なぜ
final Connection connection = factory.createConnection();
を把握することはできません
はNullPinterを投げています。明らかに、工場はインスタンス化することができず、Arquillianが私のjndiバインディングを見ることができないと私は信じています。私のコードの大半は、すべてが機能することに向けた良い足がかりだった、私は2つの主要コンポーネントが組み込まれたテストをトリガするために欠けていたが
@Resource(mappedName = "/ConnectionFactory")
@Resource(mappedName = "ConnectionFactory")