Я звоню клиенту rabbitMQ (и не серверу) из моего кода Java, работающего в контейнере Glassfish V4.0 (сборка 89) для подключения к серверу rabbitmq на другом компьютере. Согласно клиентскому документу rabbitmq, мы должны предоставить экземпляр ManagedThreadFactory для соединения rabbitmq для создания потоков.Как создать экземпляр ManagedThreadFactory внутри Glassfish V4.0
Я попытался инъекционного DefaultManagedThreadFactory помощью
ctx.lookup ("Java: комп/DefaultManagedThreadFactory")
что не удалось с
Поиск неудавшегося для 'Java: COMP/DefaultManagedThreadFactory' в SerialContext ...
Попытка @Resource (lookup = "concurrent/__ DefaultManagedThreadFactory ") приводит к NPE.
Я не сильно разбираюсь в java EE, и я использую этот контейнер так же, как интерфейс для своих веб-сервисов. Ясно, что мне нужно сделать что-то большее/другое. Однако я был не в состоянии найти много кроме
http://javahowto.blogspot.in/2011/02/how-to-create-and-look-up-thread-pool.html
Может ли эксперт Java EE сказать мне правильные Voodoo заклинаний, чтобы сделать эту работу?
Update-1
@Resource(name = "concurrent/__defaultManagedThreadFactory")
ManagedThreadFactory threadFactory;
// set on rabbitmq connection Factory
factory.setThreadFactory(threadFactory);
java.lang.NullPointerException
at java.util.concurrent.ThreadPoolExecutor.<init>(ThreadPoolExecutor.java:1312)
at java.util.concurrent.ThreadPoolExecutor.<init>(ThreadPoolExecutor.java:1233)
at java.util.concurrent.Executors.newFixedThreadPool(Executors.java:114)
at com.rabbitmq.client.impl.ConsumerWorkService.<init>(ConsumerWorkService.java:36)
Update-2
аксель - нет ничего особенного о моем случае. То, что я просматриваю, просто пытается использовать java-клиент rabbitmq внутри GFV4. так, чтобы воспроизвести проблемы
- Вам нужно запустить сервер RabbitMQ
- подключиться к серверу, используя RabbitMQ код клиента, который является частью войны развертывается на GF
- согласно RabbitMQ руководства клиента API (https://www.rabbitmq.com/api-guide.html) @see на заказ Раздел Thread Factory. Они делегируют реализацию потока в контейнер .
- RabbitMQ код клиента Java на Github
Я могу видеть ManagedThreadFactory имя из консоли администратора GF поэтому она должна быть там.
обновление-3
Управляемый Factory Thread и управляемые услуги исполнителя могут быть расположены с помощью JNDI. Однако те же ресурсы не могут быть введены в мой код, который использует веб-службы Джерси. Инъекция ресурсов работает с простым примером сервлета (например, пример java EE7 на Github)
Это связано с некоторым взаимодействием трикотажа/Hk2/CDI/сварного шва и т. Д.? Я ищу официальный ответ на вопрос, почему я не могу сделать работу по введению ресурсов?
Вы должны включить любую дополнительную баночку в вашем коде (скажем, внутри eclipse) для компиляции? Я могу попробовать это и дам вам знать. – rjha94
Никаких дополнительных банок, просто стандартная ссылка для Java EE 7. Я использую Netbeans, кстати. –
Я нахожусь на затмении, и мне нужно вручную скопировать файл java.enterprise.concurrent-api.jar. Возможно, мое затмение настроено. Позвольте мне попробовать это сейчас на GFV4. – rjha94