Очередь/тема 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