Автоматическое связывание ресурсов с компонентами TomEE EJB
Я разрабатываю модуль на основе JMS, который использует сообщения от IBM MQ и сохраняет данные. Мое приложение работает в TomEE 8.0.0-M2. При запуске моего приложения я замечаю, что автоматическое связывание resource-ref 'openejb/Resource происходит со всеми моими компонентами EJB. Я настроил свою фабрику, очередь и тему, связанные с IBM MQ, в resources.xml . Все ресурсы, связанные с IBM MQ, пытаются автоматически связываться со всеми моими компонентами EJB, что требует больше времени для запуска.
Ни один из моих EJB не имеет конфигурации @Resource. У меня есть bean-компоненты MDB с аннотацией @MessageDriven.
Почему TomEE пытается автоматически связать все компоненты EJB?
Как исправить это авто симпатии?
Я готов сделать любое одноразовое конфигурирование в web.xml или resources.xml
Пример журнала для одного EJB-компонента ( SimpleService)
08-Mar-2019 13:33:07.558 INFO [localhost-startStop-1] org.apache.openejb.config.AutoConfig.processResourceRef Auto-linking resource-ref 'openejb/Resource/ROOT/imq_ra' in bean SimpleService to Resource(id=imq_ra)
08-Mar-2019 13:33:07.559 INFO [localhost-startStop-1] org.apache.openejb.config.AutoConfig.processResourceRef Auto-linking resource-ref 'openejb/Resource/imq_ra' in bean SimpleService to Resource(id=imq_ra)
08-Mar-2019 13:33:07.559 INFO [localhost-startStop-1] org.apache.openejb.config.AutoConfig.processResourceRef Auto-linking resource-ref 'openejb/Resource/ROOT/ibm.mq.connfactory' in bean SimpleService to Resource(id=ibm.mq.connfactory)
08-Mar-2019 13:33:07.559 INFO [localhost-startStop-1] org.apache.openejb.config.AutoConfig.processResourceRef Auto-linking resource-ref 'openejb/Resource/ibm.mq.connfactory' in bean SimpleService to Resource(id=ibm.mq.connfactory)
08-Mar-2019 13:33:07.561 INFO [localhost-startStop-1] org.apache.openejb.config.AutoConfig.processResourceRef Auto-linking resource-ref 'openejb/Resource/ROOT/imq_container-javax.jms.QueueConnectionFactory' in bean SimpleService to Resource(id=imq_container-javax.jms.QueueConnectionFactory)
08-Mar-2019 13:33:07.562 INFO [localhost-startStop-1] org.apache.openejb.config.AutoConfig.processResourceRef Auto-linking resource-ref 'openejb/Resource/imq_container-javax.jms.QueueConnectionFactory' in bean SimpleService to Resource(id=imq_container-javax.jms.QueueConnectionFactory)
08-Mar-2019 13:33:07.562 INFO [localhost-startStop-1] org.apache.openejb.config.AutoConfig.processResourceRef Auto-linking resource-ref 'openejb/Resource/ROOT/imq_container-javax.jms.TopicConnectionFactory' in bean SimpleService to Resource(id=imq_container-javax.jms.TopicConnectionFactory)
08-Mar-2019 13:33:07.563 INFO [localhost-startStop-1] org.apache.openejb.config.AutoConfig.processResourceRef Auto-linking resource-ref 'openejb/Resource/imq_container-javax.jms.TopicConnectionFactory' in bean SimpleService to Resource(id=imq_container-javax.jms.TopicConnectionFactory)
08-Mar-2019 13:33:07.566 INFO [localhost-startStop-1] org.apache.openejb.config.AutoConfig.processResourceRef Auto-linking resource-ref 'openejb/Resource/ROOT/download.topic' in bean SimpleService to Resource(id=download.topic)
08-Mar-2019 13:33:07.571 INFO [localhost-startStop-1] org.apache.openejb.config.AutoConfig.processResourceRef Auto-linking resource-ref 'openejb/Resource/download.topic' in bean SimpleService to Resource(id=download.topic)
1 ответ
Во-первых, TomEE 8.0.0-m2 не является окончательной версией и не должен использоваться. Кроме того, он содержит несколько CVE и небезопасен. Если вы запустите это в Интернете, вас неминуемо взломают. Используйте TomEE 8.0.6 или последнюю доступную версию. В этой версии TomEE также есть много проблем с JMS, поэтому, даже если вы решите свою непосредственную проблему, вы, вероятно, столкнетесь с множеством других ошибок.
Во-вторых, без публикации файлов конфигурации, журналов запуска или примера кода я не могу дать вам полный ответ, но у меня есть пара замечаний для вас:
Все ресурсы, связанные с IBM MQ, пытаются автоматически связываться со всеми моими компонентами EJB, что требует больше времени на запуск.
Это не может быть правдой, автоматическая привязка занимает миллисекунды, если это так.
Как исправить это автолюбление?
Но в чем проблема? Ваш код, скорее всего, автоматически связывается, потому что вы не полностью указали все необходимые части для статической привязки ваших bean-компонентов к настроенным вами ресурсам. Автоматическое связывание настраивает ваше приложение автоматически предсказуемым образом, сокращая количество шаблонов и предотвращая проблемы с обновлением в будущем.