Dezvoltarea agentului ibm lotus domino cu sprijin jms

În multe organizații, aplicațiile existente IBM Lotus Domino au o cantitate mare de informații și date necesare altor aplicații. Articolul prezintă cum să dezvolți un agent Java care rulează pe serverul Lotus Domino în IBM Lotus Domino Designer.





Acest agent pentru a trimite mesaje JMS-furnizor și mesaje de răspuns primit de la ea folosind API-ul Java Messaging Systems (JMS) 1.1, precum și API-ul Java Naming si director Interface (JNDI). Ca furnizor de comunicații în articol utilizat IBM WebSphere MQ V6, cu toate acestea, prin utilizarea codului nostru JMS 1.1 permite aplicațiilor Lotus Domino pentru a se conecta la orice autobuz de servicii de întreprindere (Enterprise Service Bus - ESB), sprijinind JMS. (Cod testat pentru Lotus Domino V8, WebSphere MQ V6 și JMS 1.1 API, dar ar trebui să funcționeze, de asemenea, cu Lotus Domino V5 și JMS 1.0 și versiunile ulterioare).







Arhitectura propusă

Înainte de a lua în considerare decizia noastră în detaliu, vom fi familiarizați cu aceasta în termeni generali. Figura 1 prezintă o diagramă de implementare în limba unificată de modelare (UML), din care devine clar modul în care funcționează exemplul aplicației. Aparent, aplicația necesită două servere fizice separate: un server Lotus Domino V8 și un server WebSphere MQ V6. Desigur, puteți rula aplicația prin plasarea acesteia pe un singur server, însă un scenariu mai plauzibil și mai evident este utilizarea unei configurații de rețea distribuită. În plus, Figura 1 arată că serverul WebSphere MQ oferă suport atât pentru JNDI-furnizor și JMS-furnizor, fără a fi nevoie să utilizeze software suplimentar.

Figura 1. Diagrama implementării arhitecturii

De ce este folosită această arhitectură?

Evident, există multe modalități de a extrage date din Lotus Domino și de a le transmite altor aplicații, de ce să folosiți mesajele sau, mai degrabă, JMS? Schimb de mesaje se realizează pe un canal de comunicare asincron, permițând Lotus Domino și orice date share JMS-furnizor în regim slab de cuplare (de exemplu, producătorii de date și consumatorii pot să nu fie conștienți unul de altul). În plus, prin utilizarea API-ului JMS, codul nostru Java va permite Lotus Domino să interacționeze cu orice furnizor JMS și să se conecteze la o varietate de anvelope pentru servicii corporative.

Revizuirea articolelor

Pașii din acest articol corespund secvenței de operații la crearea exemplei de aplicații. Iată operațiile:

Configurarea WebSphere MQ

WebSphere MQ V6 acceptă JMS 1.1. Aceasta înseamnă că WebSphere MQ V6 poate funcționa ca furnizor JMS 1.1. Amintiți-vă că JMS este doar o specificație API; Sistemul de mesagerie funcționează prin implementarea specifică a acestei specificații JMS.

Pentru ca clienții JMS să se conecteze la WebSphere MQ, trebuie să creați și să configurați un manager de coadă. Managerul de coadă defineste procesele de rulare care oferă capabilități JMS în clienții JMS. WebSphere MQ are un client administrativ bazat pe Eclipse care vă poate ajuta în acest proces.

  1. Lansați WebSphere MQ Explorer selectând Start - Toate programele - IBM Websphere MQ - Websphere MQ Explorer.
  2. Selectați folderul Manager de coadă din WebSphere MQ Explorer, apoi faceți clic dreapta și selectați New - Queue Manager.
  3. În expertul care apare, introduceți Domino.QMGR ca nume manager de coadă. Bifați caseta de lângă "Efectuați acest lucru managerul de coadă prestabilit". Introduceți SYSTEM.DEAD.LETTER.QUEUE în câmpul Coadă de litere Dead. În alte câmpuri, lăsați setările implicite, apoi faceți clic pe Terminare, după cum se arată în Figura 2.
Figura 2. Configurarea managerului de coadă

Dezvoltarea agentului ibm lotus domino cu sprijin jms

Dezvoltarea agentului ibm lotus domino cu sprijin jms

În prezent, am creat un manager de coadă care poate stoca mesaje în Websphere MQ, dar clienții JMS au nevoie, de asemenea, de un furnizor JNDI.

Configurarea JNDI

JNDI este doar o specificație, deci un furnizor este obligat să o pună în aplicare. Această implementare poate fi furnizată de IBM WebSphere MQ V6 folosind supportPac ME01, care la rândul său necesită suportPac MS0B (a se vedea resursele). Aceste pachete supportPac sunt ușor de instalat: dezarhivați-le și copiați fișierele JAR în director \ Java \ lib. Figura 3 arată extrasul din arhivă și copiat în director \ Java \ lib JAR-fișiere, și anume, mqcontext.jar și com.ibm.mq.pcf-6.0.3.jar.

Dacă utilizați WebSphere MQ ca furnizor de JNDI-nu este nevoie de un JNDI-furnizor separat, convertește administrat obiecte JMS în coada fizică Websphere MQ - această caracteristică oferă supportPac ME01.

Figura 3. Pachete suport JNDI

Dezvoltarea agentului ibm lotus domino cu sprijin jms

Dezvoltarea agentului ibm lotus domino cu sprijin jms

setați CLASSPATH =% CLASSPATH%; C: \ Program Files \ IBM \ Websphere MQ \ Java \ lib \ mqcontext.jar;
C: \ Program Files \ IBM \ WebSphere MQ \ Java \ lib \ com.ibm.mq.pcf.jar

Figura 4. Actualizarea CLASSPATH în JMSAdmin.bat

Dezvoltarea agentului ibm lotus domino cu sprijin jms

Dezvoltarea agentului ibm lotus domino cu sprijin jms

După ce adăugați informațiile despre pachetele supportPac în fișierul de pornire JMSAdmin, vă puteți conecta la furnizorul JNDI pentru a crea obiecte administrate JMS. Acest lucru se realizează prin setarea proprietăților de conectare pentru instrumentul JMSAdmin în fișierul de configurare (JMSAdmin.config).

# Parametrii de configurare JNDI pentru utilizarea WebSphere MQ ca furnizor JNDI
INITIAL_CONTEXT_FACTORY = com.ibm.mq.jms.context.WMQInitialContextFactory
PROVIDER_URL = localhost: 1414 / SYSTEM.DEF.SVRCONN

Deoarece instrument JMSAdmin rulează cu serverul WebSphere MQ, parametrul PROVIDER_URL trebuie să fie setat la localhost. După cum se arată în Figura 1, agentul Lotus Domino Java se conectează de la distanță la furnizorul JNDI și utilizează astfel numele DNS al serverului la distanță, și nu gazda locală.

Acum puteți rula instrumentul JMSAdmin din linia de comandă:

C: \ Program Files \ IBM \ Websphere MQ \ Java \ bin \ JMSAdmin.bat

Crearea obiectelor JMS administrate de administrator

def cf (JMS_ConnectionFactory) qmgr (Domino.QMGR) tran (client) chan (SYSTEM.DEF.SVRCONN)
gazdă (bpte-demo-8.austin.ibm.com) port (1414)

Tabelul 1. Secvența de comenzi

Aceste fișiere JAR au fost copiate din directorul de instalare WebSphere MQ în directorul C: \ Program Files \ IBM \ Websphere MQ \ Java \ lib.

Să aruncăm o privire la cod și să ne dăm seama care este responsabilitatea fiecărei părți. Lista 1 arată un cod comun care este același atât pentru furnizor, cât și pentru consumatorul mesajelor. Rețineți că numerele de linie din cod sunt terminate și codul pentru listele 2 și 3 urmează codul general din listare 1.

Listarea 1. Codul comun

Lista 2 afișează codul producătorului JMS care creează mesaje JMS și îl trimite unui furnizor JMS la distanță. Deoarece acest agent este aplicat documentelor selectate în vizualizare, pe linia 16 primim o colecție a acestor documente. Apoi executam o buclă, transformând fiecare document Lotus Domino din această colecție într-un document XML care poate fi scris în JMS ca text simplu (linia 19).

Listing 2. Producător de mesaje

După ce agentul pornește, puteți verifica dacă mesajele au ajuns la WebSphere MQ utilizând Explorer WebSphere MQ. În Explorer WebSphere MQ, selectați dosarul Calendare pentru a vedea toate cozile de la acest manager de coadă și apoi faceți clic dreapta pe JMS_Queue și selectați Navigare mesaje pentru a vedea mesajele din coadă.

Ca rezultat, mesajele vor fi afișate pentru fiecare document selectat în timpul lansării agentului JMS_PUT (a se vedea Figura 10).

Figura 10. Mesaje în coada de așteptare

Dezvoltarea agentului ibm lotus domino cu sprijin jms

Dezvoltarea agentului ibm lotus domino cu sprijin jms

Dacă faceți dublu clic pe unul dintre mesaje, apare caseta de dialog Proprietăți care afișează mesajul așa cum apare în WebSphere MQ (a se vedea Figura 11).

Figura 11. Mesaj în WebSphere MQ

Dezvoltarea agentului ibm lotus domino cu sprijin jms

Dezvoltarea agentului ibm lotus domino cu sprijin jms

În prezent, am salvat întregul document Lotus Domino ca XML în coada WebSphere MQ. Și în codul nostru nu există clase specifice pentru WebSphere MQ, există doar cod JMS, care trimite la fel de ușor acest mesaj către WebSphere Enterprise Service Bus.

Pentru a demonstra că puteți primi și mesaje de la WebSphere MQ prin JMS, am creat un alt agent pentru consumul de mesaje. Ca și codul producătorului, acest cod nu știe ce furnizor JMS este folosit - știe doar cum să "vorbească" cu JMS. Codul de utilizator este afișat în listare 3.

Listarea 3. Consumatorul mesajelor

O diferență importantă între codul de consum este faptul că consumatorul trebuie să aștepte și să asculte mesajul, așa cum se arată pe linia 16. Când un mesaj este primit, vom crea un nou document Lotus Domino pentru a salva mesajul JMS-based în Lotus Domino (liniile 19-23) de date. Pentru scopuri de depanare, deducem informații despre mesajul în consola Java care pot fi accesate prin selectarea Tools - Arată Java Consola de depanare în Lotus Domino Designer, așa cum se arată în figura 12.

Figura 12. Informații despre mesajul din consola Java

Dezvoltarea agentului ibm lotus domino cu sprijin jms

Dezvoltarea agentului ibm lotus domino cu sprijin jms

În plus, dacă deschideți vizualizarea JMS_Imported, puteți vedea documentele create în timpul executării codului JMS de consum. Când deschideți documentul, veți vedea textul XML livrat (a se vedea figura 13).

Figura 13. Mesaje salvate ca documente Domino

Dezvoltarea agentului ibm lotus domino cu sprijin jms

Dezvoltarea agentului ibm lotus domino cu sprijin jms

concluzie

În acest articol, am arătat cum să trimiteți mesaje de la Lotus Domino către un furnizor JMS, precum și să primiți mesaje. Ca rezultat, am obținut un mod simplu și economic de a împărtăși Lotus Domino și autobuzul de servicii corporate. Ca furnizor de mesaje, am folosit WebSphere MQ, dar codul nostru funcționează cu orice furnizor JMS.

mulțumesc

Vă exprimăm recunoștința deosebită față de Bob Balaban și Bobby Woolf pentru revizuirea acestui articol.

Descărcați resurse







Trimiteți-le prietenilor: