Я пишу приложение Java EE 8, которое хочу подключить к шине RabbitMQ. Приложение развернуто в OpenLiberty. Поскольку приложение использует Java EE 8, я хочу использовать JMS для подключения к RabbitMQ. Ранее я подключился к RabbitMQ через JMS в Tomcat в качестве доказательства концепции, поэтому я знаю, что это должно быть возможно.
Согласно документации и блогам, которые я нашел, мне нужен адаптер ресурсов, чтобы подключить OpenLiberty практически ко всему, кроме внутреннего JMS-движка. Я нашел адаптер ресурсов AMQP 1.0 и хотел попробовать его.
Мой сервер.xml:
<featureManager>
<feature>beanValidation-2.0</feature>
<feature>cdi-2.0</feature>
<feature>jaxrs-2.1</feature>
<feature>jsp-2.3</feature>
<feature>servlet-4.0</feature>
<feature>jms-2.0</feature>
<feature>appSecurity-3.0</feature>
<feature>socialLogin-1.0</feature>
</featureManager>
<!-- the resource-adapter-1.0.0.rar comes from the aforementioned GitHub project -->
<resourceAdapter id="amqp" location="${server.config.dir}/resource-adapter-1.0.0.rar">
<classloader apiTypeVisibility="+third-party"/>
</resourceAdapter>
<jmsConnectionFactory jndiName="jms/JmsFactory">
<!-- using .amqp as that is the ID for the resource adapter -->
<properties.amqp ConnectionFactory=""
JndiParameters=""
DeleteTemporaryDestinations="true"
UserName=""
Password="" />
</jmsConnectionFactory>
Затем в моем коде приложения у меня есть
@Inject
@JMSConnectionFactory("jms/JmsFactory")
private JMSContext context;
Как только я вызываю context.createQueue("ExampleQueue")
(или любой другой вызов метода), я получаю
javax.naming.NameNotFoundException: Intermediate context does not exist: jms/JmsFactory
Я также пытался выполнить поиск вручную, например:
final InitialContext context = new InitialContext();
final Context environment = (Context) context.lookup("java:comp/env");
final QueueConnectionFactory factory = (QueueConnectionFactory) environment.lookup("jms/JmsFactory");
final Queue queue = InitialContext.doLookup("jms/ExampleQueue");
Это терпит неудачу в environment.lookup
с javax.naming.NameNotFoundException: java:comp/env/jms/JmsFactory
.
Что я делаю неправильно или наблюдаю здесь?