2009.09_Websphere MQ 7 _[Aplikacje Biznesowe].pdf
(
581 KB
)
Pobierz
441067653 UNPDF
Aplikacje biznesowe
Websphere MQ 7
Dostawca usługi zarządzania komunikatami dla Websphere AS 7
IBM WebSphere MQ to kompletne rozwiązanie realizujące usługę systemu
kolejkowego. Może pracować niezależnie jako zewnętrzny serwer, który
poprzez szereg specjalnych interfejsów daje możliwość korzystania ze
swoich zasobów aplikacjom napisanym w różnych językach, lub działać
jako zewnętrzny dostawca dla serwera Websphere AS.
Dowiesz się:
• Jak stworzyć managera kolejek, kolejkę oraz
kanał komunikacji pomiędzy Websphere
MQ a Websphere AS;
• Jak skonigurować Websphere AS do wyko-
rzystywania Websphere MQ;
• Jak stworzyć aplikację JEE wysyłającą i od-
bierającą komunikaty.
Powinieneś wiedzieć:
• Podstawowa znajomość systemów kolejko-
wych;
• Podstawowa znajomość standardu JEE;
• Podstawowa znajomość obsługi serwerów
aplikacyjnych;
• Znajomość podstawowych pojęć związa-
nych z Websphere MQ (SDJ 10/2008).
Drugim krokiem będzie utworzenie kolejki
do przechowywania komunikatów. W tym ce-
lu rozwijamy
QM_SDJ
, następnie wybieramy
prawym przyciskiem myszy
Kolejki
. W nowo-
otwartym menu wybieramy
Nowe->Kolejka lo-
kalna
. W nowym oknie wprowadzamy nazwę
kolejki, np.
QUEUE_SDJ
, i wybieramy
Dalej
.
W kolejnym oknie mamy szereg opcji konfigu-
racji naszej kolejki.
Na potrzeby tego artykułu omówię opcję z
grupy
Ogólne
:
Poziom
trudności
nych ustawień i przejść do kolejnego okna. W
kolejnym oknie wybieramy opcję
Utwórz ka-
nał połączenia z serwerem
, wybieramy
Dalej
.
W ostatnim oknie ustawiamy port nasłuchi-
wania i tworzymy naszego managera.
W tym momencie mamy prawidłowo
utworzonego managera kolejek, którego mo-
żemy przetestować, uruchamiając zestaw do-
myślnych testów (Rysunek 2), z których ra-
port zostanie przedstawiony w oknie
Wynik
testów
(Rysunek 2).
• Opis – opis kolejki;
• Komunikaty umieszczania – określają, czy
można umieszczać komunikaty w kolejce;
• Komunikaty pobierania – określają, czy
można odczytać komunikaty z kolejki;
• Domyślny priorytet – pozwala ustawić
domyślny priorytet wstawianej wiado-
mości;
• Trwałość domyślna – pozwala ustalić, czy
komunikaty mają być fizycznie utrwala-
le
Wstęp do IBM Websphere MQ
omówiłem podstawy pracy w śro-
dowisku IBM Websphere MQ 6.1 oraz progra-
mowania w oparciu o bibliotekę MQ base Java.
W poniższym artykule omówię trzy kwestie
związane z dostępem do MQ z poziomu JMS.
W pierwszej części zostanie opisany proces two-
rzenia managera kolejek (ang.
Queue manager
),
kolejki (ang.
Queue
) oraz kanału (ang.
Channel
)
w środowisku WebSphere MQ. W drugiej czę-
ści opiszę, w jaki sposób skonfigurować We-
bSphere MQ jako zawnętrznego dostawcę dla
WebSphere AS. W ostatniej części przedstawię
przykładowy program w standardzie JEE, któ-
ry zademonstruje wykorzystanie MQ.
Konfiguracja WebSphere MQ
Po uruchomieniu Websphere MQ Explorer w
oknie
Navigator
wybieramy tworzenie nowego
managera kolejek (Rysunek 1). Wpisujemy na-
zwę, np.
QM_SDJ
, i przechodzimy dalej. W no-
wym oknie możemy skonfigurować ustawienia
dotyczące dziennika logowania. Dla potrzeb te-
go artykułu wystarczy skorzystać z proponowa-
Rysunek 1.
Tworzenie nowego managera kolejek
68
09/2009
W
numerze 10/2008 w artyku-
Websphere MQ 7 – dostawca usługi zarządzania komu-
ne, czy przechowywane tylko w pamięci
komputera. Ustawienie to ma znaczenie
w przypadku bezpieczeństwa zgromadzo-
nych informacji, ale jest zarazem powo-
dem zmniejszenia wydajności podczas za-
pisu i odczytu komunikatów z kolejki;
• Zasięg – widoczność kolejki;
• Użycie – sposób użycia kolejki.
Po wprowadzeniu wszystkich ustawień może-
my stworzyć kolejkę.
Ostatnim krokiem będzie utworzenie kana-
łu komunikacji z serwerem. Kanał ten będzie
odpowiadał za komunikację serwera WebSphe-
re AS z MQ. W tym celu rozwijamy
QM_SDJ
,
następnie
Zaawansowane
, w których wybie-
ramy
Kanały
. Podobnie jak w przypadku ko-
lejki, tak i tu rozwijamy menu prawym przy-
ciskiem myszy i wybieramy
Nowe->Kanał po-
łączenia z serwerem
. Wprowadzamy nazwę ka-
nału, np.
SDJ_CHANNEL
, i wybieramy
Dalej
.
W nowym oknie ustawiamy protokół transmi-
sji na TCP i wybieramy
Zakończ
. Na liście kana-
łów pojawi się nowa pozycja. Wybieramy nasz
kanał, a następnie prawym przyciskiem myszy
otwieramy menu, z którego wybieramy opcję
Uruchom
. W tym momencie mamy skonfigu-
rowane wszystkie potrzebne rzeczy po stronie
MQ. W kolejnej części przedstawię, jak podłą-
czyć MQ do serwera aplikacji.
Rysunek 2.
Testowanie managera kolejek
Konfiguracja WebSphere AS
do pracy z MQ
Cała konfiguracja zostanie omówiona w opar-
ciu o konsolę WebSphere. Pierwszym krokiem
będzie utworzenie fabryki połączeń kolejki z
zewnętrznym dostawcą, czyli MQ. W tym ce-
lu w konsoli wybieramy
Zasoby->JMS->Fabry-
ka połączeń kolejki
, a następnie
Nowa
. W no-
wym oknie zaznaczamy
WebSphere MQ mes-
saging provider
i wybieramy
OK
. Następnie
wprowadzamy nazwę fabryki, np.
MQFacto-
ry
, oraz nazwę JNDI dla naszej fabryki, np.
MQFactoryJNDI
, i wybieramy
Dalej
. W kolej-
nym oknie ustawiamy
Wprowadź w tym kre-
atorze wszystkie wymagane informacje
i wybie-
ramy
Dalej.
Kolejny formularz pozwala ustawić nazwę
naszego managera kolejek, w naszym przypad-
ku jest to
QM_SDJ
, wybieramy
Dalej
. W kolej-
Rysunek 3.
Szczegółowe informacje dotyczące połączenia
Listing 1.
Lokalny interfejs komponentu EJB
package
com
.
cgi
.
ejb
;
import
javax.ejb.Local
;
import
javax.jms.JMSException
;
@Local
public
interface
ISimpleEJB
{
String
sendSimpleMessage
()
throws
JMSException
;
}
Rysunek 4.
Tworzenie kolejki
www.sdjournal.org
69
Aplikacje biznesowe
nym z listy transport wybieramy
Powiązania,
następnie klient
, a następnie wypełniamy trzy
pozostałe pola (Rysunek 3). W kolejnym oknie
mamy możliwość przetestowania naszego połą-
czenia. Po pomyślnym teście wybieramy
Dalej
, a
następnie
Zakończ
.
Drugi krok polega na utworzeniu odpowied-
niej kolejki, a raczej na właściwym zmapowaniu
jej na kolejkę utworzoną już w MQ. W tym ce-
lu wybieramy
Zasoby->JMS->Kolejki
, a następ-
nie
Nowa
. Podobnie jak w przypadku tworze-
nia fabryki połączeń, tak i tu wybieramy opcję
WebSphere MQ messaging provider
. W nowym
oknie wprowadzamy odpowiednie nazwy w
oparciu o to, co zostało utworzone wcześniej na
serwerze MQ (Rysunek 4), wybieramy
Zastosuj
.
Po wykonaniu wszystkich czynności posiada-
my poprawnie skonfigurowany serwer do pra-
cy z zewnętrznym dostawcą usług zarządzania
komunikatami. Zanim przejdziemy do kolej-
nego punktu tego artykułu, proponuję jeszcze
raz przeanalizować wszystkie ustawienia, któ-
re zostały wprowadzone podczas pracy z MQ
oraz serwerem.
Listing 2.
Bezstanowy komponent EJB
package
com
.
cgi
.
ejb
;
import
javax.annotation.Resource
;
import
javax.ejb.Stateless
;
import
javax.jms.JMSException
;
import
javax.jms.MessageProducer
;
import
javax.jms.Queue
;
import
javax.jms.QueueConnection
;
import
javax.jms.QueueConnectionFactory
;
import
javax.jms.Session
;
import
javax.jms.TextMessage
;
@Stateless
public
class
SimpleEJB
implements
ISimpleEJB
{
@Resource
(
mappedName
=
"MQFactoryJNDI"
)
private
QueueConnectionFactory
queueConnectionFactory
;
@Resource
(
mappedName
=
"SDJQueue"
)
private
Queue
queue
;
public
String
sendSimpleMessage
()
throws
JMSException
{
QueueConnection
conn
=
queueConnectionFactory
.
createQueueConnection
();
Session
session
=
conn
.
createSession
(
false
,
Session
.
AUTO_ACKNOWLEDGE
);
MessageProducer
producer
=
session
.
createProducer
(
queue
);
TextMessage
msg
=
session
.
createTextMessage
();
msg
.
setText
(
"message"
);
producer
.
send
(
msg
);
conn
.
close
();
return
"ok"
;
}
}
Przykładowa aplikacja JEE
W ostatnim kroku przygotujemy prostą apli-
kację JEE, która uzyska dostęp do naszej kolej-
ki i prześle do niej wiadomość. Część odpowie-
dzialna za dostęp do kolejki będzie
komponentem bezstanowym, natomiast
część odpowiedzialna za wywołanie naszego
EJB zostanie przygotowana jako prosta aplika-
cja WEB-owa w JSF. Ponieważ z naszego EJB
skorzysta jedynie nasza aplikacja WEB-owa, wy-
korzystamy interfejs lokalny dla naszego EJB
(Listing 1).
W oparciu o przedstawiony interfejs doko-
namy implementacji naszego komponentu.
Korzystając z możliwości JEE, wykorzysta-
my adnotację @Resource do uzyskania dostę-
pu zarówno do fabryki połączeń kolejki, jak i
samej kolejki:
@Resource(mappedName="MQFactoryJNDI")
private QueueConnectionFactory
queueConnectionFactory;
@Resource(mappedName="SDJQueue")
private Queue queue;
Listing 3.
Implementacja klasy SimpleController
package
com
.
cgi
.
webapp
;
import
javax.ejb.EJB
;
import
javax.jms.JMSException
;
import
org.apache.log4j.Logger
;
import
com.cgi.ejb.ISimpleEJB
;
public
class
SimpleConstroller
{
private
static inal Logger LOGGER = Logger.getLogger(SimpleConstroller.class);
@EJB
private
ISimpleEJB
ejb1
;
public
String
fun1
(){
LOGGER
.
debug
(
"invoke fun1"
);
try
{
String
text
=
ejb1
.
sendSimpleMessage
();
LOGGER
.
debug
(
"text = "
+
text
);
}
catch
(
JMSException
ex
){
LOGGER
.
error
(
ex
);
LOGGER
.
error
(
ex
.
getMessage
());
LOGGER
.
error
(
ex
.
getErrorCode
());
LOGGER
.
error
(
ex
.
getCause
());
}
LOGGER
.
debug
(
"ending fun1"
);
return "";
}
Część z czytelników napewno pamięta, jak w
J2EE wyglądało pobranie odpowiednich refe-
rencji do obiektów zarządzanych przez serwer.
Wiązało się to z utworzeniem obiektu
Con-
text
i wyszukaniu odpowiedniej referencji w
drzewie JNDI serwera. W obecnym standar-
dzie zostało to znacznie uproszczone. Obec-
nie za całość odpowiada za nas kontener, który
wstrzykuje za nas odpowiednią referencję. Sa-
ma metoda
sendSimpleMessage
nawiązuje połą-
czenie z kolejką i wysyła prosty komunikat do
kolejki. Kompletny kod bezstanowego kompo-
nentu przedstawia Listing 2.
Ostatnim etapem będzie wstrzyknięcie re-
ferencji naszego komponentu do klasy
Sim-
pleController,
wykorzystując adnotację @EJB
(Listing 3).
W tym momencie możemy zdefiniować
plik
faces-config.xml
(Listing 4), a następnie
podpiąć fun1 do akcji komponentu JSF, by
móc wywołać metodę z naszego EJB z pozio-
mu aplikacji WEB-owej JSF (Listing 5). Kom-
pletny kod źródłowy wraz ze skryptami budu-
jącymi dla Maven znajduje się na płycie dołą-
czonej do magazynu.
}
70
09/2009
Websphere MQ 7 – dostawca usługi zarządzania komu-
Listing 4.
Plik faces-conig.xml
Zakładam, że dysponujemy już poprawnie
zbudowanym earem. W celu instalacji aplika-
cji na serwerze WebSphere musimy wybrać
Aplikacje->Typy aplikacji->Aplikacje korporacyj-
ne Websphere
, a następnie
Instaluj
. W nowym
oknie wskazujemy ścieżkę do pliku
ear
i wy-
bieramy
Dalej
.
W kolejnym oknie zaznaczamy opcję
Krót-
ka ścieżka
, i przechodzimy dalej. Następnie mo-
żemy ustawić wiele istotnych opcji instalacji ta-
kich jak prekompilowanie jsp czy inny kontekst
aplikacji, na tym etapie proponuję pozostawić
wszystkie domyślne ustawienia i przejść do kolej-
nego okna. Kolejny formularz pozwala wskazać
miejsce instalacji naszej aplikacji, wybieramy
Da-
lej
. Następny widok pozwala dowiązać naszą re-
ferencję opatrzoną adnotacją
@Resource(mappe
dName="SDJQueue")
do odpowiedniego obiektu
w drzewie JNDI. Wpisujemy
SDJQueue
, i prze-
chodzimy dalej. Kolejny formularz wymusza do-
wiązanie obiektu do referencji opatrzonej adno-
tacją @Resource
(mappedName="MQFactoryJN-
DI")
, wpisujemy
MQFactoryJNDI
, i przechodzi-
my do kolejnego formularza. Na nowej podstro-
nie mamy możliwość ustawienia wirtualnego
hosta dla modułu WEB, pozostawiamy domyśl-
ne ustawienie i przechodzimy do ostatniej pod-
strony, która zawiera podsumowanie, wybiera-
my
Zakończ
. Po poprawnej instalacji i zapisaniu
ustawień w konfiguracji lokalnej możemy uru-
chomić naszą aplikację poprzez zaznaczenie jej
na liście zainstalowanych modułów i wybraniu
Uruchom
. Po poprawnym uruchomieniu aplika-
cji możemy ją przetestować. Aplikację WEB-ową
uruchamiamy z poziomu przeglądarki, wpisując
adres
http://localhost:9080/webapp2/index.jsf
. Po-
winniśmy otrzymać stronę z przyciskiem, który
wywołuje metodę z komponentu EJB odpowie-
dzialną za wysłanie komunikatu do kolejki. Po
wywołaniu akcji komunikat zostanie przesłany
do kolejki po stronie MQ (Rysunek 5).
<?xml version="1.0" encoding="UTF-8"?>
<faces-conig
xmlns=
"http://java.sun.com/xml/ns/javaee"
xmlns:xsi=
"http://
www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation=
"http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/
javaee/web-facesconig_1_2.xsd"
version=
"1.2"
>
<managed-bean>
<managed-bean-name>
bean1
</managed-bean-name>
<managed-bean-class>
com.cgi.webapp.SimpleConstroller
</managed-bean-class>
<managed-bean-scope>
request
</managed-bean-scope>
</managed-bean>
</faces-conig>
Listing 5.
Plik index.jsp
<%@ taglib uri="http://java.sun.com/jsf/core" preix="f" %>
<%@ taglib uri="http://java.sun.com/jsf/html" preix="h" %>
<html>
<head>
<title>
HelloWorldJSF
</title>
</head>
<body>
<f:view>
<h:form>
<h:commandButton
action=
"#{bean1.fun1}"
value=
"Invoke EJB "
>
</h:commandButton><br><br>
</h:form>
</f:view>
</body>
</html>
Rysunek 5.
Odczyt wiadomości z kolejki
Podsumowanie
Powyższy artykuł wraz z przykładem aplikacji
daje dobrą bazę wyjściową do tego, by zacząć
eksperymentować z WebSphere MQ oraz JEE.
Omówiony materiał przedstawa krok po kroku
to, co zazwyczaj jest najtrudniejsze w rozpoczę-
ciu pracy z danymi technologiami – konfigura-
cja. Mając bazową wiedzę na temat konfigura-
cji, można iść dalej i przygotować sobie oprócz
kolejek także tematy, popracować trochę z kom-
ponentami sterowanymi komunikatami czy na-
pisać webservice, dzięki któremu dostaniemy
się do MQ z aplikacji napisanej w .net. Pole do
pracy jest spore, dlatego zachęcam do szerszego
zapoznania się z tematem WebSphere MQ 7.
W Sieci
PAWEŁ PIETRASZ
Consultant , CGI Information Systems and Mana-
gement Consultants (Polska) Sp. z o. o.,
Warszawa, ul. Sienna 39, tel. 022 526 57 00
Kontakt: pawel.pietrasz@gmail.com
•
ht tp : //publib.b o ulde r. ib m.co m / info center/wmqv7/ v7r 0 / inde x . jsp? to p ic=/
com.ibm.mq.amqtac.doc/wq11350_.htm
;
•
http://publib.boulder.ibm.com/infocenter/wasinfo/v7r0/index.jsp
;
•
http://java.sun.com/javaee/5/docs/tutorial/doc/
.
www.sdjournal.org
71
Plik z chomika:
Kapy97
Inne pliki z tego folderu:
2010.03_SOA Tworzenie serwisów wspomagających proces integracji_[Aplikacje Biznesowe].pdf
(1004 KB)
2010.05_Wdrożenia SAP – droga przez mękę_[Aplikacje Biznesowe].pdf
(1197 KB)
2010.06_Stary, dobry znajomy Oracle Forms_[Aplikacje Biznesowe].pdf
(548 KB)
2010.05_C++ Qt 4.5 _[Aplikacje Biznesowe].pdf
(1019 KB)
2009.09_Websphere MQ 7 _[Aplikacje Biznesowe].pdf
(581 KB)
Inne foldery tego chomika:
Algorytmy
Antyhaking
Aspekty
Bazy Danych
Biblioteka Miesiaca
Zgłoś jeśli
naruszono regulamin