2017-02-16 30 views
0

Короче говоря, я хочу, чтобы один и тот же объект (а именно тема JMS) был доступен одновременно двумя именами JNDI (один из них будет использоваться для публикации сообщений, а другой только для прослушивания).Как настроить символическую ссылку JNDI в WebLogic

Если нет никакой возможности создать символическую ссылку JNDI, тогда любой другой способ сделать сообщения, отправленные в A, появляющиеся в B, будут работать и для меня.

Причина в том, что у меня есть некоторый унаследованный код, который подписывается на тему B и записывается в тему A, и я не могу изменить этот код.
Затем на некоторых серверах мне нужны A и B, чтобы быть одним и тем же, чтобы один кусок кода получал сообщения, отправленные другим фрагментом кода, непосредственно на других серверах. A и B можно настроить для ссылки на некоторые внешние ресурсы ,

+0

Просто укажите ту же конфигурацию под двумя разными именами JNDI. – EJP

+0

Если я просто настрою две темы с одинаковыми настройками, они по-прежнему будут всего лишь двумя отдельными темами, и все, что опубликовано в первом, не будет перенаправлено на второе. –

ответ

0

После большого количества экспериментов я начал работать, настроив внешний сервер с сопоставлениями для темы JMS и ее фабрики соединений.

Вот WLST сценарий, иллюстрирующий моя конфигурацию:

startEdit() 

cd('/') 
mod = 'loopback' 
module = cmo.createJMSSystemResource(mod) 
module.setTargets(cmo.getClusters()) 

server = module.createForeignServer('loopback_server') 
server.setDefaultTargetingEnabled(true) 
server.setInitialContextFactory('weblogic.jndi.WLInitialContextFactory') 
# When we don't populate connection parameters (URLs, user, password), 
# WebLogic defaults to connecting to the current cluster, which is exactly what we need! 

topicLink = server.createForeignDestination('A_to_B') 
topicLink.setLocalJNDIName('jms/B/topic') 
topicLink.setRemoteJNDIName('jms/A/topic') 
cfLink = server.createForeignConnectionFactory('A_to_B_cf') 
cfLink.setLocalJNDIName('jms/B/connectionfactory') 
cfLink.setRemoteJNDIName('jms/A/connectionfactory') 

activate() 

PS: код выше был создан путем объединения важных линий от моего огромного WLST сценария настройки всех моего JMS ресурсов, так что есть вероятность того, что он выиграл 't просто работает как

-1

Предположим, вы можете развернуть клиента, который прослушивает тему A и отправляет ее в тему B, на серверах, на которые вы хотите отразить темы.

+0

Я бы предпочел сохранить все это в конфигурации. Если кто-то не предложит более простой способ, я собираюсь настроить объект Foreign Server с использованием собственного адреса сервера и использовать его для импорта темы в качестве иностранного адресата. –