Очередь/тема JMS в Weblogic Server связана с рядом дополнительных ресурсов:

JMS-сервер

Сервер JMS действует как контейнер управления ресурсами в модулях JMS. Некоторые из его обязанностей включают поддержание постоянства и состояния сообщений и подписчиков. Сервер JMS требуется для создания модуля JMS.

JMS-модуль

Модуль JMS — это определение, содержащее ресурсы JMS, такие как очереди и разделы. Для создания очереди JMS требуется модуль JMS.

Подразвертывание

Модули JMS предназначены для одного или нескольких экземпляров WLS или кластера. Ресурсы внутри модуля JMS, такие как очереди и разделы, также предназначены для сервера JMS или экземпляров сервера WLS. Подразвертывание — это группа целей. Он также известен как расширенный таргетинг.

Фабрика соединений

Фабрика соединений — это ресурс, который позволяет клиентам JMS создавать соединения с местами назначения JMS.

Постоянное хранилище

Это может быть определяемое пользователем постоянное хранилище или постоянное хранилище по умолчанию. Он используется для хранения данных (сообщений).

Очередь JMS/тема JMS

Очередь JMS — это тип назначения «точка-точка». Сообщение записывается в определенную очередь или принимается из указанной очереди.

Тема JMS следует модели публикации/подписки (Pub/Sub). Приложения для обмена сообщениями Pub/Sub отправляют и получают сообщения, подписавшись на тему

В этом руководстве мы собираемся настроить очередь JMS с необходимыми дополнительными ресурсами с помощью сценария WLST.

WLST-скрипт

Приведенный ниже сценарий поможет нам определить необходимые ресурсы JMS для включения очереди сообщений.

JMSConfiguration.properties

adminUserName=weblogic
adminUserPassword=weblogic1
adminServerHost=localhost
adminServerPort=7001
fileStoreName=BAMMonitoringJMSFileStore
jmsServerName=BAMMonitoringServer
moduleName=BAMJMSSystemResource
subDeploymentName=BAMSubdeDloyment
connectionFactoryName=BAMMonitoringConnectionfactory
queueName=BAMMonitoringQueue

JMSConfiguration.py

from java.io import FileInputStream
propInputStream = FileInputStream("JMSConfiguration.properties")
configProps = Properties()
configProps.load(propInputStream)
connect(configProps.get("adminUserName"),configProps.get("adminUserPassword"), 't3://'+configProps.get("adminServerHost")+':'+configProps.get("adminServerPort"))
fileStoreName=configProps.get("fileStoreName")
jmsServerName=configProps.get("jmsServerName")
moduleName=configProps.get("moduleName")
connectionFactoryName=configProps.get("connectionFactoryName")
subDeploymentName=configProps.get("subDeploymentName")
queueName=configProps.get("queueName")
edit()
startEdit()
print 'Creating File Store'
cd('/')
cmo.createFileStore(fileStoreName)
cd('/FileStores/'+fileStoreName)
cmo.setDirectory(fileStoreName)
set('Targets',jarray.array([ObjectName('com.bea:Name=AdminServer,Type=Server')], ObjectName))
print 'Creating JMS Server'
cd('/')
print 'Creating JMS Server.'
print 'JMS Server: '+jmsServerName
cmo.createJMSServer(jmsServerName)
cd('/JMSServers/'+jmsServerName)
cmo.setPersistentStore(getMBean('/FileStores/'+fileStoreName))
cmo.setTemporaryTemplateResource(None)
cmo.setTemporaryTemplateName(None)
cmo.addTarget(getMBean('/Servers/AdminServer'))
print 'Creating JMS Module'
cd('/')
cmo.createJMSSystemResource(moduleName)
cd('/JMSSystemResources/'+moduleName)
cmo.addTarget(getMBean('/Servers/AdminServer'))
cmo.createSubDeployment(subDeploymentName)
print 'Creating Connection Factory'
cd('/')
cd('/JMSSystemResources/'+moduleName+'/JMSResource/'+moduleName)
cmo.createConnectionFactory(connectionFactoryName)
cd('/JMSSystemResources/'+moduleName+'/JMSResource/'+moduleName+'/ConnectionFactories/'+connectionFactoryName)
cmo.setJNDIName('jms/'+connectionFactoryName)
#set('SubDeploymentName',subDeploymentName)
cd('/JMSSystemResources/'+moduleName+'/JMSResource/'+moduleName+'/ConnectionFactories/'+connectionFactoryName+'/SecurityParams/'+connectionFactoryName)
cmo.setAttachJMSXUserId(false)
cd('/JMSSystemResources/'+moduleName+'/JMSResource/'+moduleName+'/ConnectionFactories/'+connectionFactoryName+'/ClientParams/'+connectionFactoryName)
cmo.setClientIdPolicy('Restricted')
cmo.setSubscriptionSharingPolicy('Exclusive')
cmo.setMessagesMaximum(10)
#cd('/JMSSystemResources/'+moduleName+'/JMSResource/'+moduleName+'/ConnectionFactories/'+connectionFactoryName+'/TransactionParams/'+connectionFactoryName)
#cmo.setXAConnectionFactoryEnabled(true)
cd('/JMSSystemResources/'+moduleName+'/JMSResource/'+moduleName+'/ConnectionFactories/'+connectionFactoryName)
cmo.setDefaultTargetingEnabled(true)
print 'Creating Queue'
cd('/')
cd('/JMSSystemResources/'+moduleName+'/JMSResource/'+moduleName)
cmo.createQueue(queueName)
cd('/JMSSystemResources/'+moduleName+'/JMSResource/'+moduleName+'/Queues/'+queueName)
set('JNDIName','jms/'+queueName)
set('SubDeploymentName',subDeploymentName)
cd('/JMSSystemResources/'+moduleName+'/SubDeployments/'+subDeploymentName)
cmo.addTarget(getMBean('/JMSServers/'+jmsServerName))
print 'JMS Resources are Successfully Created'
activate()

Скрипт



Перед выполнением скрипта измените конфигурации по мере необходимости.

Выполните скрипт — ‹‹Oracle_Home››\oracle_common\common\bin\wlst.cmd JMSConfiguration.py

Теперь необходимые ресурсы JMS созданы, и очередь готова для обмена сообщениями.

Доступ к очереди можно получить, используя указанные ниже имена JNDI.

jms/BAMMonitoringConnectionfactory
jms/BAMMonitoringQueue