Saya tidak yakin apakah ini bisa berhasil, tetapi saya mencoba menulis produser JMS dengan cdi dengan wildfly dan terjebak dalam menyuntikkan sumber daya ke dalam kacang yang dikelola cdi:
public class CdiProducer {
@Resource(name = "java:jboss/DefaultJMSConnectionFactory")
@Produces
QueueConnectionFactory qcf;
@Resource(name = "java:/queue/HELLOWORLDMDBQueue")
@Produces
@Hello
Queue helloWordQueue;
Menjalankan ini saya mendapatkan kesalahan berikut:
JBAS016076: Kesalahan saat memasukkan sumber daya ke dalam kacang yang dikelola CDI. Tidak dapat menemukan sumber daya bernama ...
Namun yang sangat aneh adalah, ketika saya menyalin & menempelkan sumber daya ke dalam kacang perusahaan, semuanya berfungsi!
@Stateless
public class QueueSender {
@Resource(name="java:jboss/DefaultJMSConnectionFactory")
QueueConnectionFactory qcf;
@Resource(name="java:/queue/HELLOWORLDMDBQueue")
Queue helloWordQueue;
Antrian didefinisikan sebagai:
<jms-destinations>
<jms-queue name="HelloWorldQueue">
<entry name="/queue/HELLOWORLDMDBQueue"/>
<entry name="java:jboss/exported/queue/HELLOWORLDMDBQueue"/>
</jms-queue>
</jms-destinations>
Apakah ini seharusnya bekerja seperti ini? Atau apakah ada bug pada lalat liar?
Queue
atauConnectionFactory
? Selain itu, jika Anda menggunakan WildFly 8, Anda cukup memasukkanJMSContext
dan menghindari banyak default ini. - person John Ament   schedule 19.03.2014