modellierungund implementierung eines message flows in...

68
Diplomarbeit von Manfred Meyer Modellierung und Implementierung eines Message Flows in einer EJB- Umgebung Diplom Arbeit DA-2001.21 April 2001 bis August 2001 Betreuer: Erik Wilde Professor: Bernhard Plattner Institut für Technische Informatik und Kommunikationsnetze Computer Engineering and Networks Laboratory

Upload: dangtram

Post on 26-Apr-2019

219 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Modellierungund Implementierung eines Message Flows in ...dret.net/netdret/docs/da-ss2001-meyer.pdfUnter den Begriffen Open Hypermedia System und Topic Maps ist man daran, das schon

Diplomarbeit von Manfred Meyer

Modellierung und Implementierungeines Message Flows in einer EJB-Umgebung

Diplom Arbeit DA-2001.21April 2001 bis August 2001Betreuer: Erik WildeProfessor: Bernhard Plattner

Institut für T echnische Informatik und KommunikationsnetzeComputer Engineering and Networks Laboratory

Page 2: Modellierungund Implementierung eines Message Flows in ...dret.net/netdret/docs/da-ss2001-meyer.pdfUnter den Begriffen Open Hypermedia System und Topic Maps ist man daran, das schon

2

Page 3: Modellierungund Implementierung eines Message Flows in ...dret.net/netdret/docs/da-ss2001-meyer.pdfUnter den Begriffen Open Hypermedia System und Topic Maps ist man daran, das schon

Vorwort

DasWorld WideWebConsortium(W3C)bemühtsichschonseitlangem,eineeinheitlicheBeschreibungssprachefür Webinhaltedurchzusetzen.DasUrsprünglicheFormat HTML(Hyper Text Markup Language)ist im Browserkrieg zwischenNetscapeund Microsoftstarkbeschädigtworden.ZwarwurdeversuchtdiesdurchimmerwiederneueVersionenzureparieren- mit mässigemErfolg. DannwurdenCascadingStyleSheets(CSS)eingeführtum die Darstellungvom Browserunabhängigzu machen,in demInhalt und Layout voneinandergetrenntwerden.ExtensibleMarkup Language(XML) mit der ExtensibleStyleLanguage(XSL) ist einevielversprechendeFortsetzungdavon.DochXML gehtweit dar-überhinausund gerätimmer mehr in denBereichdesContentManagement. XML wirdalsdasDatenformatderZukunftpropagiertundsehrviele IT Firmenmit RangundNamenhabendessenUnterstützungin ihren Produktenangekündigt.Doch esgibt nochweitereinteressanteIdeen,wie dieInformationim Internetin Zukunftangeordnetwerdenkönnten.Unter denBegriffen OpenHypermediaSystemundTopic Maps ist mandaran,dasschonsehrerfolgreicheKonzeptderHyperlinkszu revolutionieren.

An diesemPunktwird auchim ProjektXLinkbasegearbeitet.Erik Wilde hathierschoneinigesgeleistet,wie zumBeispielWilde’sWWWglossary(siehe[3]) eindrücklichdemon-striert.Etliche StudentenhabenschonSemesteroderDiplomarbeitender XLinkbasege-widmet, wie auchYvesLangisch,dessenArbeit [1] Grundsteinfür meineDiplomarbeitist. Mit Yves’ und meinenStudienbewegenwir uns in dassehrinteressanteGebietdermodernenWebserver-Technologien,die auf SUNsneuerJava 2 EnterpriseEdition Platt-form aufbauen.Darin enthaltensind Konzeptefür Servlets,EnterpriseJava Beans,JavaMessagingService(JMS),dieJava TransactionArchitecture(JTA) undvielesmehr.

Rückblickend,war esfür mich einewunderbareErfahrung,mich mit all denbeschrie-benenTechnologienzu beschäftigenunddasin einerArbeit die zu einemGebietzählt, indemzur Zeit sehraktiv geforschtundentwickelt wird. Ich hattewährendderganzenZeitimmersehrgrosseFreiheitunddie Möglichkeit mitzubestimmen,in welcheRichtungdasProjektgehensoll. Ich möchteandieserStellemeinemBetreuerErik Wilde rechtherzlichfür die angenehmeZusammenarbeitin denletztenvier Monatendanken.Ebenfalls vielenDank gebührtder Firma BeaSystems,für die freundlicheGewährungeinerverlängertenTestlizenzdesWeblogicServers,diemir meineArbeit sehrerleichterthat.

ManfredMeyerZürich, im August2001

Page 4: Modellierungund Implementierung eines Message Flows in ...dret.net/netdret/docs/da-ss2001-meyer.pdfUnter den Begriffen Open Hypermedia System und Topic Maps ist man daran, das schon

4

Page 5: Modellierungund Implementierung eines Message Flows in ...dret.net/netdret/docs/da-ss2001-meyer.pdfUnter den Begriffen Open Hypermedia System und Topic Maps ist man daran, das schon

5

������������ ����� � ������� ����� � ������� �� � ������������ ��� ���� ��� �! ������#"��%$ � & ��& ��& ����'���� ����������(!���� ��� �

�)� ������*���� (+& ��,����-����' .��.������#"������������� ��� �/���� ��& �� ���� �0' ������#"����0���,���� � �1�

2 3+4�5 675�8�5+9#: ;<+=�>�?�3+6 41>�?�=@2 3�9�A,;7BDC15 6 EF8,3HGI�A,BJBK8,3�6 EC�5 6LA,3�43�=�5 M+=

N���O���� ��P!Q0� �����R1$ � & ��& �&�' ������� ������ � ��0$ �' ��#S�"�& ��P!���0T��S�S0���UP "�& ����� ��& V+��R�������W ����& �#�S�R�X��KW�YZ�[\@���� ��� �' �0]%^1_�W`_�W�a�b\�c1_�b�\�d�S0�e�� ����fL� S��g]h^�_�W#i[�W#a^b�_�Y�c1_jd1' "�kD]h^�_�Wl_�W#ab�\1_�Zb�c�d�S�"�� ��& �m ��& O ��#�& no���#�& O ��& d1��& & *�m f fL��#��& O �& f

poq�rtsvuxwvy{z1|H}ty{~�~�qvz�s���� ��~ �v��uH��w�y{� }!�0���x�H�g��r����F�Fugz�r`��yx���Fyx�xyH�

�������H� �x ¢¡H£x¤¢¥x¦`§�¨t©+ªL¥H �«@¥x�x«�¤¢«�¥H¬x¥x�­¥x� �­®¯©H°x¥x± ±�²x�x°­¥x� �x¥­���´³x± ¥H�¯¥H�x«�� ¥x¨t²H�xµ­¥x� �x¥x¨{¶�£x«�¥H�x¡x£H�x ¢·�°H� ¥­¤¢³x¥x¸¢� ¹�� ¤¢º¢¬°x£+¹�»x¨�£x²H¤�µH¥x± ¥xµH«g� ¤¢«�·g¡x¥H± � ¥x¡H� µH¥½¼�¥x¤¢¤¢©H²x¨`º�¥H�x¦`���%¹�©H¨t�´£x«�� ©x�H¥x�¾¸�²¾¤¢£x�´�¯¥H± �¾¿t�´¥x� ¤¢«g¼D¥+¹�¥x¨`¥x�H¸¢¥x�½£H²%¹D���H«�¥x¨`�x¥x«�¦¡x£H¤¢� ¥x¨`«�¥À¼�¥H¤¢¤¢©x²H¨tº¢¥H�À� �ÂÁv©x¨`�ÄÃ�©x�ÂÅ�ÆvÆv§�¦K©x°H¥x¨KÁvÆv§�¦`Ç�¼D��¤¢ÈK²H�x°Â� �À ¢©H�¯³H± ¥%É�¥Â� �H¬x£H± «j± � º¢¬x¥ÂÊv²x¤¢£H�´�¯¥H�x¦¬HËx�Hµx¥­¸¢²Ì¡H¨t� �Hµx¥H�xÍ@¶D£H¤o¸¢²Hµx¨`²x�H°x¥H± � ¥Hµx¥H�x°H¥Ì®´©H°x¥H± ±�Ã�¥H¨UÎo¥H�x°H¥x«�£H�ÏÃ�� ¥H± ¥H�­Ð�«�¥H± ± ¥H�Ñ�F®¯�H¦`¡x£H¤¢� ¥H¨t«j¥ÌÆv¥Hº¢¬x�H©x± ©x¦µH� ¥H�x·Ò²H�Ó°x� ¥ÔÃ�¥H¨t¤¢º¢¬H� ¥x°H¥x�H¥x�ÖÕ0©x�´³H©x�H¥H�x«�¥H�Ö°x¥H¤Ø×Ï¥x¤¢£H�´«�¤¢Ù¢¤¢«�¥H�´¤Ø�´� «�¥H� �H£x�H°H¥x¨�¸¢²ÔÃ�¥H¨t¡H� �x°H¥x�H;¶�� ¥×Ѩ`²x�H°x£H¨tº¢¬H� «�¥H ¢«�²x¨�°x¥H¤�Ð�Ù¢¤¢«�¥H�¯¤�� ¤¢«�¥H� �ÛÚD± � ¥x�H« Ü�Ð�¥H¨UÃ�¥H¨t¦`®¯©H°x¥H± ± ·�� �Ý°H¥x�Þ°x¥H¨DÚ�± � ¥H�x«�¥H�x« Îo¥H°x¥H¨D¥H� �Û�x©H¨t�´£x± ¥x¨Å�Æv®´�x¦`¡x£H¤¢� ¥H¨t«�¥H¨!ßÂ¥H¡x¦`à�¨`©%Îo¤¢¥H¨t·á¥x� �â��®´�%Ü��F�x� �H ¢¦tà0¨t©+ÎK¤¢¥H¨J°x¥H¨J�xËHº¢¬x¤¢«�¥H�¾×Ï¥x�H¥x¨`£x«�� ©H�x·{©H°x¥H¨J£x²Hº¢¬Ò¥x� �¾¤¢³H¥x¦¸¢� £x± � ¤¢� ¥x¨`«�¥H¨vÚD± � ¥x�H«x¤¢¥H� �´ ¢£H�x�H·x°H¥x¨v¤¢³H¥x¸¢� ¹�� ¤¢º¢¬F¹�»x¨v°H¥x�F�F�x� �x ¢¡H£x¤¢¥H¦tÐ0¥x¨�Ã�¥x¨v³H¨t©Hµx¨`£x�´�´� ¥H¨t«H� ¤¢«x²H�x°´°H� ¥´�j�%¹�©H¨t�´£x¦«�� ©x�H¥x��� ��°H¥x¨0���H� �x ¢¡x£H¤¢¥�� ��£H�x¤¢º¢¬x£H²x± � º¢¬H¥x¨0ßã¥x� ¤¢¥�µx¨`£x³H¬x� ¤¢º¢¬ä�´©H°x¥x± ± � ¥H¨t«�ÍJ¶�¥x¨0���H� �H ¢¡x£H¤¢¥äÐ0¥x¨�Ã�¥x¨F� ¤¢«�¥H� �°x²H¨tº¢¬HµxËH�xµH� µÌ�F®¯�H¦t¡H£x¤¢� ¥x¨`«�¥x¤�Ð�Ù¢¤¢«�¥x�´·�°x£H¤å»H¡x¥H¨DÅ�Æ�Æv§æ�´� «á°H¥x�ÄÚ�± � ¥H�x«� ¢©x�´�´²x�H� ¸¢� ¥x¨`«á²H�x°Ý°H� ¥Ý¼�¥Hçx²H¥x¤¢«�¤²H�x°æ¼�¥H¤¢³x©H�x¤¢¥H¤�»H¡x¥H¨¯¥H� �H¥ä¹�± ¥%É�� ¡H¥x±D ¢©H�%¹�� µH²x¨`� ¥x¨`¡x£H¨t¥æ®´¥H�xµH¥äÃ�©H�ä��Ð0�xÆèÐ�«�Ù¢± ¥æÐ�¬H¥H¥x«�¤¾Ã�¥x¨`£H¨t¡H¥x� «�¥H«�Í�¶�� ¥¥x� µx¥H�x«�± � º¢¬x¥¾Ð�³H¥x� º�¬H¥x¨` �©H�¯³H©x�H¥x�x«�¥¾� ¤�«{¥x¡x¥H�%¹�£H± ± ¤Ì£x²H¤�«�£H²x¤¢º¢¬x¡H£x¨`·g� �êé�©x¨`�¯£H± ¹�£H± ±¢Îo� ¨`°½°H� ¥H¤ÑªL¥H°x©xº¢¬¾¥x�H« ÎK¥H°x¥H¨¥x� �â¨t¥H± £H«�� ©H�x£H± ¥H¤Ï¶�£x«�¥H�x¡H£x�x ¢¤¢Ù¢¤¢«�¥H�Ô©x°H¥x¨!¥x� �x¥��F®¯�H¦t�Hëx¤¢²x�Hµâ¤¢¥x� �xͶ�¥x¨!¥+É�� ¤¢«�� ¥x¨`¥x�H°x¥��F�x� �x ¢¡H£x¤¢¥H¦tÐ0¥x¨�Ã�¥x¨!§�¨`©x«�©H«�Ù¢³â� ¤¢«��´©x�´¥x�H«�£x�â£H± ¤K£x²+¹{ì0�x«�¥H¨t³H¨t� ¤¢¥âí¢£%Ã�£xà0¥x£H�x¤K¿tì0í¢à�È!¡x£H¤¢� ¥H¨t¦¥x�H°x¥�îF¨tº¢¬H� «j¥x ¢«�²H¨!¨t¥H£x± � ¤¢� ¥H¨t«�Í�¶�� ¥âì0í¢à�Õ�©H�¯³H©x�H¥x�H«�¥x�â ¢©H�¯�´²H�x� ¸¢� ¥H¨t¥H�â�´� «�¥H� �H£x�H°x¥H¨!�´� «�«j¥x± ¤J�F®¯�â®´¥H¤�¤¢£Hµx¥H¤¢Í¶�� ¥H¤¢¥Ý®´¥x¤¢¤¢£Hµx¥H¤KÎo¥H¨t°H¥x�ÌÃ�¥H¨UÎo¥H�x°x¥H«�·�²x�Þ¼�¥xçH²x¥x¤¢«j¤¢·á°H� ¥Û°x¥H¨DÐ�¥H¨UÃ�¥H¨D¥x¨`¬xËH± «�²H�x°ÌÃ�¥H¨t£H¨t¡H¥x� «�¥H�Ý�¯²H¤¢¤¢·�Ã�©x�°x¥H�ïª7¥%Îo¥x� ± ¤F¸¢²H¤�«jËx�H°x� µx¥H�ðì�í¢à�¤ñÃ�¥x¨`£x¨`¡x¥H� «�¥x�𸢲𱠣x¤¢¤¢¥H�xÍ)���ò¼�£x¬H�´¥x�ð°H¥x¨@¶�� ³x± ©x�´£x¨`¡x¥H� «)¤¢©H± ± ¥x�ð°H� ¥ï¹�©H± µx¥H�x°H¥x�§�¨`©x¡H± ¥H�´¥´£x²+¹{°x¥H¨vÐ0¥x¨�Ã�¥H¨t¤¢¥H� «j¥´ ¢©x�H¸¢¥x³H«�� ©H�x¥H± ±ó¡x¥H«�¨t£Hº¢¬x«�¥H«H²x�H°´� �¯³H± ¥H�´¥x�x«j� ¥H¨t«+Îo¥x¨`°x¥H�xô

õ ¶�£x¤öÁv©x¨`�´£x«â¹�»x¨�°H� ¥Ö¸�Îo� ¤¢º¢¬x¥x�Ö°H¥x�Öì0í¢à�¤ö£x²x¤¢µH¥x«�£H²x¤¢º¢¬H«�¥x�Ô�F®¯�Ö®´¥H¤¢¤¢£xµx¥H¤Ø¿`¼�¥xçH²x¥H¤¢«�¤Ø²H�x°¼�¥H¤¢³x©x�H¤¢¥x¤¢Èv�¯²H¤¢¤ñ¹�¥x¤¢«�µH¥x± ¥xµH«hÎo¥H¨t°H¥x�HÍx¶D� ¥H¤��´²x¤¢¤Ñ� �¯¥x�Hµx¥H¨1î�¡H¤¢«�� �´�´²x�Hµ¯�´� «x°H¥x¨�¶�� ³x± ©x�´£H¨t¡H¥x� «)³H£x¤¢¦¤¢� ¥x¨`¥x�H·H°x� ¥´¤¢� º¢¬´�´� «H°x¥H¨v÷ѲH¥x¨`Ù¢¦tÐ�³H¨t£Hº¢¬x¥F¹�»x¨v°H� ¥����x� �x ¢¡H£x¤¢¥â¡x¥x¤¢º¢¬HË%¹�«�� µH«�Í

õ ì0� �­Îo¥H� «�¥H¨t¥H¨{Îo� º�¬H«�� µx¥H¨{î�¤¢³H¥x ¢«0� ¤�«0°H¥x¨ï°x¥x¨ï¶�� ¥H�x¤¢«�¡H¥x¤¢º¢¬x¨`¥x� ¡H²x�xµ�°x¥H¨�ì�í¢à0¤¢·�°H� ¥�¤¢©Û£x²H¤¢µx¥H± ¥Hµx«0¤¢¥H� ��´²H¤¢¤¢·!°H£x¤¢¤Ì¡x¥H��°x¥H¨ñÕ�©H�%¹�� µH²x¨`£H«�� ©x�½¥x� �H¥x¨��F�x� �H ¢¡x£H¤¢¥½°x� ¥¯Ã�©x¨`¬H£x�H°x¥H�x¥H�½ì�í¢à0¤â¡H¥x¤¢º¢¬H¨`� ¥H¡x¥H�¯Îo¥x¨`°x¥H� ¢ëH�x�H¥H�x·H²x�Ô¤¢©FÃ�©x�´°H¥x¨v¼�©H²x«j� �Hµx¦`Õ0©x�´³H©x�H¥x�H«�¥´¥H�x«�¤¢³H¨`¥xº¢¬H¥x�H°´¡H¥x¨`»xº¢ ¢¤¢� º¢¬H«�� µx«+Îo¥x¨`°H¥x�´¸¢²´ ¢ëH�x�H¥H�xÍ

õ îF²x¤¢µx¥H¬x¥H�x°ïÃ�©H�o°H¥x�𠢩H�%¹�� µx²H¨t� ¥x¨`«�¥x�ðì0í�à0¤F²H�x°ð¥x� �H¥x�ò ¢©x�H ¢¨t¥H«�¥x�ð¼�¥Hçx²x¥H¤¢«��´²H¤¢¤F¥x� �ïî�± µx©H¨t� «�¬x�´²H¤0¹�»x¨°H£x¤øà0¥x¨`¥xº¢¬H�x¥H�Û¥H� �H¥x¨ï¼�©x²H«�¥�µx¥+¹�²x�H°x¥H�­Îo¥H¨t°H¥x�H·0°x¥H¨á¹�»x¨áªL¥H°x¥H��£x�H �©H�´�¯¥H�x°H¥x��¼�¥xçH²x¥H¤¢«0°x� ¥�©x³H«�� ¦�´£x± ¥´ù�¥x¨`£x¨`¡x¥H� «j²x�xµH¤�Îo¥x� ¤¢¥½� �êÐ�¥H¨UÃ�¥H¨ñ¡H¥x¨`¥xº¢¬H�x¥x«jÍg¶�� ¥H¤¢¥½¼�©H²x«�¥¾� ¤¢«{¥x� �½×Ϩt£H³x¬H·g°x¥H¨ñ ¢©H�x°H� «�� ©H�x£x±�°H¥x�ßã¥xµâ¥x� �H¥x¤Ï¼�¥xçH²x¥H¤¢«�¤Ï°H²x¨`º¢¬FÃ�¥H¨t¤¢º¢¬H� ¥H°x¥H�x¥âì�í¢à0¤Ï¡x¥H¤¢º¢¬x¨`¥x� ¡x«jÍ

õ ì0� ��Õ�©H�x¸¢¥H³x«!¹�»x¨F°H£x¤¾¼�©H²x«�� �xµøÃ�©H��®¯¥H¤¢¤¢£xµH¥x¤¾¸�Îo� ¤¢º¢¬x¥H�ä°H¥x�øÃ�¥H¨t¤¢º¢¬x� ¥H°x¥x�H¥x��ì0í¢à�¤¾�´²x¤¢¤Ò¥x¨`¤¢«�¥x± ± «Îo¥x¨`°x¥H�xÍ)¶�� ¥x¤¢¥x¤�¼�©H²x«�� �xµ¯� �¯£x¡x¬HËx�Hµx� µïÃ�©H�ïÃ�©x�ú¡H¥x¨`¥xº¢¬x�H¥x«�¥H�ð×Ѩ`£x³H¬x¥H�ð²H�x°�ÎK� ¨t°�Îo£x¬H¨t¤¢º¢¬x¥H� �H± � º¢¬ð£H²%¹°H¥x�Ôí¢£%Ã�£´®´¥H¤¢¤¢£Hµx� �Hµ´Ð�¥H¨�Ã�� ºó¥´¿tí¢®´Ð0Èv¡x¥H¨`²x¬H¥H�xÍ

Êv� ¥H±�°x¥H¨0¶�� ³x± ©x�´£x¨`¡x¥H� «!� ¤¢«!¥H¤¢·!¥x� �½Õ�©H�x¸¢¥x³H«!²H�x°½¥x� �x¥½³x¨`©x«�©H«�Ù¢³x� ¤¢º¢¬x¥½���¯³H± ¥H�´¥x�x«�� ¥x¨`²x�Hµ½¸�²½¥H¨t¤¢«�¥H± ± ¥x�H·!°x� ¥½¥x¤¥x¨`�¯ëHµx± � º¢¬H«�·g�´� «g°H¥x�¾¥x¨`£x¨t¡H¥x� «�¥x«�¥H�½Õ�©H�x¸¢¥H³x«�¥x�¾³x¨`£x ¢«�� ¤�º¢¬H¥½Æv¥H¤�«�¤­°x²x¨`º¢¬x¸¢²%¹�»H¬x¨`¥x�xÍ{¶D� ¥´ÎK� º¢¬x«�� µx¤¢«�¥x�´î�¤¢³H¥x ¢«�¥¡x¥H�ó°x� ¥H¤¢¥x�âÆ�¥H¤¢«�¤Ï¤¢� �x°â¼�©x¡x²H¤¢«�¬x¥x� «�·HÐ� ¢£H± � ¥x¨t¡H£x¨t ¢¥H� «�·HÁv± ¥%É�� ¡H� ± � ËH«H²x�H°´ì0¨UÎo¥x� «�¥H¨t¡H£x¨t ¢¥H� «H°H¥x¨!�xëx¤¢²H�xµxÍ

Å�¥x¨`¨t�®´£x�+¹�¨t¥H°â®´¥xÙ¢¥H¨

Êv»x¨`� º¢¬x·áû+üxÍ ýgÍ�þ{û

Page 6: Modellierungund Implementierung eines Message Flows in ...dret.net/netdret/docs/da-ss2001-meyer.pdfUnter den Begriffen Open Hypermedia System und Topic Maps ist man daran, das schon

6

Page 7: Modellierungund Implementierung eines Message Flows in ...dret.net/netdret/docs/da-ss2001-meyer.pdfUnter den Begriffen Open Hypermedia System und Topic Maps ist man daran, das schon

Inhaltsverzeichnis

1 Einführung 11

2 Iteration 1 132.1 UseCase . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 132.2 Routing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 132.3 MessageProperties . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 152.4 Subclassing. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 152.5 Programmierung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 162.6 ErkenntnisseausderIteration1 . . . . . . . . . . . . . . . . . . . . . . . . 17

3 Iteration 2 193.1 UseCase . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 193.2 Synchronizer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 193.3 Stack . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20

3.3.1 Datenstack . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 203.3.2 Kommandostack. . . . . . . . . . . . . . . . . . . . . . . . . . . 21

3.4 MessageFrame . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 213.5 MessageProperties . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 223.6 ErkenntnisseausderIteration2 . . . . . . . . . . . . . . . . . . . . . . . . 22

4 Iteration 3 234.1 UseCase . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 234.2 History . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 234.3 DataID . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 234.4 MessageFrame . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 244.5 ErkenntnisseausderIteration3 . . . . . . . . . . . . . . . . . . . . . . . . 24

5 RoutedMessageDri ven Beans:A new Abstraction for usingEJBs 27

A Inhalt der CDROM 33A.1 XLinkbaseServer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33A.2 ApplicationServer Installationen. . . . . . . . . . . . . . . . . . . . . . . 34

A.2.1 BeaWeblogic . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34A.2.2 JBoss-TomcatServer . . . . . . . . . . . . . . . . . . . . . . . . . 34

A.3 TestCode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35A.4 SoftwareTools . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35A.5 Bericht. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35

B API Dokumentation 37B.1 XlinkbaseBean . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37B.2 XlinkbaseException. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47B.3 Controller . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49B.4 Logger. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53

Page 8: Modellierungund Implementierung eines Message Flows in ...dret.net/netdret/docs/da-ss2001-meyer.pdfUnter den Begriffen Open Hypermedia System und Topic Maps ist man daran, das schon

8 INHAL TSVERZEICHNIS

B.5 RequestHandler. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57B.6 Monitor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61

C Zeitplan 65

Page 9: Modellierungund Implementierung eines Message Flows in ...dret.net/netdret/docs/da-ss2001-meyer.pdfUnter den Begriffen Open Hypermedia System und Topic Maps ist man daran, das schon

Abbildungsverzeichnis

2.1 Systemaufbau. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 132.2 Routingfile . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 142.3 Klassendiagramm. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16

3.1 StylesheetProcessor1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 193.2 StylesheetProcessor2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 203.3 StylesheetProcessor3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 203.4 KommentarüberSingletonsin EJBs . . . . . . . . . . . . . . . . . . . . . 213.5 MessageFrame,Iteration2 . . . . . . . . . . . . . . . . . . . . . . . . . . 22

4.1 History Mechanismus. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 244.2 MessageFrame,Iteration3 . . . . . . . . . . . . . . . . . . . . . . . . . . 25

Page 10: Modellierungund Implementierung eines Message Flows in ...dret.net/netdret/docs/da-ss2001-meyer.pdfUnter den Begriffen Open Hypermedia System und Topic Maps ist man daran, das schon

10 ABBILDUNGSVERZEICHNIS

Page 11: Modellierungund Implementierung eines Message Flows in ...dret.net/netdret/docs/da-ss2001-meyer.pdfUnter den Begriffen Open Hypermedia System und Topic Maps ist man daran, das schon

Kapitel 1

Einführung

HintergrunddieserDiplomarbeitist die XLinkbase. Um die folgendenKapitel zu verste-hen,solltemanmindestenseineAhnunghabenworumesdabeigeht.EinegeeigneteEin-führungin diesesProjektwärezumBeispieldasPaper[2]. Eswird aberhiernichtdirektanderXLinkbasegearbeitet,sondernesgehtum die AnbindungdieseraneinenWebserver.Warumgeradedie im folgendenbeschriebeneArchitekturgewähltwurdeundwasdieVor-teile davon sind,kannunter[1] nachgelesenwerden.Darin findetsichaucheinenausführ-lichen Vergleichmit anderenmöglichenTechnologienwie etwasCORBA, COM/DCOMinklusiveMicrosofts.NET Plattform.

Die Grundideewar alsobereitsgegeben- eineScharvon Message Driven Beansbe-arbeitenin einemJ2EE-KonformenApplication Server von aussenüberdasInternetan-kommendeRequests.Wie dieseBeanssich aberdie Arbeit aufteilen,um AbfragenoderManipulationenanderXLinkbasezu vollziehen,wie siemiteinanderkommunizierenundvorallemwie siegenauprogrammiertwerden,daswar nochvöllig offen.

Da alsobei diesemProjektnicht schonzum vorhereinklar war, wie dasSystemamSchlussaussehensoll, habeich mich entschlossenfür die Organisationder Implementie-rungein Iterationsmodellanzuwenden.Aufsetzendauf denVorschlägenin derArbeit [1],versuchteich in jederIterationneuzu entscheiden,wohin die Entwicklunggehensoll undwelcheFeaturesalsnächsteseingebautwerdensollten.

Die Kapitel 2, 3 und 4 stellendenchronologischenFortgangin dieserArbeit dar. Eswird jeweils beschriebenwas die Zielsetzungder Iteration war, gefolgt von KonzeptenundImplementationsdetailszu deneinzelnenThemen.NachjederIterationhabeich dannnochmalszurückgeschaut,einigeErkenntnissenotiert und Ideengeäussertwie esweitergehenkönnte.

Bevor eineneueIterationgestartetwurde,habeich mit meinemBetreuerErik Wildeüber den Fortgangder Projektsdiskutiert und entschiedenwelcheFeaturesals nächstesEingebautwerdensollten,welcherealistischsindundwelchenochzurückgestelltwerdenmüssen.Dabeisindwir zurÜberzeugunggelangt,dassdiesesim EntstehenbegriffenePro-dukt zu allgemeinerenZweckengeeignetist alsnur für die KonstruktioneinesXLinkbaseServers.NachlangemSinnierenzurPositionierungdieserArbeit im SoftwareMarkt,habenwir unsentschiedeneinoffiziellesPaperzuverfassenundaneinegeeigneteKonferenzzurVeröffentlichungeinzusenden.DasPaperträgtdenTitel RoutedMessageDriven Beans:Anew Abstractionfor usingEJBsundist in Kapitel 5 in dieseDokumentationeingebunden.DiesesPaperist auchalsein zentralerBestandteilfür die DokumentationmeinerDiplom-arbeitzubetrachten.Darinenthaltenist eineinleitenderAbschnittüberdieXLinkbaseunddieMotivationfür dieseArbeit,VergleicheundAbgrenzungenzuanderenProduktensowieIdeenfür zukünftigeErgänzungen.Schliesslichwird nochweiterauf gewonneneErkennt-nisseeingegangen,inklusiveTestergebnisseundPerformance-Messungen.

Ein sehrwichtigesKapitel für Leutedie sich intensiv mit dieserArbeit beschäftigen,sieweiterführenoderneueRMDBsimplementierenwollen,ist derAnhangA. Nebeneiner

Page 12: Modellierungund Implementierung eines Message Flows in ...dret.net/netdret/docs/da-ss2001-meyer.pdfUnter den Begriffen Open Hypermedia System und Topic Maps ist man daran, das schon

12 Einführung

Auflistung wassich auf der beiliegendenCD-ROM befindet,sind auchAnleitungenzurInstallationund Konfigurationder Application Server, sowie Hinweisezur Programmie-rungundErzeugungvonRMDBs.DerJBossApplicationServerundinsbesonderederBeaWeblogicServer sindäusserstkomplex. OhneStarthilfebrauchtessehrviel Zeit bis mansich darinzurechtfindet. In derBibliographiesind zudemLinks aufgeführtzu wichtigenDokumentationenderbeidenServer.

Im AnhangB befindetsichdieAPI Dokumentationvon sämtlichenRMDBsundderenHilfsklassen.Diesewurdemit dem javadoc-Tool erstelltund ist auchim HTML-Formatauf derCD verfügbar.

Page 13: Modellierungund Implementierung eines Message Flows in ...dret.net/netdret/docs/da-ss2001-meyer.pdfUnter den Begriffen Open Hypermedia System und Topic Maps ist man daran, das schon

Kapitel 2

Iteration 1

2.1 UseCase

DerSystemaufbauin diesemerstenPrototypist nahezuidentischzudemin meinerVorgän-gerarbeit.Ein Servlet(Kicker) nimmt http-Requestsentgegen,erzeugtdarauseineJMS-Message,die dannin einemPool von Message-Driven-Beansverarbeitetwird. Der ersteEmpfängerderMessageheisstController. Dieserbekommtin meinemSystemeinebeson-dereAufgabe,denner ist für die InitialisierungderRoutingmechanismusverantwortlich.FürdieweitereVerarbeitungdesRequests,soll dieMessageaneinenLoggerweitergereichtwerden,welchervorerstnichtsweiterestut alseineNachrichtauf die Konsoleauszugebenund die Messagean denRequestHandlerßuleiten.Der RequestHandlerïstdasBeanwel-chesdie eigentlicheBehandlungderAnfrageübernimmt.Der Requestwird daringeparst,dieverlangtenDatenbeschafft undandenKickerzurückgesendet.

KickerServlet

JMSQueue

HTTPPort

EJB-Container

LoggerMDB

JMSQueue

Request-HandlerMDB

JMSQueue

ControllerMDB

JMSQueue

Web

Clie

nts

Abbildung2.1:Systemaufbau

DasNeuedaranist bloss,dassderVerarbeitungpfadnicht mehrfestkodiertseinwird,sonderndurcheinenRoutingalgorithmuszurLaufzeitbestimmtundsoll somitjederzeitge-ändertwerdenkönnen.Sowird eszumBeispielmöglichsein,dassich demRoutermitteile,ersoll denLoggerauslassen,unddieNachrichtvomControllerdirektzumRequestHandlerleiten.DasmusskomplettohneVeränderungamSourcecodemachbarsein.

2.2 Routing

Es gibt verschiedeneIdeenwie der Abarbeitungspfadbestimmtwerdenkann.Beispiels-weisevon der Person,die denServer startetund konfiguriertund dabeidie Route“von

Page 14: Modellierungund Implementierung eines Message Flows in ...dret.net/netdret/docs/da-ss2001-meyer.pdfUnter den Begriffen Open Hypermedia System und Topic Maps ist man daran, das schon

14 Iteration 1

Hand” in ein Konfigurationsfileniederschreibt.DaskönnteauchunterZuhilfenahmeeinesSoftwaretoolsgeschehen,mit demesmöglich,wäredie Beansgrafischzusammenzustel-len. Weiter könntedabeiein intelligentesSystem,welchesdie Eigenschaftender Beanskennt,denOperatorbei seinerArbeit unterstützenoder ihn im Idealfall ersetzenund dieKomponentenautomagischzueinemlauffähigenSystemverbinden.

Wie dasin Zukunft passierensoll, möchteich nicht vorweg nehmen.Ich bin aberderMeinung,dasssich dieseFrageleicht vom eigentlichenRoutingalgorithmusentkoppelnlässt.Als gemeinsamenNenneraller Möglichkeitenzur Routenbestimmungsollte dabeieineDatenstrukturerstelltwerden,welchedemweiterenRoutingmechanismuseinenein-deutigenAbarbeitungspfadliefert. DieseDatenstrukturkönntein XML formuliertseinundin einerDatei gespeichertwerden.Wie sie aberentstehtist vorerstunwesentlichund so-mit werdenich für dieseersteIterationeinfachmit einembeliebigenEditor ein solchesXML-Routingfile erstellen.

DieXML-Codein Abbildung2.2zeigteinesimpleInstanzfür eineRouting-Datenstruktur.

<?xml version="1.0"?><graph><node name="Controller"><route><input>Kicker</input><output>Logger</output><exception>Kicker</exception>

</route><route><input>RequestHandler</input><output>Kicker</output><exception>Kicker</exception>

</route></node><node name="Logger"><route><input>Controller</input><output>RequestHandler</output><exception>Kicker</exception>

</route><route><input>RequestHandler</input><output>Kicker</output><exception>Kicker</exception>

</route></node><node name="RequestHandler"><route><output>Kicker</output><exception>Kicker</exception>

</route></node>

</graph>

Abbildung2.2:Routingfile

DasHauptelement<graph> enthältmehrereKnoten<node>. Esmussfür jedesMDBgenaueinsolchesElementexistierenunddurchdasAttribut namegekennzeichnetwerden,

Page 15: Modellierungund Implementierung eines Message Flows in ...dret.net/netdret/docs/da-ss2001-meyer.pdfUnter den Begriffen Open Hypermedia System und Topic Maps ist man daran, das schon

2.3MessageProperties 15

welchernodezuwelchemBeangehört.SokannjedesMDB schnellseinenTeilbereichausderStrukturherauslesen,welchesdieRoutinginformationfür sichselberenthält.In diesemKnotensind danneineodermehrereRoutendefiniert.DasTag <input> bestimmtob dieRoutezurVerarbeitungdesaktuellenRequestspasstodernicht.DasEJBmussdazujedochwissen,von wem esdie Messageempfangenhat. Ist kein Input-Tagangegebenheisstes,dassdie Messageirgendwo herkommenkannunddieseRoutetrotzdemverwendetwird.Grundsätzlichsoll für dieWahldesPfadesdiefirst fitRegelgelten,alsodieersteRoutediemit demgegenwärtigenAbsenderübereinstimmt,soll gewählt unddie darinenthaltenenOutput-undException-Pfadefür dieWeiterleitungvonNachrichtenoderFehlermeldungenverwendetwerden.

2.3 MessageProperties

Es gibt verschiedeneArten von Messages,die mit dem Java MessagingService(JMS)verschicktwerdenkönnen.EtwaeinfacheText oderByteMessages,StreamMessagesodersolchedieeinJavaObjektalsInhaltbergenkönnen.ZusätzlichzumInhaltderMessagebie-tet JMSdie Möglichkeit Propertieszur Nachrichthinzuzufügen.Diesist eineMöglichkeitverschiedeneArgumentein der Messagegetrenntablegbarund zugreifbarzu speichern.DurcheinenStringwerdendie PropertiesidentifiziertundalsTyp kommenboolean, byte,short, int, long, float, doubleundString in Frage.In diesemerstenPrototyphabeich diefolgendenPropertiesbenutzt,um InformationenüberdenRequestzuübermitteln.

RequestId: Eine eindeutigeNummerzur Unterscheidungder einzelnenRequests.WirdvomKickerServletberechnetundhinzugefügt.

Request: Die eigentliche,zu verarbeitendeAnfrage.Soll in einerXlinkbasespezifischenXML QueryLanguageformuliert sein,dieaberbishernochnicht definiertist.

Sender: DerNamedesSendersdergegenwärtigenNachricht.

RoutingInf o: BeinhaltetdenRoutingGraphenwie der in Abschnitt2.2 beschriebenist.Dieserwird vom ControllerMDB in dieMessageeingefügt.

Response:Hier kann ein Bean,dasauf den Requesteine Antwort produzierthat, denOutputin einergeeignetenCodierunganfügen.

Exception: Falls die Verarbeitungzu einemFehlerführt, kannhier InformationüberdieUrsachemitgeliefertwerden.

Der Typ aller beschriebenenPropertiesist String,ausserdie RequestID,die vom Typ intist.

2.4 Subclassing

Die Wahl der MessageDriven BeansälsGrundlagezur ImplementierungdesXlinkbaseServers,machtes für einenProgrammierersehreinfach weitereBeanszu erstellen.ImGegensatzzu einemEntity oder SessionBean brauchtein MessageDriven Bean keinHome-InterfaceodersonsteinezusätzlicheKlassedie programmiertwerdenmuss.Einzigdie beidenInterfacesMessageDrivenBean undMessageListener müssenimple-mentiertwerden.Konkretheisstdas,die MethodenejbActivate(), ejbRemove(),ejbPassivate() undejbCreate(), die zur VerwaltungderInstanzenvom Contai-neraufgerufenwerdenunddieMethodeonMessage(Message), diebeiAnkunft einerMessageaufgerufenwird undworin danndieBusinessLogic desBeansstehensoll.

DurchdieseEinfachheitdiesesBeanTypsbleibteinsehrnützlichesKonzeptderObjekt-orientiertenProgrammierungzurVerwendungoffen- undzwardasSubclassing.In derEJBSpezifikation[7] stehtdazufolgendes:

Page 16: Modellierungund Implementierung eines Message Flows in ...dret.net/netdret/docs/da-ss2001-meyer.pdfUnter den Begriffen Open Hypermedia System und Topic Maps ist man daran, das schon

16 Iteration 1

The message-drivenbeanclassmay have superclassesand/orsuperinter-faces.If themessage-drivenbeanhassuperclasses,theejbCreate method,andthe methodsof theMessageDrivenBean andMessageListenerinterfacesmay be definedin the message-driven beanclassor in any of itssuperclasses.

Themessage-drivenbeanclassis allowedto implementothermethods(forexample,helpermethodsinvoked internally by theonMessage method)inadditionto themethodsrequiredby theEJBspecification.

In diesererstenVersionmeinesXlinkbaseServershabeich dieseEigenschaftausgenütztundeineSuperklasseXlinkbaseBean erstellt.DieseKlasseerfüllt alleForderungenderEJBSpezifikationfür MessageDrivenBeans,ausserdassdiesenicht direkt instanzierbarist, sondernerstdurcheineSubklasseerweitertwerdenmuss.

2.5 Programmierung

«Interface»MessageDrivenBean

+ejbCreate()+ejbRemove()+ejbActivate()+ejbPassivate()

«Interface»MessageListener

+onMessage(msg:Message)

«abstract»XlinkbaseBean

+ejbCreate()+ejbRemove()+ejbActivate()+ejbPassivate()+onMessage(msg:Message)+processMessage()+getRequest(): String+getRequestDOM(): Document+sendMessage(:String)+sendException(:String)+...()

Controller

+onMessage(msg:Message)+processMessage()

Logger

+processMessage()

RequestHandler

+processMessage()

Abbildung2.3:Klassendiagramm

Die Abbildung2.3zeigtdasKlassendiagrammfür die ersteVersionmeinesXlinkbaseServers.Die KlasseXlinkbaseBean enthältschondie fertig ausprogrammiertenMe-thodendesMessageDrivenBean Interfacesund die MethodeonMessage ausdemMessageListener Interfaceund erledigtbereitsalle notwendigenMassnahmenzumRoutingderMessages.Die PropertieswerdenausderMessageherausgelesen,derAbsen-der festgestellt,die Routingstrukturgeparst,darausdie Routefestgestelltundschliesslichdie Output und ExceptionPfadegesetzt.Dannwird die Kontrolle an die neueMethodeprocessMessage()weitergegeben.Dieseist in XlinkbaseBean mit demKeyword

Page 17: Modellierungund Implementierung eines Message Flows in ...dret.net/netdret/docs/da-ss2001-meyer.pdfUnter den Begriffen Open Hypermedia System und Topic Maps ist man daran, das schon

2.6Erk enntnisseausder Iteration 1 17

abstract definiertundist somitdie einzigeKlasse,die dannin derSubklassenochim-plementiertwerdenmuss.Aus dieseWeisewird der Routingmechanismusfür denBean-programmierervöllig transparent.Man könnteSubklassenvonXlinkbaseBean garalsneuenBeantypenansehen,alsRoutedMessageDrivenBeans(RMDB).

DasControllerBeanbeinhaltetin diesemSchemaeinekleineAusnahme.Da bei An-kunft einesRequestsvonServletdieRouting-Datenstrukurnochnicht in derMessageent-haltenist, funktioniert die onMessage Methodenoch nicht. Aus dem Grund wird imControllerdieseMethodeüberschriebenmit einereigenenImplementation,welchezuerstdasFile mit der Routingstruktureinliestund derenInhalt in die Messagekopiert. Allesanderefunktioniertjedochidentischwie im Loggerundim RequestHandler.

Für die auf derXlinkbaseBean-KlasseaufbauendenBeansstehenin ihrer Super-klasseweitereunterstützendeMethodenzur Verfügung.EinerseitszumAnforderndesRe-questsals String odergeradein geparsterForm als DOM-Tree,andererseitszum Weiter-sendenvon neuenMessagesoderExceptions.

2.6 Erk enntnisseausder Iteration 1

Aus der Iteration1 ist ein sehreinfachesFramework entstanden,mit demRequestsaufdie Xlinkbaseverarbeitetwerdenkönnen.Die Beanssind einfachzu programmierenundlaufenunabhängigundasynchronzu einander, waswichtig ist um einegutePerformancezu ermöglichen.DasSystemist gut skalierbar. Dasheisst,dassim Server beliebigvieleInstanzenderBeansparallelarbeitenkönnenunddasübermehrere,in ClustersorganisierteRechnerverteilt.Die meistenmodernenApplicationServerunterstützendiesesClustering,auchdervon mir verwendeteBeaWeblogic 6.0sp1.

Die verschiedenenBeanskönnenin beliebigerReihenfolgezusammengestecktwerdenumdemRequestzubehandeln.Abernur in einerLinie. Esist alsobishernichtmöglichimselbenBeanmehrereMessageszu sendenoderzu empfangen.Komponentendie mehrereDatenpaketezueinemverschmelzenodereinesin mehrereaufteilen,sindsonichtmachbar.DaswäresichereinnützlichesFeaturefür einedernächstenIterationen.

Esgibt einigePunktediezumZweckederEinfachheitnochnichtsaubergelöstwurden.DasAussehendesMessagesundderenInhaltsolltenochgenauerdefiniertwerden.DerNa-medesBeans,dasfür dasRoutingverwendetwird, mussseparatalsEnvironmentvariablein dasDeploymentfilegeschriebenwerden.Weiter solltedie Routing-Datenstrukturnichtin einersimplenDateiabgelegt werden,weil dasin übermehrerenRechnerverteiltenClu-stenzurUnauffindbarkeitdesFilesführenkann.Ausserdemsolltein EnterpriseJavaBeansgenerellauf dasPaket “java.io.*” verzichtetwerden.

Mit demEssenkommtderAppetit! Beim Programmierenist dasähnlich,undsosindmir weitereFeatureseingefallen,die in Zukunft möglichseinsollten:

ÿ Das“SessionKonzept”dasin denServletsvorhandenist, sollteauchin denMDBsverwendbarsein.AuthentifizierendeBeanskönnteneineAnwendungdavon sein.

ÿ Die Java TransactionArchitecture(JTA), die bereistfür die EJBszur Verfügungsteht,könnteauchin denXlinkbaseBeansVerwendungfinden.AbfragenundMani-pulationenanderXlinkbasekönntensodie ACID-Eigenschaften(atomicity, consi-stency, isolation,durability) verliehenwerden,wasin sicherheitskritischemUmfeldsichersehrgeschätztwürde.

Page 18: Modellierungund Implementierung eines Message Flows in ...dret.net/netdret/docs/da-ss2001-meyer.pdfUnter den Begriffen Open Hypermedia System und Topic Maps ist man daran, das schon

18 Iteration 1

Page 19: Modellierungund Implementierung eines Message Flows in ...dret.net/netdret/docs/da-ss2001-meyer.pdfUnter den Begriffen Open Hypermedia System und Topic Maps ist man daran, das schon

Kapitel 3

Iteration 2

3.1 UseCase

In derzweitenIterationmöchteich ich einenderHauptanwendungszweckedesXlinkbase-Serversuntersuchen,nämlich die XSL-Transformationvon XML Files und Topic Mapsund wie sie mit demvorhandenenFramework realisiertwerdenkönnten.Dabeisoll derProzessim mehrereeinzelneAufgabenzerlegt werden,damitdieasynchroneundparalleleFunktionsweisederMessageDrivenBeansvoll greifenkann.Sokönntenfür die Phasen,Beschaffung deszu verarbeitendenXML Files,Beschaffung desStylesheetsund Durch-führungder Transformation,drei selbstständigeBeansprogrammiertwerden.DasXMLFile unddasStylesheetkönntenausdemsekundärenSpeichergelesenwerdenoderauchvon weiterenMDBs generiertwerden.

3.2 Synchronizer

Esgibt mehrereMöglichkeitenwie diedreiBeansfür dieXSL-Transformationmit Messa-gesmiteinanderkommunizierenkönnen.Die Abbildungen3.1bis 3.3zeigendrei davon.

getXML

getXSL

RequestHandler XSLT... ...

EJB-Container

Abbildung3.1:StylesheetProcessor1

Um dieersteVarianteimplementierenzukönnen,müssendieMessagesvomgetXML-undgetXSL-Beansmiteinandersynchronisiertwerdenundgemeinsamanein XSLT-Beanverschicktwerden.Dasist abernicht trivial, weil von jedemMDB beliebigviele InstanzenexistierenunddieseauchnochübermehrereRechnerverteilt seinkönnen.Man bräuchteeineArt Singleton,mit demsichergestelltwerdenkann,dassbeideMessagesvon dersel-benInstanzempfangenwerden.EinSingletonwäreabereinegravierendeEinschränkungindie ParallelisierungundVerteilbarkeit derServerkomponentenundwidersprichtauchvöl-lig demKonzeptderEnterpriseJava Beans.Rein technischgesehen,gäbeesschonMög-lichkeitendieszurealisieren.ZumBeispielmit nureinfachvorhandenenBeans,speziellen

Page 20: Modellierungund Implementierung eines Message Flows in ...dret.net/netdret/docs/da-ss2001-meyer.pdfUnter den Begriffen Open Hypermedia System und Topic Maps ist man daran, das schon

20 Iteration 2

RequestHandler XSLT

getXML getXSL

... ...

EJB-Container

Abbildung3.2:StylesheetProcessor2

RequestHandler getXML getXSL XSLT... ...

EJB-Container

Abbildung3.3:StylesheetProcessor3

Entity-Beansoder mit statischenDatenstrukturen.Die Abbildung 3.4 zeigt einenKom-mentarauseinerFAQ [19], welcherdie Problematikvon Singletonsverdeutlicht.WeitereinteressanteRessourcendazugibt esunter[20].

AuchderStylesheetProcessor2 hatMängelwasdieParallelisierungbetrifft. Hier wirdeinfacheinesynchroneKommunikationdurchdie JMS-Messagesemuliert.Aber auchdasist nichtohneweiteresprogrammierbar, weil mehrfacherEmpfangvonMessagesin MDBsnicht unterstütztwird.

Dir dritteVarianteist vomMessagingherdieeinfachste,dajedesBeannureineMessa-geempfängtundauchnureineweitersendet.Soist esvöllig egal,welcheInstanzeineMes-sageempfängtundaufwelchemRechnersielebt.Die einzigeSchwierigkeit bestehtdarin,dassdasXSLT-BeanauchaufdieAusgabedesgetXML-Beansangewiesenist, dessenOut-put abernur andasgetXSL-Beangeschicktwird. Esmussalsosichergestelltwerden,dassauchaufweiterzurückliegendeResultatezugegriffenwerdenkann.

Nach langemÜberlegenhabeich mich für die dritte Varianteentschieden.Die ersteVariantewärezwar die flexibelste,liessesichabernur durchsehrunschöneProgrammier-tricks implementieren.Die lineareAnordnungder Abbildung 3.3 passtam bestenin dasKonzeptderEJBs.

3.3 Stack

3.3.1 Datenstack

Damit in einer linearenaneinanderReihungvon MDBs nochgenügendFlexibilität vor-handenist, um auchkomplexereAufgabenimplementierenzumkönnen,braucheich eineMöglichkeit auf die Datenaller Vorgänger-Beanszuzugreifen.Dazuhabeich denDaten-stackeingeführt.Die AusgabeeinesBeans,dieeinProgrammiereranderenBeanszur Ver-fügung stellenmöchte,wird durch dasFramework automatischin XML formuliert undzuoberstauf einenStackgelegt. DieserStackwird immeralsTeil derJMS-Messagewei-ter geschickt.Es wird auchein API angeboten,um die einzelnenDatenelementewieder

Page 21: Modellierungund Implementierung eines Message Flows in ...dret.net/netdret/docs/da-ss2001-meyer.pdfUnter den Begriffen Open Hypermedia System und Topic Maps ist man daran, das schon

3.4MessageFrame 21

What should I do if I need a singleton?

Say you want a stateful, shared, server-side object--that is, a singleton. EJB does not provide thisdesign pattern explicitly. You could use an entity bean, but these are really intended to be storedin either a database or some (other) legacy backend. Writing a stand-alone entity bean (whichprovides full transactional semantics, as entities should) is overkill for a simple singleton. Or, youcould use a stateful session bean, but these are intended to be single-user. (In reality, it is notpossible for a container to enforce this rule and, thus, it could be ignored, but again we findourselves doing something quite unnatural in EJB.)

So we reach the inevitable conclusion that EJB provides a useful set of server-side design patterns,but does not provide ALL the useful patterns. Developers will find that jumping out of EJB(presumably into CORBA) will be useful in a number of cases. And, of course, our product makesthis transition painless, in that it preserves the transactional semantics, and security, when crossingthe EJB-CORBA boundary. This preservation of distributed-system semantics is not easily doable(and is not being done by competitors’ products) if the EJB container is not built on top of IIOP(for example, CORBA).

Abbildung3.4:KommentarüberSingletonsin EJBs

auszulesen.

3.3.2 Kommandostack

Die Wegbeschreibungdurchdie einzelnenMDBs wird nicht mehr, wie in dererstenItera-tion, ausdenRouting-Filegelesenundin jederInstanzneuausgewertet.NeustehtjetztdieRoutein einerEnvironmentVariable. DieseVariablewird im Deployment-FiledesControl-ler gesetzt.Dadurchwerdendie in einemverteiltenSystemproblematischenDateizugriffeeliminiert. Der Controller wertet die Angabendarin ausund erzeugteinenKommando-stack.Der Kommandostackwird wie der Datenstack,in XML-Form der Messageange-hängt.SokannderRoutingalgorithmuseinfachdasobersteElementvon Stackziehenundfindetdarindie Information,wohindieMessageweitergeschicktwerdensoll.

DieserKommandostackbietet noch die sehr interessanteFunktion desConditionalRouting. Da in vielenAnwendungenerstklar wird wohin die Routeführensoll, wennderempfangeneRequestgeparstwordenist, ist esoft wünschenswert,denAbarbeitungspfaddynamischzu setzten.Dasist nunsehreinfachmöglich,indemnunjedemBeaneineAPI-Methodezur Verfügungsteht,die neueKommandosauf denStacklegt. Ein KommandoentsprichteinfachdemRoutingnamendesBeans,dasaufgerufenwerdensoll. ZusätzlichkanneineReihevon Attributenin Formvon Stringsangehängtwerden,diezur Konfigura-tion desArbeitsschrittesverwendetwerdenkönnen,wie manausUnix Shell-Kommandoskennt.Der ProgrammierereinesneuenBeansder neueKommandoshinzufügenmöchte,musssicheinesBewusstsein.Da neueKommandosimmerzuoberstauf denKommando-stackgelegt werden,ist die tatsächlicheAbarbeitunggenauin umgekehrterReihenfolge,alssieim Programmcodeaufgeführtsind.

3.4 MessageFrame

In allenMessagesdie unterdenXlinkbaseBeansausgetauschtwerden,mussein MessageFrameenthaltensein.Die Abbildung3.5zeigteinBeispieldavon.

DasFramewird vomControlleraufgebaut,fallsnochkeinesin derMessagevorhandenist,wobeiderRequest-StringeinfachalseinerstesDatenelementaufdenDatenstackgelegtwird. EbensoentferntderControlleramEndederAbarbeitungdasFrameausderMessageundgibt dasResultatderAnfrageandenClient zurück.Dabeiwird nuneinfachverlangt,dassdieResponsezuoberstauf demStackundin dergeforderterFormatierungvorliegt.

Page 22: Modellierungund Implementierung eines Message Flows in ...dret.net/netdret/docs/da-ss2001-meyer.pdfUnter den Begriffen Open Hypermedia System und Topic Maps ist man daran, das schon

22 Iteration 2

<message><commands>

<Logger/><RequestHandler/><Controller/><Kicker/>

</commands><stack>

<data>request=linux

</data></stack>

</message>

Abbildung3.5:MessageFrame,Iteration2

3.5 MessageProperties

Die MessagePropertiesspielenin dieserVersiondesXlinkbaseServersnichtmehreinesogrosseRolle.Esgibt jetzt nurnochdrei davon.

RequestId: Ist nachwievor wichtig, damitderClientdieResponsezueinergestelltenAn-fragezuordnenkann,wird abervom Serverselbernicht verwendet.

Sender: DerNamedesSenders,bzw. derQueuediemit diesemassoziiertist.

JMSReplyTo: Dies ist strenggenommenkeine Property. Hiermit kann aberdie Queueangegebenwerden,wohin die Responseoderauchallfällige Exceptionsgeschicktwerdensollen.

3.6 Erk enntnisseausder Iteration 2

Mit dieserzweitenIterationist dieProgrammierungvonverteiltenWebapplikationennocheinfachergeworden.In diesemFramework fehlt wirklich nur noch die BusinessLogic,allesanderewird von derSuperklasseabgenommen.DasAPI ist sehrschmal,sollteaberausreichendseinfür alleAnwendungen,für dieeinsolchesSystemauchsinnvoll ist.EinigeDetailverbesserungensindaberschonnochangebracht.Sowürdeich eszumBeispielnochnützlichfinden,wennähnlichwie bei denKommandosauchdie DatenelementeAttributehätten,sodasssiefür dieNachfolger-Beanseinfacheridentifizierbarsind.

Beim Test dieserVersionder RoutedMessage Driven Beanshat sich herausgestellt,dassdie Kommando-Attribute nicht richtig funktionieren.Die Behebung diesesFehlersverschiebeich jedochin dienächsteIteration,weil danochweitereÄnderungenandiesemTeil derBeansvorgesehensind.

Page 23: Modellierungund Implementierung eines Message Flows in ...dret.net/netdret/docs/da-ss2001-meyer.pdfUnter den Begriffen Open Hypermedia System und Topic Maps ist man daran, das schon

Kapitel 4

Iteration 3

4.1 UseCase

Für die dritte und letzteIterationhabeich nur wenigeÄnderungenvorgesehen.Der An-wendungsfall bleibt derselbewie in derVersionzuvor, dochstehennochein paarDetail-verbesserungenan.

Es ist der Wunschaufgekommen,dassdie abgearbeitetenKommandosnicht einfachausdemStackgelöschtwerden,sondernin derStrukturverbleibenundim nachhineinein-gesehenund ausgewertetwerdenkönnen.Ein zusätzlichesBean,genanntMonitor, kannam Endeder Routeeingefügtwerden,welchesdieseDatenausliestund dannzum Bei-spielentscheidetob dieAbarbeitungkorrektundvollständigerfolgt ist unddanneventuellweitereMassnahmenauslöst.

Die zweitewichtigeErgänzungbetrifft die Datenelementeauf demDatenstack.Diesesollenvon denMDBs besseridentifiziertwerdenkönnen.

4.2 History

Um denvollständigenWeg durchdieRMDBsamSchlussderVerarbeitunguntersuchenzukönnen,habeich amMessageFrameeinpaarErweiterungenvorgenommen.Ein neuerAstin der XML-Messagemit demNamenhistory nimmt jetzt die ausgeführtenKommandosauf. Für dasKommando,welchesgeradevon einemBeanabgearbeitetwird, gibt esjetztaucheineneigenenPlatzim XML-Baum. Dieseswird unterdemTag current angehängt.Mit dieserÄnderungwurdeauchgeradederBugmit denKommando-Attributen,derin derIteration2 nochvorhandenwar, behoben.Im schematisiertenXML-Baum in Abbildung4.1wird verdeutlicht,wie die Kommando-Elementeim DOM-Treeumgehängtwerden.

DieseHistory wird abernicht unbedingtin jedemServer benötigtund kann darumauf Wunschauchabgeschaltetwerden.Dazu mussim DocumentElement, also im Tagmessage, ein Attribut mit der Bezeichnunghistory angebrachtwerdenund dessenWertauf no stattauf yessetzen.DieserSchrittwird vom ControllerBeanerledigtundkannimDeploymentfileejb-jar.xmlüberdieEnvironmentVariablehistorymit denStringwertenyesoderno gesteuertwerden.

4.3 Data ID

NeuwerdenallenDatenelementenauf demStackeineIdentifikationsnummerzugeordnet.DasbieteteineeinfachereMöglichkeit diesezuidentifizieren.BeimHinzufügeneinesEin-tragsauf denStackwird eineneueID berechnetunddemBenutzerzurückgeliefert.Diese

Page 24: Modellierungund Implementierung eines Message Flows in ...dret.net/netdret/docs/da-ss2001-meyer.pdfUnter den Begriffen Open Hypermedia System und Topic Maps ist man daran, das schon

24 Iteration 3

message

commands current history stack

Abbildung4.1:History Mechanismus

ID könntedanneinemneuenKommandoals Attribut mitgegebenwerden,um demBe-an mitzuteilen,auf welchemDatensatzeszu arbeitenhat.Entsprechendgibt eseineAPIMethode,die für eineID dasentsprechendeDatenelementvomStackzurückgibt.

DieDatenID wird auchim Current-KommandoalsEintragim Attribut idrefsvermerkt;falls ein RMDB mehrereDatenelementeauf denStacklegt, entsprechendals Liste durchLeerzeichengetrennt.WenndasabgearbeiteteKommandospäterin dieHistoryverschobenwird, kannsomitauchfestgestelltwerden,welchesBeanwelcheDatenproduzierthat.

4.4 MessageFrame

Mit denneustenErgänzungensiehtein typischesMessageFrameetwa wie in Abbildung4.2aus.

4.5 Erk enntnisseausder Iteration 3

DurchdieDatenIDs,zusammenmit denjetztgutfunktionierendenKommando-Attributen,istderDatenstackjetzteinigesdurchsichtigergeworden.StattsichimmernuraufdasStack-prinzip verlassenzu müssen,könnenjetzt Argumenteexplizit adressiertwerden.Damitwird die Programmierungvon RMDBs intuitiver undeineQuellefür Fehlerkannsoaus-geschlossenwerden.

Die History verschafft demAdministratorein Werkzeugzur Kontrolle desMessage-Routingin seinenBeans.Dasgibt ihm mehrÜberblickundeineMöglichkeit zumDebug-genseinerAnwendung.

Abschliessendmeineich, dassdiesesFramework einegewisseReife erlangthat, umin Webservern eingesetztzu werden.Der Anwendungsbereichgeht dabeiweit über dieGenerierungvon Webseitenhinaus.Vielmehrist eseineBasisfür die Erstellungallgemei-nerApplikationen,dieüberdasInterneteinerbreitenÖffentlichkeit zurVerfügunggestelltwerdenkann.

Page 25: Modellierungund Implementierung eines Message Flows in ...dret.net/netdret/docs/da-ss2001-meyer.pdfUnter den Begriffen Open Hypermedia System und Topic Maps ist man daran, das schon

4.5Erk enntnisseausder Iteration 3 25

<message history="yes"><commands>

<Controller/><Kicker/>

</commands><current>

<Monitor/></current><history>

<Controller idrefs="0"/><Logger/><RequestHandler idrefs="1"><attribute>

request=0</attribute>

</RequestHandler></history><stack>

<data id="1">// Daten ausgelassen

</data><data id="0">request=linux

</data></stack>

</message>

Abbildung4.2:MessageFrame,Iteration3

Page 26: Modellierungund Implementierung eines Message Flows in ...dret.net/netdret/docs/da-ss2001-meyer.pdfUnter den Begriffen Open Hypermedia System und Topic Maps ist man daran, das schon

26 Iteration 3

Page 27: Modellierungund Implementierung eines Message Flows in ...dret.net/netdret/docs/da-ss2001-meyer.pdfUnter den Begriffen Open Hypermedia System und Topic Maps ist man daran, das schon

Routed Message Driven Beans:A new Abstraction for using EJBs

Erik Wilde and Manfred MeyerComputer Engineering and Networks Laboratory

Swiss Federal Institute of Technology, Zurich

ABSTRACT����������� ���� �� ������� ���������� �������� ���������� ������ �� �� ���� �� ��� ���������� ��� ��������� �������� ���� ������������ �� ���� ���� ����������� ��� ������������ ����� ���� ����� � �������� ����� ��� �� �� !"#� �� �������� � ��� �� ��� ������ ���������� �� ��� ���� ��$ ����� �� ���� ��� �� ����� ���� � ���� � � ���� ���� �� ��������� ���������� � ���� ���� ���� ������ ������������ ����� �����$��� ��� ��� ��� ������ ���� ��� �������� ��� %!"#� ���&'( ��� ���� � ����� ���� �� ��� ��� ��� ����� �����������$ ��� &�( ��� �)* ����� ��� �� ��� �� ��� ����� ������ ������� � �� ��� ����������� �������� �� %!"#�� )���������� ��������� ���� ���� ��� �������� ����� ���� %!"# �������� �� ���������� �� ���� �� ��� ��������� � ������� ��#��

1. MOTIVATION)�� ���� ��������� ��� ��� �� ��� ��� �� ����������� ������$ ������$ ��� ��� ��������$ ��� ��� ������� ��� �� �� ������ ������ �������� ���� ���� �+������� *� ������� ', �����$ ��� ����� ��� ��� ���� -'./ 0 ����� ��������� ������������ ���� �� ��� �� ��� �������� ��������� �� �� 0 ��� ��������� �� ���� ��� ���� �� �������� ������������$ �� ��������� �� ���1����� ��� �������� ����� ��������$ ������������������ ���� ��� ������������������� ����$ �� ����� �������� �������� �� ��� ��*�������������2� �������� ���� 3��$ ��� ���� ������������ ��� ���������� ������������ ���� ����� 1��� ��������*� ��� �����+� �� � ��������� �������� �����$ �� ������������� ��� ������ ������������ ���� ����� ������������ ��� ������������� ����� ���� �� ������� ���������� ��� ����� ����$ ����� �� � ���������� �������� � � ��� ���� �� %!"#�� 3���� %!"#� ��� ���������� �� ��� ��������� �� ��� ���� � �� ���������� ��������� ���������� *� ��� �������� ��������$ �� ����4� ��������� ��� ������ �������� �� �� �����

Permission to make digital or hard copies of all or part of this work forpersonal or classroom use is granted without fee provided that copies arenot made or distributed for profit or commercial advantage and that copiesbear this notice and the full citation on the first page. To copy otherwise, torepublish, to post on servers or to redistribute to lists, requires prior specificpermission and/or a fee.Copyright 2001 ACM X-XXXXX-XX-X/XX/XX ... 55.00.

1.1 Web Servers �� ������ ������������ ���� ��� � ��� ��� ��� ���2��� �� ������ &��������� �� '67686, -'/( �� ��� ������+ ���� ����� ������ ������������ �� ������ 3�� 2��� �������� ����� ����� ��� ��1����� 9%* ���� �� � 2�� ���������$ ��� ���� ������� ��� 2���� ������� �� ��� ��������� ���� ��� ����������� ������� ������� �� ���������� �������$ ��� ������� � !����"�� #����$�� �!!#� -./$��������� ����� ����� ��� ��� ��� ���� �� ��� ', ����� � �&������� ���� � ��1��� ���� � 9%* ���� ��� �� ���� � ��������� ��������� � �����($ ��� ������������ �� ��� ���������� ���� ������� �� ��2������� 3���� ����� ���������������� ��� �� ������2��:

� %���� ���$���

����� ���������� ��� ������� ������2��� ������ �����������$ ��� �� �������� �� � 2���� ������� �� �������� ����� ���2������ ���� �� � 2��� 3���� �������� ������� ���� �� ��$ �� ���� ���� ������ �� ����� �������������� �+������ ��� �������� ������������ ���� �+������� ��� �������� ��� �� �������� ����������$ ������������ �������� ������� ��� ������ ���������

� %$����� ���������

�������� ��� � �� ��� ����� ���� ������ �����$ ������ ������ ��� ��� �������� );)�$ ���� ��� %����#���� �%#�$ ��� !���������� &$�� %���� #���� &%#���������� ��� � �� ��� ������� ���� �� �� ��$ ������ �� ������ ����� ��� �� �� � ��� �������� ��������������� ��� �������� ��� � �� ��� � ���� ���������� �� ���� ���������� �������� ���������� ���������� ��������

�������� ��� � �� ��� �� ��� �� ���<������ ��������� �������� ���$ � ���� ������ �+���� ���� ���'&�# &=��+$ ������$ !��>=$ );)( ��������������� -'?/$ ����� ���� �� �������� �� ������ ������ ����������� ��������� ��� ������ );)�� �������� ������������ ;������$ ��� ������������ ��� �� ��� �������� ��� � �� ��� ������ �� ��� ����� �� ��� �������� ���� � � �������

� #��������� ����������

@������ ��� ���� ����������� ��� �� ����������� ���� ������ � �������� ��� � � ��� ������� ���������� �������� ���������� ���� ������ �������$�� ���� �� ������ ��� ���� �������� ��� ������

���� ������������������

Page 28: Modellierungund Implementierung eines Message Flows in ...dret.net/netdret/docs/da-ss2001-meyer.pdfUnter den Begriffen Open Hypermedia System und Topic Maps ist man daran, das schon

�������� ������������� 3���� ����������� ��� ���������� ��� �����+ ���� ��� ������ ����� ��������� ��� � ��$ �� ���� ��� ������ ��������� �� ������� �� �� ��� ����� ���� �� �����+ ���������������������

��� �������� ����� �� ��� ���� ����������� ��� ������������ ������� ����� �� ���� ��� � ��������� ����� ����� -''/$ ����� �� � ������� ����� �� � ���� ���������������� ��� � ���� �� ���������� ��������� ���� ����� ��� ���� ��� ���� ���������� ��� ���������� ������������� &!���������� �A�3 ������� �� � ���������� ����������($ �� ���� ��B��� �� ������������� &������� �������� ���� �������� �����������( �� �� ��� ��� ������ ���������� �������� �� � �����2������ ��� �� !���������� -'�/$ �������� � ��� � ���� �� �������� ���$ ��� ������� � ��������� ���������� �� ��� ��� ����� ��������$ ����������� �����$��� ����� ��� �������� ������������$��� %���� #���� �%#� �� ��� �������� �������� ��� ���� ��$ ��� ��# �� ��� �������� �������� ����� *� ��������� ������� �� ���� &������� '�C($ ��� ��� ������� %���$� ��%� -D/ ��� ��� ��� !�����$��� &#� �!&� -C/ �������� ����� �� ������ ������ ��# ����������� E���������$ ��� �������� ����������� ���� ���� ��� �� ��������������:

� � ��� ���� �� ���������� ����$ ��� ���������������� ����$ ������� ��� ����������� ����������� ���� ���

� !���� � ����� ��� �������� ��� ����������� �� �3�������������$ ��� ���� �� �������� �� ������ �!������� ����������� ���� �� ���� ��� ������������������� �������� �� �3��

*� ��� ����������� ��������� �������� ������� �������� ��������$ ����������� ���� �� ��� �� � ���� �������� ������������ *� �� ����������� ��������$ �� ���� ���� � �������� �� 9%* ���������� ��� ������� �������������������� ���$ ��� �� ��� ��������� � ������ ���� ������ �� �� ���� ���� �� � ������� �� ����$ �F�������� ���������� � ��������B�� �������� ��� ������ ����������&����� ���� �������� �� �� � �������� -?/(�

1.2 XLinkbase3�� G=������� ����� �� ����� �� ��� ����������� ������ �� ��� ��� ���� �� ���������� ��������� �� ��� ������� ����� ����� �� ������� �� �� �� �� � ����� �� ���$�� ��� ���� �� ������������� ������� ��������� ������������������� G=������� �� ����� �� ��� ���� �� �� (��� ���������� %����� (�%� -6/$ ��� ��� ���� ���� �� ������ ��3���� !��� -7$',/� *� ��� �����+� �� ���� �����$ ��� ����������� ������ �� G=������� �� ���� ��� ������ �������������� ���� �� ��� �� ��� ���� ������� ��� �!�� E�� � ����������� ��������� �� ��� ����� ��� �������� ������ G=��������$ ������ ����� �� � ����� �� =��� ��� ���� -'H/�#��������$ ��1���� �� ��� G=������� ������ �� �� �������� ;33) �� � �� ������$ �� ��� ����� ������������ ����� ��# �)*� 3�� ��1��� �� ���� ������� �� � ������������#$ ����� ������ ����� ���������� ��� ��� ��1������ ���� ����� �� �� � ���� � ��� ��� %!"# ��������3�� ����� ���������� �����2�� ����� ��#&�( ����� �������� ��� ���� �$ ��� ��� %!"# �������� ���� ��� ������ ����������� ��� ��� G=�������������2� ��# �����

���� ��� �� ������������ �����������$ ��� %!"# ��������� �� ��� �� ��� G=������� ������ �� ������� ���� ������ ��� ��� ��#� ������ ��� G=������� ������� 3������#� �� ������� �������������� ��� �� G�=3 ���������������$ �� �� $ ������� ������$ ������ �� ���� ����� � ���G=������� ���� &��� �� ������ ��� �"#@($ �� ��� ����������������� ���� � �� �� ���� ������ ��� G=�������������� G=������� �� ���� ��� �� � ������ ������� ��� ���������� ���������$ ��� �� ��� ������ �� �+������ �� ���������� ��� ������������ �� %!"# ���������$ �������� ���� �� ��� �� ������� ��1������ ������� �+���� �� �� G=������� ��1��� �� ��� �������� ��������: 3�� G=������� �� ������ �������� � ��1��� ����������� �� �� ��� ���������� ��#� 3�� ���������� ������ ���������� ����$ ��������� �� ��� ���� �� %!"#�$ ����+���� � �� �� ��������$ � ������� �����$ � �������������� �������� ��������� ����$ �� G�=3 ��������������������� ��������� ��� G=������� ���� �� ;3!=$ ���������� �� �� ��������$ ������ ��� ���������� 2����� ������� ��� ����� �� ��� ��1��� ��������� ��� ����� �� �� ��������� ��� ��� �� ������� ��� ��� ��������� ��� %!"#�$��� ���� �� ��� %!"# �������� �� ������������� ������� ���� � ������� ��� ���������� *� �� ��� ��� ������������ ���� ���� �� &��� �+���� ������ ��� ���������������� ��<���� ��� ��1��� ��� ����� �� ������� ��($��� %!"# ����� ���������� ��� �� ���� �� ��� ��� �)*�� ��4��� ��� ��� ��������� ����� *� ������$ ��� ������������ ������� ��� ����������� ������������ ��� ��� %!"#�������� �� ������� ��� ��� %!"# �)*�

2. RELATED WORK �������� ����������� ��������� ��� ���� ������ ������$ ��� ���� ��� � ��� ������ ���� �������� ����� �������� ����� ��� ���� ����������� ��� �� ����� ����� ��� ����� ���������� �� �� G!= �������� ��� ��� ������ � �������� �������� �� �������� ��$���� ���<���$ ������� ���� �� �������� �� �������� ��� ��� �� "�!$ G!=$��� G�=&3(� ;������$ @����� ���� ��� ������ ������������������� ��� ���� �������� $ ��� ������ �� ������ �� ������ �� ������ ����$ �� ������� �� ��� �� ������ ���� ������$ ��� ��� � #���"��� ��������� �����

����� ������� ���������� ��������� ��� ���� �������� $��� &������� ���� ������� '�C( ���� ������� ���� � ������� ������� ���������� E��������$ ���� �� � �����2������� &��� ��� � ������($ ��� ��������� �������� ���� ����� �� �� �� ��� ���������� �� ��� �������� �������� ������� � ��� ���� ������� ��� �������� ������� &����#�� ������� ���'��$ ��� *#!�� ���%�)��� ������������ ��� ����� �������($ ����� ��� ���� ���� ����� ����������������� ��� �� �#���� ����� �������� � ������� ��� ���� ����������$ ����� �� ����������� ��� ������ ����� �� ����$ ��� ����� �������� ��� ��� ������� ���� ����������� �� ��� �� ��� �� ������ ��� �� !����������$ ����� �� ��� ���� �����2�������$ ��� ���� ��B�� ���� ��� ��� �F��� ��� ��������� ��������������$ ����� ��������� ��� ���� � �������� -H/ ��� ��� ��#�� �� ��� ��� �� ������ $ ��� ��� �� ��������� ����������� 1��� ����$ ��� �� ��� �� �������� �� ��� ������������� ��� ������� ��� �� ������� ������ �������� ��� ����$

���� ���������� � ������������������ ������������������������� �������� � ����������������������

Page 29: Modellierungund Implementierung eines Message Flows in ...dret.net/netdret/docs/da-ss2001-meyer.pdfUnter den Begriffen Open Hypermedia System und Topic Maps ist man daran, das schon

KickerServlet

JMSQueue

HTTPPort

EJB−Container

Request−HandlerRMDB

LoggerRMDB

ControllerRMDB

Web

Clie

nts

������ �� ��� ��� ������

����� �� �� ������ ��� ������ ����������� ��������������������� ���� �� �� �������� �� ��� �������������$ �� ��� ������� �� ����� &��� �����( ����� ���� ���� ���� �� ���������$ ��� �� ���� ��� ���� ����������� �� ���� �� ��� ������ ���� � ����� ���������$ �� ��������� � �� ��� ��������� �� � ������ �������� �� ������� ��������

3. THE CONCEPT*� � ���� ����� ����$ �� G=������� ������ ���� �� ����������� �� �� E� �� '� � ������� �� ��� � �� ������� ��������1���� ��� �������� �� ����� *������� ������������� 3���������� ���� ����� �F ��� %!"# ������� �� ������ ��!� ���� � �� ��� @��������� �� ��� ��# ���������� 3��I����� ������� �� ���� ��� ��� �!� >�� �� �� ���� ��������� ��� �������� �� ����� �� ���� �� ���� �� ��� �������%!"#� ��� ����� �� ��� ������������ ����� �������� �� ��� ��� ��������� ��� ����� ���� ��, ������2������� !"#� ��� � ���� ����� ���� �� ��#�� 3��� ����+�������� ��������� ���� � ��� �!� 1�� �� ����� ������� �������� �� ������ ��� 3���� �� �� ��� ��� �� ������������� ��� ���� ��� �� ����� �� ��� ��� �� ����� 2�� ������� ��������� ��� �����������=��� ��� !"#$ � %!"# ������ �� ���� ���� � ���� �������� �� ��� �!� 1��� *� ��� !"# ����$ ��+� �� �����% *����� ����� ���� �+��� ��% ���$� ����� ��� �� ��������� �� ���� � ���� � �� ��� ����������� ;������$ ���%!"#� ����� �!� ������ ��� ��� ��������$ ������ ������� � ���� �� ��� ������� �� ����� �������� �� ��� ���������� ����$ �� ����� ��� ���� �� ��� ���� � ��� ��1����� ��� ������� ��� ���������� �� ���� ��� �!� ��+����� ��$ ������ ���� ��� ����� � ������� �� ���� ������$����� ������� ��� %!"#� �� ���� ��� ������� G!= ����� ��3�� ���� � �� �� G!= ������ ��������� ��� ��� ����������� ���� ���� ��� %!"# �� ������� �� ��:

� 3�� ����� ��� ��� ���������

� 3�� ���� �� �������

� 3�� ���� �� ��� ��+� %!"#�

3�� ���� � ����� ��� ��� �������� ��� ��������� �������� �� ������� ?�'� #����� ��� ����������� �� �� �� ���%!"# ��� ������ �� ��� ���� �� ��� ���� �$ ��� %!"#���� � &����� �� �� G!= ������( �� �� ������� �������������� ��$ � ��� ���� � �� �� ������� ��� �������B��

�*#!�� �*%���� ��� !���������� �%�* �������� ����������� ��� ��� ������ �������� ���� �� ���������

App

licat

ion−

Logi

c

Pro

log

Epi

log

AP

I

AP

I XMLMessage

XMLMessage

Routed Message Driven Bean

������ �� ���� ���������

message

commands current history stack

������ �� ���� ������� ���������

�� � ������$ �� ����� �� ���� �� �� ��� ��+� %!"#� E� �� ������ ��� �������� ���� � 4�� ���� � ��� %!"#�3�� ������ �� ���� �� ��� %!"#�� ����� $ ����� ��� ����������$ ����� $ ��� ������ �� ��� ��� ���� � �� ������ ��� ����� ������ 3��� �������� �� ��������� ��� �����%!"#$ ��� �����1����� ��� ���� ��� ���� ���� ��� �� ������������ �� � �������� �� �� ������������� ��������� ����� �� ����� ��� ��� ��� �� �� %!"#�� �+������� @������� � ��� %!"# ��� ���� �������� �� ���� ������ ����������� ��� ����������� �� ��� 3�� ������ �� ��� G!=���� �� �������� �� �� �)* ��� �������� ���� ��� �� ������� ��� ���� � �� ���� �� ����� ��� ������ �� ��� ������� ���� ���� ���� �� ����� %!"#��

4. IMPLEMENTATION3�� ��� ������� �������� �� ���� ������� ��� ��� ������ �� ��� G!= ���� �$ ��� ��� ����� ������� ��� ��������� ��� ����� ��� ���� ������� ��������� 3������� G!= ���� � �� ����� ������� ��� ��� %!"# ���� ����$ ����� ������ �� �� �� �+�������� �������� ���� ��� �)*� #����� �� ��� ������������� ���� � �� ��� ���� ������$ %!"#� ��� �� ���� ��������� ��� ��� ��������� ������ �� ��� �� ������ ���������B�� ��� �����������3�� ����� ������� ��������� �� ������� ?�� ��� ���� ��������� �� ���� �������� ���� ��� ��� ��������� ��� ������� ������ ��� %!"#� ��� �� ������� � ���� �� ������ ���%!"#�� ����������� �� �� ���� ��� ��������� 3�� ������������� �������� �� ���� �� � ������ ��� ��� �����$ ��������� ������������ �� ��� ������ �� ��� ��� ����$ ��� �������� ����� �������� �����������

4.1 RMDB Message Format3�� G!= ������� �� ���� �� �+���� �� �� %!"#��� ����� �� E� �� C� *� �������� ��� ������ ��������� � ���� ��� ����� �������� 3�� ���� � "3" ��

Page 30: Modellierungund Implementierung eines Message Flows in ...dret.net/netdret/docs/da-ss2001-meyer.pdfUnter den Begriffen Open Hypermedia System und Topic Maps ist man daran, das schon

��������� ��� ��������������������������� ���������� ���

������ � � �� � � ���������� ������� ���!" � ���������� ������ ���! � ���������� ������ ���!" � ���������� ���� ����" � ���������� ���! ���" � ���������� ���!

��� #$��� %&�'(�&�$���� �$&�)� %��*���$ �

��������� ��� ��+ ���������� ���

��� #$��� %&�'(�&�$ ���������� ���� ��+ ���������� ����

�� �$ %��*���$ �

������ �� ���� ������� ���

������ �� E� �� ?$ ��� ��� ������ �������� ����� ����������� ���� ��� �������� ��������:

��������� � ���� �� ��� �������� %!"#� ����� ��� ��������� �� ������ ������� ��� ��1���� 3��� ��� �� ��������� ����� �!� 1�� ���$ ��� �� ������� ������� ��� ���� &������� �� �� �������( �� �����B� ������������� �� ���� ��� �� ����� ���� ����� ������� �� ��������� 3�� ���� �� ������ ��� �� �� ����� �� � �����$����� ��� ������ ����� �� ������ ��+� �� ���������� ���� �� A���� ����� ������ ��� ����� ����� ��� �� ��� ����� �+��������� 3��� ������ ���� ������� � 2����� ������ �� ��� ������ ��� ���� ��� ������ �� ��� %!"#� �� ��� ����� ������ ����� ��$ ������ � �� ���� �� ���� �� ������ ���������� �� ������� ������ E�� ��� ���� �� �� ������������ ����� �������� �� �� %!"# �� ���� ����� ��������� �� ����������� ������$ ��� �)* ������� ���������� �����������$ ����� ��������� ��� ����� ��� ������ ������� ���� � �� ��� �������

�������� 3�� ������ �����$ ����������� ��� %!"#����� �� ���� �� ������� ��� ���� �� � �� �� ��������� �� ��� G!= ���� �� ������ ��� �������� �������� ������ ��� 3��� ���� �� ���� ��� �� ������� ��$ �� ��� ���������� �� ������� �������� ��������� �������� "��� ��� %!"#�� ����� �����$ <�������� ��� ���� � �� ���� �� ��� ��+� %!"#$ ��� ������� ����� �� �+���� ��� 3�� 2��� ������ �� ������� ��� ����� �� ���� ����$ ����� ��� �������� ����� �������� �� ��� ��������

�����!� 3��� ������ �������� � ���� �� ��� ���������� ���������� ������� � ��������� ���� �� ���� ��� �� � �� �� ��� �� ������� �� ���� �� ��� ��������� ������ �� ��� ���� �����$ ������� �� ����� %!"# ����� ���� �������� *� �� ����������� ��������� ������� ������ �� ������ ��� �������$ ��� G!= �������������������� ��� �� ��� �� ��� ������ ������ ����� ���� � �� ������� ��� %!"# ������� �������$�� ����� ���� �+����� ������ ���� �� ���������������� �� ���� ����� �� ��� ��������

������ 3��� �� � ���� ����� ����� ��� ��� ���������� ����������� ��������� � ��1��� ��� �� ������� *�� �������

���� � ������������������ ��������� � ��� ���������������� � ���!��"����

������ ����

������������� � ���#���������

����������������������� � ��� ��������� � � ���$�������� � ���%�������

����� � ���&'���( ����� � � ���)��� �� � ���������'����$�� ���

�������������������� �"��� � �����)��

�*++ ,#% � � ������ -�� ������ ++���� � ��� � �����$���'����������� � �

���� �"������ ��

������ "� #� �$��%&� �������

��� �� �� ���� ������ �� �� ����������� �����+ G!=��������� E�� ���������$ ���� ��� �� ��������� ���������� ���� � ��� �������� �� ��� �����$ �� �+���������� ����� *"� 3�� *" �� ����������� �������� �� ����������� �� � ��1� �����$ ��� ������� �� �������������� �� �� ��� ����� ����������

3�� ������� G!= "3" �� %!"# ���� �� �� ����� ��E� �� .� ����� �� ���� ���� ���� �� ��� ���� ���������� ������ �� ��� %!"# �������� ������$ �� ���������� ��� �������� ��� ���� �� &��$ ��� ������� �� �� %!"#$��� ���� � �� ���� ������� ��� �������������($ �� ���� ��������� ���� �� ���� �� ������ ���� �������� �� ������������ ��� G!= �������

4.2 The Class Structure%� ��� ���� !"#� �� ��� ������� ��� ���� ��� ������������ ��� ��� ������ ������������ �� ��������� ��� ������������ ;������$ ��� ��# �����2������ ��, �+�������� �������� �� ��������� ��� !"#�� 3��� ���� � ��� ����������� ������� �� ��� %!"# �����$ ������� ��� ����� ��� ����� ����$ ��� �)* �� ������ ��� ���� �$ ��� � ���� ��� ����� ���������� �� ��� ����������� �� ��� 3�� &#./ ����� ����������� ��������� ������ �� ��� ���������� #�� �.����/ ���� #�� �%����� �� ��2�� ��� ��1������� ��� �� �����# ��������� &��� E� �� H(�3�� &#./ ����� ���� �������� ��� �������� ����� ������+

#�� �$ ����� ��� �� �� ���������� �� � �������$ �������� ���� �� ������ �� �+���� ��� ����� ����������� �� �� ����� %!"#� 3��� �� ��� ���� ��� ���� ���� � ������������ �� �� �� �������� � ��� %!"#� 3�� �+���� �������%���� ��� &'���( ���� ����� �� E� �� H ������������� ��������� �� %!"#��3�� �������� ����� �� � ������� ����� �� ����� ��� ��������� �� ���� ���� �� �� ������� �� ����� %!"# ������*������ � ������ ��������� �� ������� ��� G!= ���� ����������� ��� *" ����������

Page 31: Modellierungund Implementierung eines Message Flows in ...dret.net/netdret/docs/da-ss2001-meyer.pdfUnter den Begriffen Open Hypermedia System und Topic Maps ist man daran, das schon

«Interface»MessageDrivenBean

+ejbCreate()+ejbRemove()+ejbActivate()+ejbPassivate()+setMessageDrivenContext(...)

«Interface»MessageListener

+onMessage(msg:Message)

«abstract»RMDB

+ejbCreate()+ejbRemove()+ejbActivate()+ejbPassivate()+setMessageDrivenContext(...)+onMessage(msg:Message)+processMessage(attr:String[])+getData(): Element[]+getDataById(id:String): Element+addData(arg:Element): String+addData(arg:String): String+addCommand(handler:String)+getHistory(): Element[]+getParser(): DocumentBuilder+sendException(ex:RMDBexception) ...

Controller

+onMessage(msg:Message)+processMessage(...)+buildResponse(): String

Logger

+processMessage(...)

RequestHandler

+processMessage(...)

������ '� ���� �&��� ���������

������ ��� �� ������� �� ��� �� ����� ��� ��� ��� �� ��������� � ����� *� �� ���� ��� �� ������ ��� ������ ����������� ���� ��� ������� 9��� ��������� �� � ��� ��1���$ ������������� ����� � ��� G!= ���� � ����$ ���� � ���������� �� ��� ����� �����$ ��� ��� ����� ��1��� �� �2��� ���� ����� ������� 3�� ������ ���� ������ ����� ����� @��������� � ������ ��� �� ��� ��� �� ��� ����� 3����� ��� ���� ���� ��� @��������� 2����� ������ ��� ����� � ���� ��� ������ ��� �������� �� ��� @������ *� �� ����������������� �� ��� �+��� ����� �����&����� �� �������� ������� �������� ����� � #� ������$ �� ����� ������ ������ �� ����� ������ �� � ����� ��+� ����� � 3��� �� � ����������� ������ �$ ��� �� �� �������� �� �������� ���� ������� � ��F����� �������� �� ��1���� &��� �+���� ��� ������ �����+ ���� �������� �� ���������(�

5. PERFORMANCE)�� ���� %!"#� ���� ��� ���� �� � ���� �� ������ �� ������������ 3��� �� ���� ����������$ �� ����� ���� ��� �� ����� �������� ������ &��� ���� J����� !������$ ������� ����������� ������$ ��� ��� %!"# �����( ����� �������� @)9 ��� ��� ����� ����� ��������� 3� �� ������ ��� %!"#� ������$ �� ������ ����� ����� ���������� ��� ������� �� ��� ������ !"#� &����� ���������� ��������� ��� �� %!"#�(� E� �� D ����� ��� ������� ��� �������� ��������� 3�� G��+�� ����� B��� ��2�� #����� �� ��� ����� ���� ����� ��� <�� !"#�$ ��� ����� ��� ��� ���� ������ ��� %!"#� ��������� ������ ����� ��� G!= ���� �� ��������� #��� ������� ����� �� ��� ������� ��� ����������� �� ���3�� K��+�� ����� ��� ��� ��� � ���� ���� ��� � ����������������� ���� � � �������� ���� �� ����� ��� ���� ����� ������� E�� ��� %!"#� �� ���� �� ��� ��� !"#�$ �������� ��� ������� �������� �� ��� ���� �� ����� �� �������� *� ��� �������� �� ��� %!"#�$ ��� �������������� ��� ��� ���� ������ �� � ������ ����� ;���� ������� �� ��� ����� ��� B��� %!"#� �� C�� ��� �������� ���

110

48

26

4

44

63

85

119

69

83

101

32

0

20

40

60

80

100

120

140

0 1 2 3 4 5

Nr. of Beans

Pro

cess

ing

Tim

e (m

s)

MDB RMDB

������ (� ���� )����������

��� ��� ���������� ����� �� ��� � ��� ������� ���� � ����������� ���� ��� ������� 3�� ������ ����������� ���������� ���� ?� �� ���� ���� ������3�� �������� ��� ���� ��� �� *���� )���� ***��������� ������ ���� .,,!;B ��� C7?!#��� %�! ������ =��+ ����'? ��� ��� #�� ���� �� H�,��' ������� 3������������� ������ ��� ���� ������� �� ������ � ���������� �� ����� �� ��������� ���$ �� ��� ��� ��� ������������� ��� ��������B�� ��� ��� ��� �F��� ��� ������ ������� #������ ����$ �� ������ �����B������ ���� ���� ������ ��� ����������� ������$ �� ����� ��� ������ �� ���������� �� ����� �� ��� ���� �� ������ ��� �� ��� �������� ������E�� ��� ������ ����$ �� ��� �� �������� ���� �������� � ��� ������ �� � ��� �� %!"# �� 'D�? ������������� ��2�� ��� ��� ��1���� ������ $ ����� ��� ��������������� 3��� �� �� ��� �� � ����� �������� ��� ���� ������� ���� ����� #� ��� ������������ ���� ���� �� � ���� ������� ����� �� ���� ��� �� ������� � ��� ���� �������� ������ ��� �������� ��� �����������A�������$ ���������� ��� %!"# ������� �� ��� ��������$ ��� ��� �������� ��� ���� ��� ��B� �� ��� ���� ��$�� ��� ��B� �� ��� ���� ���� ���� ���� � ��� %!"#���� ������ *� ����� ��� �� ��� �����+�� �������� ���� ��$������ ��� �������B�� ��� ���� �� ��� �+������� ������ �� �+����$ ����� ��� � ���� ����� ���� � ��������� ;������$ G!= ������ ��� �������B����� �� �� ��� ������ �� ��� ����������� �� �� �� ���� �����+ ��� ���������� ��� ��������� ����������� ��� �������� ������� ��� %!"# �������� ��� ��� ����� ������ &�J! �������(�

6. CONCLUSIONS � ������� ������� ���� �� ����������� ��� ����� ����� �� ���� � � ���� �� �������� �������� �� � ������� �� ���� �� ��� G=������� ������ ��� �� ������� ������ �� ��� G=������� ������$ �!� ��� ��� ���� �� ����$��� �� ���� ���� ������� ���� ��� �������� �� ��� ���� �� �������� ;������$ �� ���������� ���� ����������� ���� ��� �� �������� �� !"#� ��� ��� �� ������� �� ������������� �� ���� ������ ���� *� �� �F��� �� ������ � ������ �������� �� ��� ������ �� � ���� � 4�� ���� � � �����+

Page 32: Modellierungund Implementierung eines Message Flows in ...dret.net/netdret/docs/da-ss2001-meyer.pdfUnter den Begriffen Open Hypermedia System und Topic Maps ist man daran, das schon

��� �� �������� ���������$ �� �������� ��� ������� �� ��������� ������������ ���� �����$ ����� ������ �� ������ ���� �� �� ����������� ���������*� ��� �� ��� �� �������� ��� ������ ������� �� %!"#���� �� G=������� �����������$ ��� �� ������� ���� �� ����������� �� ������� �� ����������� ����� � �� ����� ����� �� � ���� ������� �� ����������� �������� ��������������� �� � *� ���� �� ���������� �� ����� �� %!"#� ��������� �� �� ������� �� ��� ��+� ������� �� ����$ �� ��������� ���� ������� ������ �� ��$ �� �������� � ��� ��������� ��� �� ���� �� �� ���� � ��� ������ ����� ��������� �� �!� 1��� ��� ������$ ���� �� �� ���������� ����� ;������$ ����� ��� ����� ��� ���� �����$ ����� �������� ������� �� ��� �������� ��������

7. CHALLENGES AND FUTURE WORK�� ���$ �� ���� ������������ �� ���� ��� %!"# ��������� �� ������ ��� 4�+���� �� ��������$ �� ���� �� �� �������� �� ������ ��������� ���� �� �������� ������������;������$ ��� �������� ������ �� ���� ��� ��� ����������� ��� ���� �� ������������ ���� �!� �������� ��� ��������� �� ���� ��$ ����� �� �� ����������� �������� � ����������� ������� ���� ��� �� ���� ���� ������ �3� �������� ���� �� %!"# ����������� ��� ��������� �������������� ��������$ ������� ���� ���� �� ��� ��� �����%!"# ��������� �� � ��1��� ��� ������������ �� ���� ���� �+���� ��� %!"# �)* ��� ��� %!"# ���� � ��������� ������ ��� ������������$ �� ���� �������� �������������� ������ ������� ��� ��� ������ ��� ������ ���� �� ������� �� �������� �� �!� ����$ ��� � ��� �+�������$ ����� �������� ������������� ������� ��������� �� ��� �!� ��� �3� ���������������� ���� �� ���� ���� �� ������� ��� �� ��� ��������� ����������� ����� ������ ��� ���� ��$ ����� ��� ����� �� %!"# ���� �� �� ����� �� ��� ����� �� ����������������� �� ��� ����� � ���$ ���� ���� ��1��� ���� �� ����� �)* �� ���� �� �� ��� ���� � �����$ �� �� ����������� ����������� ����� ���� �� ���� �� ��� ���������$��� ��� ������ ����� ���� ��� ������� �� �+�������� &��$����� ����������( �� � ��� ������ ��� ���� ���� �������� ��� �+������� �������� � �������� �� �� G!= "3" �� �������� ��� %!"#���� � ������ � ��� �������� ������ ���� ��� G!=����� -�$ 'C/ ��� ��� ����� ��2������$ ����� ���� ������� � �� ������� � ������ ����� ���� �� ��� ���� � ������� *� ���������$ G!= ������� �������� ������� ������ ��� �� ��� ��� %!"# ���� �� ���� �� ���� ������� ������� ���� ��� ���������� �� ��� ���� ��� ;������$���� ���� ��1��� ��� � ��������������� G!= ������$��� �� ����� ���� �� ���� ���� ��� ���������� ������������� ��� � �����*� �� ������ %!"# ��������$ ��� ���������� �� ������������ ���� ��� �� �� ���� �� ��� ����������$ ��� ����������� ������� �� ��� ����������� �� ��� ��� ���� ������� ����� �� ���� ��� %!"# ���� ���� ��� �������� ����������� ������� ����������� ��� ���������� ��� ���� %!"#��������� �� ��� ����������$ ��� ���� ����� ��� %!"# ��������� ��� ����� ��������� ���� ����� �� ��� ������ ��1��� ��� ��� %!"# �����2�������� 3���$ �������$ ������ � ���� ���� ���� �� ����� ����������$ ����� �� ��� ���

������ ��� �� ��� ��� �� ��� �F��� ���� ���

8. ACKNOWLEDGEMENTS

� ���� ���� �� ����� #�� ������ ����B������ ����������� � ���� �� �+������ ����� ������� ��� ����� ���=� �� ����������� ������� � ���� ���� ���� �� ����� K���=�� ���� ��� �������� ��� ���������� �� ��� G=���������# ������������

9. REFERENCES��� ��� ���������� ��� ��� � �� ���� �� ���������

�� � � ��� ����� �������� ��������� �������������������� ���� �� ��� �����

��� �� � �� ����� ��� ����� ��������� ��� ���� �!�� �" #�����$��� ��� � �� ��� %��� � �&�� ����� � &'%() ����� �(�(�**�*+*�� ��� �**��

�,� � ��� ��� �� ��� ����� ������� -�.� ������� ��!� /-��0 1 2�� � ��*��� ����� ��� �$�� ���� ������ �� �$ � �����

�3� ������ �� ������� ��� ������ ��� ����� �!�������� � �� �4 ���4��4� /�� ��0 2�� � ��*� ��� � ����� %��� � � &�� ����� � &'%()� ��(�**�*5�6�-��� �**��

�+� ��" �� #�������� ��� $���"�� ��%%��" �� ��� ��&����� #�"��"� '������� ���" ��������� �� � ����!�� ��� ��� ���������� 7�$���)� ����8�!��� 1 7��!9���� ������� $$��� ������� &:%�5�5� -��� �����

�5� ���!� $����� ��!���� &���� ���(� �������� ������� ���������� ���� �������� ������� �� ������������� �������� !�������� ��� ��(������� &��� �4��������������� -����� ���+�

�6� ���� &�(���� ��!� � ������� ��� � ������� �������(� #������ -�.� �����4� ��. �� 1 2�� � ��*��������� ��� �$�� ��� � ������ �� ��4��� �**��

�;� )������������ �����*����� %�� ���������*��������8 �� � ������4� 1 �<�� �$$� ��� �� 1 �$ ���$�� ��=9�'% �,�+*� �***�

��� ����� �� '+ ��,��� ��� ���� �� ������� � 2 � � 8=$�� 7�$� �� � ����� �� ������� �� ������"����������� �/�0� ���6�

��*� ����� ��((�� ��� $����� ������ ��� �$ � ��$�/���0 ��*� �$ ���$��=4 �$�� >��� � )� �(�**�*;*5���4��� �**��

���� �� ������ #������ ��������� ��$�%��� ��� � ���$� & ��������' ��������� �������� -�� � ��� ? ����@�A B�� ��$�� �� �����

���� ���� �������� -�.� � !���8 '���$ �� '� � ��$�� >��� �� .��,� ����� ��� �$�� ��� � ������ ��-��� �**��

��,� &���" �� ����(���� ����� ���!�� � ���" ������"���� '��� ����������� ��� ���� � !�� �"��������� ��� � �� ��� %��� � �&�� ����� � &'%() ����� �(�(�**�*+*�� ��� �**��

��3� �� -������ ��� � �� �������� �(� ��� #)!*+,�� ��$��������� �� �� ��� ���$� �� ��� ���� �����**��

��+� ���� -����� ,����- ,,, . /�� ����� 0��������� ��� � ,���� ,��� ,��� �$ �4�(2���4� C�� �� <� ����@.� �� ���;�

��5� ���� -���� ��� ����� �.�� : %�����(%������!��� �� �4 � � � ��(C���� 2 �A 8 ��8 �� �&������� �� ��������� �� � � ���� (�����"������������ ���������� �� !)��� !������� ��� �7�A� � -����� �***� �''' % $��� �� ��� !����

Page 33: Modellierungund Implementierung eines Message Flows in ...dret.net/netdret/docs/da-ss2001-meyer.pdfUnter den Begriffen Open Hypermedia System und Topic Maps ist man daran, das schon

Anhang A

Inhalt der CDROM

A.1 XLinkbaseServer

Im VerzeichnisXLinkbaseServerbefindetsich der kompletteSource-Codewie er in die-ser Diplomarbeitentstandenist. Das UnterverzeichnisxlinkbaseBeansIteration3 enthältdie letzteIterationunddasUnterverzeichnisalteVersionenenthältfrühere,zumTeil nichtkorrekt lauffähigeVorabversionen.Der gesamteCodewurdemit demBorlandJBuilder4Foundationentwickelt. Auf derCD befindetsichjeweilsdasganzeProjektverzeichniswieesvom JBuilderangelegt wird:

xlinkbase.jpr DieseDatei ist dasProjektfileundenthältdie ganzeKonfigurationfür denJBuilder.

.../src Hier drin ist dereigentlicheSource-Code,angeordnetin derPackageStrukturundallewichtigenDeployment-Filesim UnterverzeichnisMETA-INF.

.../classesDasZielverzeichnisbeiderKompilation.

.../bak Alte Sicherungskopien.DiesewerdenvomJBuilderautomatischangelegt undkön-nenbeiBedarfzurückkopiertwerden.

.../jars In diesemVerzeichniswerdendieJavaArchiv Dateienerstellt.Bereitzumdeploy-ing im ApplicationServer.

.../doc Die Ausgabedes javadocGeneratorswird hier abgelegt. Es beinhaltetdie API-Dokumentationim HTML-Format.

Makefile Mit diesemMakefile könnenautomatischjar-Dateienerstelltwerdenund zum"DeployenändenrichtigenOrt im WeblogicoderJBossServerkopiertwerden.DasKompilierenmussmit demJBuildergemachtwerden,alle weiterenSchritte,inklu-sive Erstellender Dokumentationkannmit make gemachtwerden.Der Prefix WLin denTargetsstehtjeweils für denWeblogicServer, der Prefix JB für JBoss.BeiWiederverwendungdiesesMakefilesmüssenim Kopf der Datei die korrektenVer-zeichnissegesetztwerden.

Um die Projekteim JBuilder kompilierenzu können,werdennoch einige Bibliothekenbenötigt:

ÿ DerXercesXML Parser. DieserbefindetsichebenfallsaufderCD.EsmussdieDateixerces.jaralsBibliothekeingebundenwerden.

FürdenWeblogicServer

ÿ tools.jarund

Page 34: Modellierungund Implementierung eines Message Flows in ...dret.net/netdret/docs/da-ss2001-meyer.pdfUnter den Begriffen Open Hypermedia System und Topic Maps ist man daran, das schon

34 Inhalt der CDROM

ÿ ejb20.jarausdemlib-VerzeichnisdesServers

FürdenJBossServer

ÿ jboss-j2ee.jar und

ÿ servlet.jarausdemlib-VerzeichnisdesServers

Wie im JBuilderdieseBibliothekenerstelltund in Projektübernommenwerden,kannimHilfe-Programmnachgelesenwerden.

A.2 Application Server Installationen

Unter installationenbefindensichdiebeidenApplicationServerBeaWeblogic 6.0sp1undJBoss-2.4.0betamit Tomcat3.2.2. Auf meinemLinux-Rechnerhabensich diesebeidenServer unter/opt installiertgehabt.Für weiterenproblemlosenBetriebist esratsam,diesewiedersoeinzurichten.Zudemist eineaktuelleVersiondesJDK nötig.DerBeaWeblogicServerbringtdieVersion1.3.0gleichselbermit. Diesehabeich auchgeradefür denJBossverwendet.Ich musstedazudie EnvironmentVariableJAVA_HOME auf /opt/bea/jdk130setzen.

A.2.1 BeaWeblogic

.../bea/Xlinkbase/xlx Hier drin befindensich alle xlx-Dateiendie vom RequestHandlerBeanzurückgeliefertwerden.

.../bea/lib Alle Bibliotheken in Form von jar-Files müssensich hier befinden,auchdieZusätzlichenDateienejb20.jarundxerces.jar.

.../bea/config/xlinkbaseHier istdasHauptkonfigurationsfileconfig.xmlunddieStartskrip-te.config.xmlkannbei ausgeschaltetemServervon Handgeändertwerdenoderein-facherbei laufendemServer im Browser unter http://localhost:7001/console. MitUsernamesystemundPasswort xlinkbasekannmansokomfortabeldiemeistenAd-ministrationsaufgabenerledigen.Vor demStartendesServersmit startXlinkbase.shsolltenmit setEnv.shalle Umgebungsvariablenrichtig gesetztwerden.DasPasswortfür denStartist wieder:xlinkbase.

.../bea/config/xlinkbase/applicationsDasist der Ort wo die EJBsin Form von jar-Fileshin kopiertwerdenmüssen.DerApplicationServererkenntsieautomatischundbin-detsiein denlaufendenServerein.

.../bea/config/xlinkbase/applications/DefaultWebApp_xlinkbaseServer/WEB-INF/classesIn diesemVerzeichniswird dasKickerServletabgelegt.

.../bea/config/xlinkbase/applications/DefaultWebApp_xlinkbaseServer/WEB-INF/web.xmlDasDeployment-Filefür ServletsundandereWebApplications.

A.2.2 JBoss-TomcatServer

Der JBossist nur ein EJB-ContainerundunterstütztselberkeineServlets.Darumwird eroft mit eineranderenServlet-Enginebetrieben,wie in meinemFall mit Tomcat.

.../JBoss-2.4.0_Tomcat-3.2.2/jboss/conf/tomcat Alle KonfigurationendesServersmüs-senin diesemVerzeichnisvorgenommenwerden,fallsJBosszusammenmit Tomcatgestartetwird. Andernfallsgibt esnochdasVerzeichnisdefault. Die ErstellungvonneuenJMS-Queueskannin derDatei jbossmq.xmlgemachtwerden.

Page 35: Modellierungund Implementierung eines Message Flows in ...dret.net/netdret/docs/da-ss2001-meyer.pdfUnter den Begriffen Open Hypermedia System und Topic Maps ist man daran, das schon

A.3 TestCode 35

.../JBoss-2.4.0_Tomcat-3.2.2/jboss/bin HiersinddieStartskripte.Essollteimmerrun_with_tomcat.shverwendetwerden,damitTomcatin derselbenVirtual Machinegestartetwird.

.../JBoss-2.4.0_Tomcat-3.2.2/jboss/deployEJB-JAR Dateienin diesemVerzeichniswer-denvon JBossServerautomatischeingebunden.

.../JBoss-2.4.0_Tomcat-3.2.2/jboss/admin Mit Hilfe desMonitorsunterdiesemVerzeich-niskannEinblick in denlaufendenJBossServergenommenwerden,ähnlichwie mitderBrowser-KonsoledesBeaWeblogicServer.

DenJBossApplicationServerhabeich nuroberflächlichangeschaut.Die Beansdie ichin Iteration3 programmierthabefunktionierenauchnicht ganzrichtig mit dieserJBoss-Installation.Esist zu bedenken,dassich hier eineBetaVersionausprobierthabe,die nochnicht alle Featuresunterstütztdie in einemEJB2.0 Server vorhandenseinsollten.DiesesOpenSourceProjektmachtabersehrschnellFortschritte,sodasssicherin naherZukunftein reifer ApplicationSerververfügbarseinwird.

A.3 TestCode

FürTestdesXlinkbaseServersundMessungderPerformancehabeich einigeProgrammegeschrieben,dieuntertestCodearchiviert sind.EineganzeinfacheFunktionskontrollehabeich jeweilsmit derHTML DateitestPost.htmlin einembeliebigenBrowsermachenkönnen.DieseEnthältein Formulardasmit derHTTP-PostMethodeeinenRequestandasKickerServletsendet.Die Rückgabewird danneinfachalsplain text im Browserangezeigt.SollderXLinkbaseServer von einemanderenRechnerausgetestetwerden,mussim HTML-CodelocalhostdurchdenrichtigenServernameersetztwerden.

A.4 SoftwareTools

Alle wichtigenProgramme,die ich währendmeinerDiplomarbeitverwendethabe,sinduntersoftwareToolsaufdieCD gebrannt.DassinddiebeidenApplicationServer(weblogicund jboss), derJBuilder4 Foundation(jb4), derXercesXML Parser(xerces) undAnt fürdie Kompilierungvon Java-Sourcen(ant). Allfällige Lizenzenfür die Programmemüssenselberbeschafft werden.Für denWeblogicServer gibt es30-TageTrial Lizenzen,für denJBuilderkanngratiseineSeriennummerangefordertwerdenundalle anderenProgrammesindfrei verwendbar.

A.5 Bericht

Die DokumentationdieserDiplomarbeit liegt unter bericht in den FormatenPostScript(PS),PortableDocumentFormat(PDF) und HTML vor. Ebensobefindetsich der LaTeXCodesowie dasPowerPoint-FilederPräsentationin diesemVerzeichnis.

Page 36: Modellierungund Implementierung eines Message Flows in ...dret.net/netdret/docs/da-ss2001-meyer.pdfUnter den Begriffen Open Hypermedia System und Topic Maps ist man daran, das schon

36 Inhalt der CDROM

Page 37: Modellierungund Implementierung eines Message Flows in ...dret.net/netdret/docs/da-ss2001-meyer.pdfUnter den Begriffen Open Hypermedia System und Topic Maps ist man daran, das schon

Class Tree Deprecated Index Help PREV CLASS NEXT CLASS FRAMES NO FRAMES

SUMMARY: INNER | FIELD | CONSTR | METHOD DETAIL: FIELD | CONSTR | METHOD

com.xlinkbase.ejb Class XlinkbaseBeanjava.lang.Object | +-- com.xlinkbase.ejb.XlinkbaseBean

All Implemented Interfaces: javax.ejb.EnterpriseBean, javax.ejb.MessageDrivenBean, javax.jms.MessageListener, java.io.Serializable

Direct Known Subclasses: Controller, Logger, Monitor, RequestHandler

public abstract class XlinkbaseBeanextends java.lang.Objectimplements javax.ejb.MessageDrivenBean, javax.jms.MessageListener

XlinkbaseBean is a abstract Superclass that can be used to implement a Xlinkbase Server. Build asubclass and override the method processMessage to fill it with the business logic.

Diploma Thesis 2001.21Computer Engineering and Networks LaboratorySwiss Federal Institute of Technology, Zürich

See Also: Serialized Form

Field Summarystatic int DEBUG

Constant for the importance of a log message.

static int ERROR Constant for the importance of a log message.

static int NOTE Constant for the importance of a log message.

static int WARNING Constant for the importance of a log message.

Page 38: Modellierungund Implementierung eines Message Flows in ...dret.net/netdret/docs/da-ss2001-meyer.pdfUnter den Begriffen Open Hypermedia System und Topic Maps ist man daran, das schon

Constructor SummaryXlinkbaseBean()

Method Summary void addCommand(java.lang.String handler,

java.lang.String[] attributes) Adds a new command to the processing path.

java.lang.String addData(org.w3c.dom.Element arg) Pushes a new data element on top of the data stack.

java.lang.String addData(java.lang.String arg) Pushes a new data element on top of the data stack.

void ejbActivate() Method of the MessageDrivenBean interface.

void ejbCreate() Method of the MessageDrivenBean interface.

void ejbPassivate() Method of the MessageDrivenBean interface.

void ejbRemove() Method of the MessageDrivenBean interface.

java.lang.String[] getAttributes() Returns the Attributes which have been provided with the invocation present bean.

org.w3c.dom.Element[] getData() Returns the complete data stack.

org.w3c.dom.Element getDataById(java.lang.String id) Searches the data stack for a data element with the id string provided and returns it.

org.w3c.dom.Element[] getHistory() Returns a list of already executed commands as an array of elements.

javax.xml.parsers.DocumentBuilder getParser() Returns a DocumentBuilder Object.

java.lang.String getSerializedForm(org.w3c.dom.Document doc) Helper method to serialize a XML document into a string.

void log(java.lang.String s) Prints a log message to stdout.

void log(java.lang.String s, int level) Prints a log message to stdout.

boolean messageContainsFrame() Checks whether there’s an XML message frame in the present message.

void onMessage(javax.jms.Message msg) Method of the MessageListener interface.

abstract void processMessage(java.lang.String[] attributes) This is an abstract method, so it must be implemented in your subclass.

void readMessage(javax.jms.Message msg) Reads a received JMS Message.

void sendException( XlinkbaseException exception) If something bad happens, an exception can be sent using this method.

void sendMessage(java.lang.String stringMessage) Sends the message to the next RMDB in the processing path.

Page 39: Modellierungund Implementierung eines Message Flows in ...dret.net/netdret/docs/da-ss2001-meyer.pdfUnter den Begriffen Open Hypermedia System und Topic Maps ist man daran, das schon

void setLoglevel(int arg) Changes the current log level.

void setLogPrefix(java.lang.String arg) Sets prefix arg before each log entry.

void setMessageDrivenContext(javax.ejb.MessageDrivenContext mctx) Method of the MessageDrivenBean interface.

void setupMessageFrame(javax.jms.Message msg) This method builds a complete XML message frame and fills in the default routeand the request from the received message as a data element.

void showMessage() Dumps the received message on stdout.

Methods inherited from class java.lang.Object

clone, equals, finalize, getClass, hashCode, notify, notifyAll,toString, wait, wait, wait

Field Detail

ERRORpublic static final int ERROR

Constant for the importance of a log message.

WARNINGpublic static final int WARNING

Constant for the importance of a log message.

NOTEpublic static final int NOTE

Constant for the importance of a log message.

DEBUGpublic static final int DEBUG

Constant for the importance of a log message.

Page 40: Modellierungund Implementierung eines Message Flows in ...dret.net/netdret/docs/da-ss2001-meyer.pdfUnter den Begriffen Open Hypermedia System und Topic Maps ist man daran, das schon

Constructor Detail

XlinkbaseBeanpublic XlinkbaseBean()

Method Detail

setLogPrefixpublic void setLogPrefix(java.lang.String arg)

Sets prefix arg before each log entry. Defaults to "MDB:".Parameters:

arg - the prefix string

setLoglevelpublic void setLoglevel(int arg)

Changes the current log level.Parameters:

arg - log level: OFF, ERROR, WARNING, NOTE, DEBUG

getParserpublic javax.xml.parsers.DocumentBuilder getParser()

Returns a DocumentBuilder Object. Use this to create new XML documents or parse andserialize existing ones.

logpublic void log(java.lang.String s)

Prints a log message to stdout. Uses default log level NOTE.Parameters:

s - the message string

logpublic void log(java.lang.String s, int level)

Prints a log message to stdout.

Page 41: Modellierungund Implementierung eines Message Flows in ...dret.net/netdret/docs/da-ss2001-meyer.pdfUnter den Begriffen Open Hypermedia System und Topic Maps ist man daran, das schon

Parameters:s - the message stringlevel - log level: ERROR, WARNING, NOTE, DEBUG

ejbActivatepublic void ejbActivate()

Method of the MessageDrivenBean interface. Called by the EJB Container. Don’t use oroverride this method in your subclass.

ejbRemovepublic void ejbRemove()

Method of the MessageDrivenBean interface. Called by the EJB Container. Don’t use oroverride this method in your subclass.

Specified by: ejbRemove in interface javax.ejb.MessageDrivenBean

ejbPassivatepublic void ejbPassivate()

Method of the MessageDrivenBean interface. Called by the EJB Container. Don’t use oroverride this method in your subclass.

ejbCreatepublic void ejbCreate() throws javax.ejb.CreateException

Method of the MessageDrivenBean interface. Called by the EJB Container. Don’t use oroverride this method in your subclass.

Here the JNDI context and the Java Messaging Service is initialized, the parser is created and theenvironment variables are read in.

setMessageDrivenContextpublic void setMessageDrivenContext(javax.ejb.MessageDrivenContext mctx)

Method of the MessageDrivenBean interface. Called by the EJB Container. Don’t use oroverride this method in your subclass.Specified by:

setMessageDrivenContext in interface javax.ejb.MessageDrivenBean

Page 42: Modellierungund Implementierung eines Message Flows in ...dret.net/netdret/docs/da-ss2001-meyer.pdfUnter den Begriffen Open Hypermedia System und Topic Maps ist man daran, das schon

onMessagepublic void onMessage(javax.jms.Message msg)

Method of the MessageListener interface. Called by the EJB Container. Don’t use oroverride this method in your subclass.

This method calls the processMessage() . Before and after that all the work is done thatenhances the Message Driven Beans (MDB) to the Routed Message Driven Beans (RMDB).

Specified by: onMessage in interface javax.jms.MessageListener

getAttributespublic java.lang.String[] getAttributes() throws XlinkbaseException

Returns the Attributes which have been provided with the invocation present bean. These are alsogiven as parameter to the processMessage method, so a direct call to this method should notbe necessary.

processMessagepublic abstract void processMessage(java.lang.String[] attributes) throws XlinkbaseException

This is an abstract method, so it must be implemented in your subclass. It is supposed to containthe business logic of the RMDB. It is called by the framework each time a message arrives.Parameters:

attributes - optional attributes used for steering the beans work.See Also:

addCommand(String, String[])

getHistorypublic org.w3c.dom.Element[] getHistory() throws XlinkbaseException

Returns a list of already executed commands as an array of elements. If the history is turned offin this message null is returned.

getDatapublic org.w3c.dom.Element[] getData() throws XlinkbaseException

Page 43: Modellierungund Implementierung eines Message Flows in ...dret.net/netdret/docs/da-ss2001-meyer.pdfUnter den Begriffen Open Hypermedia System und Topic Maps ist man daran, das schon

Returns the complete data stack. Each stack entry is wrapped in an XML element with name data and filled up in an array. The "top of stack" element is in the first place of the array (item 0).

getDataByIdpublic org.w3c.dom.Element getDataById(java.lang.String id) throws XlinkbaseException

Searches the data stack for a data element with the id string provided and returns it. If there’s nostack entry with that id null is returned.Parameters:

id - id string of the requested data elementSee Also:

addData(String) , addData(Element)

addDatapublic java.lang.String addData(java.lang.String arg) throws XlinkbaseException

Pushes a new data element on top of the data stack. The argument is stored as a "XML text node"an inserted in a new data element. A unique id String is calculated, added to the data node andreturn to the caller.Parameters:

arg - string to be stored on the data stackReturns:

unique id string to retrieve the stored dataSee Also:

getDataById(String)

addDatapublic java.lang.String addData(org.w3c.dom.Element arg) throws XlinkbaseException

Pushes a new data element on top of the data stack. The argument can be an element from anyXML document. It is recursively imported into a new data node and numbered with a unique id.Parameters:

arg - element to be stored on the data stackReturns:

unique id string to retrieve the stored dataSee Also:

getDataById(String)

Page 44: Modellierungund Implementierung eines Message Flows in ...dret.net/netdret/docs/da-ss2001-meyer.pdfUnter den Begriffen Open Hypermedia System und Topic Maps ist man daran, das schon

addCommandpublic void addCommand(java.lang.String handler, java.lang.String[] attributes) throws XlinkbaseException

Adds a new command to the processing path. It is executed after the present bean finishes itswork unless you add more commands. Every command is stored on a stack an thereforeprocessed in reversed order as this method is being called. The command name must match a livemessage queue and a RMDB has to be deployed to listen on this queue.Parameters:

handler - the command name.attributes - an array of strings, containing parameters for the called RMDB

readMessagepublic void readMessage(javax.jms.Message msg) throws XlinkbaseException

Reads a received JMS Message. This method is automatically called by the framework and mustnot be called by the user.

getSerializedFormpublic java.lang.String getSerializedForm(org.w3c.dom.Document doc) throws XlinkbaseException

Helper method to serialize a XML document into a string.Parameters:

doc - a XML DocumentReturns:

a string containing the serialized XML codeThrows:

XlinkbaseException - if the document is invalid or the serializer is not initialized.

sendMessagepublic void sendMessage(java.lang.String stringMessage) throws XlinkbaseException

Sends the message to the next RMDB in the processing path. This method is automatically calledby the framework and must not be called by the user.

sendExceptionpublic void sendException( XlinkbaseException exception)

Page 45: Modellierungund Implementierung eines Message Flows in ...dret.net/netdret/docs/da-ss2001-meyer.pdfUnter den Begriffen Open Hypermedia System und Topic Maps ist man daran, das schon

If something bad happens, an exception can be sent using this method. It tries to find a reasonablerecipient for this error message, but if all fails it stops the processing of the request.Parameters:

exception - an exception containing a description of what went wrong

setupMessageFramepublic void setupMessageFrame(javax.jms.Message msg) throws XlinkbaseException

This method builds a complete XML message frame and fills in the default route and the requestfrom the received message as a data element. It should only be called at the very beginning of theprocessing path which is usually done by the Controller RMDB.Parameters:

msg - the message sent by the client containing the request.

messageContainsFramepublic boolean messageContainsFrame()

Checks whether there’s an XML message frame in the present message.Returns:

true if there’s a message frame, else false

showMessagepublic void showMessage()

Dumps the received message on stdout. Useful for debugging.

Class Tree Deprecated Index Help PREV CLASS NEXT CLASS FRAMES NO FRAMES

SUMMARY: INNER | FIELD | CONSTR | METHOD DETAIL: FIELD | CONSTR | METHOD

Page 46: Modellierungund Implementierung eines Message Flows in ...dret.net/netdret/docs/da-ss2001-meyer.pdfUnter den Begriffen Open Hypermedia System und Topic Maps ist man daran, das schon

46 API Dokumentation

Page 47: Modellierungund Implementierung eines Message Flows in ...dret.net/netdret/docs/da-ss2001-meyer.pdfUnter den Begriffen Open Hypermedia System und Topic Maps ist man daran, das schon

Class Tree Deprecated Index Help PREV CLASS NEXT CLASS FRAMES NO FRAMES

SUMMARY: INNER | FIELD | CONSTR | METHOD DETAIL: FIELD | CONSTR | METHOD

com.xlinkbase.ejb Class XlinkbaseExceptionjava.lang.Object | +--java.lang.Throwable | +--java.lang.Exception | +-- com.xlinkbase.ejb.XlinkbaseException

All Implemented Interfaces: java.io.Serializable

public class XlinkbaseExceptionextends java.lang.Exception

This is a simple exception class used by the Routed Message Driven Beans and its framework.

Diploma Thesis 2001.21Computer Engineering and Networks LaboratorySwiss Federal Institute of Technology, Zürich

See Also: Serialized Form

Constructor SummaryXlinkbaseException(java.lang.String e)

Methods inherited from class java.lang.Throwable

fillInStackTrace, getLocalizedMessage, getMessage, printStackTrace,printStackTrace, printStackTrace, toString

Methods inherited from class java.lang.Object

clone, equals, finalize, getClass, hashCode, notify, notifyAll,wait, wait, wait

Page 48: Modellierungund Implementierung eines Message Flows in ...dret.net/netdret/docs/da-ss2001-meyer.pdfUnter den Begriffen Open Hypermedia System und Topic Maps ist man daran, das schon

Constructor Detail

XlinkbaseExceptionpublic XlinkbaseException(java.lang.String e)

Parameters:e - The error Message

Class Tree Deprecated Index Help PREV CLASS NEXT CLASS FRAMES NO FRAMES

SUMMARY: INNER | FIELD | CONSTR | METHOD DETAIL: FIELD | CONSTR | METHOD

Page 49: Modellierungund Implementierung eines Message Flows in ...dret.net/netdret/docs/da-ss2001-meyer.pdfUnter den Begriffen Open Hypermedia System und Topic Maps ist man daran, das schon

Class Tree Deprecated Index Help PREV CLASS NEXT CLASS FRAMES NO FRAMES

SUMMARY: INNER | FIELD | CONSTR | METHOD DETAIL: FIELD | CONSTR | METHOD

com.xlinkbase.ejb.Controller Class Controllerjava.lang.Object | +-- com.xlinkbase.ejb.XlinkbaseBean | +-- com.xlinkbase.ejb.Controller.Controller

All Implemented Interfaces: javax.ejb.EnterpriseBean, javax.ejb.MessageDrivenBean, javax.jms.MessageListener, java.io.Serializable

public class Controllerextends XlinkbaseBeanimplements javax.ejb.MessageDrivenBean, javax.jms.MessageListener

Controller is special implementation of the Xlinkbase Superclass. It is designed to be the first and thelast RMDB in a processing path and to handle the direct communication with the client.

Diploma Thesis 2001.21Computer Engineering and Networks LaboratorySwiss Federal Institute of Technology, Zürich

See Also: Serialized Form

Fields inherited from class com.xlinkbase.ejb.XlinkbaseBean

DEBUG, ERROR, NOTE, WARNING

Constructor SummaryController()

Page 50: Modellierungund Implementierung eines Message Flows in ...dret.net/netdret/docs/da-ss2001-meyer.pdfUnter den Begriffen Open Hypermedia System und Topic Maps ist man daran, das schon

Method Summary java.lang.String buildResponse()

This method filters the plain response out of the XML message bysimply returning the content of the data element on top of the stack.

void onMessage(javax.jms.Message msg) This method overrides the implemenation in the XlinkbaseBean class.

void processMessage(java.lang.String[] attribs) This method is empty, because the Controller is not supposed to do anybusiness logic.

Methods inherited from class com.xlinkbase.ejb.XlinkbaseBean

addCommand, addData , addData , ejbActivate , ejbCreate , ejbPassivate , ejbRemove , getAttributes , getData , getDataById , getHistory , getParser , getSerializedForm , log , log , messageContainsFrame , readMessage , sendException , sendMessage , setLoglevel , setLogPrefix , setMessageDrivenContext , setupMessageFrame , showMessage

Methods inherited from class java.lang.Object

clone, equals, finalize, getClass, hashCode, notify, notifyAll,toString, wait, wait, wait

Methods inherited from interface javax.ejb.MessageDrivenBean

ejbRemove, setMessageDrivenContext

Constructor Detail

Controllerpublic Controller()

Method Detail

Page 51: Modellierungund Implementierung eines Message Flows in ...dret.net/netdret/docs/da-ss2001-meyer.pdfUnter den Begriffen Open Hypermedia System und Topic Maps ist man daran, das schon

onMessagepublic void onMessage(javax.jms.Message msg)

This method overrides the implemenation in the XlinkbaseBean class. When the Controller isinvocated by a client, this method sets up a message frame and a default route and then kicks offthe request handling by the other RMDBs. After the response returms to the Controller theonMessage method removes the message frame and sends the response as plain text to the client.Specified by:

onMessage in interface javax.jms.MessageListenerOverrides:

onMessage in class XlinkbaseBean

buildResponsepublic java.lang.String buildResponse() throws XlinkbaseException

This method filters the plain response out of the XML message by simply returning the content ofthe data element on top of the stack. Could be overridden if other functionality is required.

processMessagepublic void processMessage(java.lang.String[] attribs) throws XlinkbaseException

This method is empty, because the Controller is not supposed to do any business logic.Overrides:

processMessage in class XlinkbaseBeanFollowing copied from class: com.xlinkbase.ejb.XlinkbaseBean Parameters:

attributes - optional attributes used for steering the beans work.See Also:

XlinkbaseBean.addCommand(String, String[])

Class Tree Deprecated Index Help PREV CLASS NEXT CLASS FRAMES NO FRAMES

SUMMARY: INNER | FIELD | CONSTR | METHOD DETAIL: FIELD | CONSTR | METHOD

Page 52: Modellierungund Implementierung eines Message Flows in ...dret.net/netdret/docs/da-ss2001-meyer.pdfUnter den Begriffen Open Hypermedia System und Topic Maps ist man daran, das schon

52 API Dokumentation

Page 53: Modellierungund Implementierung eines Message Flows in ...dret.net/netdret/docs/da-ss2001-meyer.pdfUnter den Begriffen Open Hypermedia System und Topic Maps ist man daran, das schon

Class Tree Deprecated Index Help PREV CLASS NEXT CLASS FRAMES NO FRAMES

SUMMARY: INNER | FIELD | CONSTR | METHOD DETAIL: FIELD | CONSTR | METHOD

com.xlinkbase.ejb.Logger Class Loggerjava.lang.Object | +-- com.xlinkbase.ejb.XlinkbaseBean | +-- com.xlinkbase.ejb.Logger.Logger

All Implemented Interfaces: javax.ejb.EnterpriseBean, javax.ejb.MessageDrivenBean, javax.jms.MessageListener, java.io.Serializable

public class Loggerextends XlinkbaseBeanimplements javax.ejb.MessageDrivenBean, javax.jms.MessageListener

This is an implemention of the XlinkbaseBean class. It’s a Routed Message Driven Beans used to doLogging.

Diploma Thesis 2001.21Computer Engineering and Networks LaboratorySwiss Federal Institute of Technology, Zürich

See Also: Serialized Form

Fields inherited from class com.xlinkbase.ejb.XlinkbaseBean

DEBUG, ERROR, NOTE, WARNING

Constructor SummaryLogger()

Method Summary void processMessage(java.lang.String[] attributes)

Implements the abstract method of the superclass XlinkbaseBean.

Page 54: Modellierungund Implementierung eines Message Flows in ...dret.net/netdret/docs/da-ss2001-meyer.pdfUnter den Begriffen Open Hypermedia System und Topic Maps ist man daran, das schon

Methods inherited from class com.xlinkbase.ejb.XlinkbaseBean

addCommand, addData , addData , ejbActivate , ejbCreate , ejbPassivate , ejbRemove , getAttributes , getData , getDataById , getHistory , getParser , getSerializedForm , log , log , messageContainsFrame , onMessage , readMessage , sendException , sendMessage , setLoglevel , setLogPrefix , setMessageDrivenContext , setupMessageFrame , showMessage

Methods inherited from class java.lang.Object

clone, equals, finalize, getClass, hashCode, notify, notifyAll,toString, wait, wait, wait

Methods inherited from interface javax.ejb.MessageDrivenBean

ejbRemove, setMessageDrivenContext

Methods inherited from interface javax.jms.MessageListener

onMessage

Constructor Detail

Loggerpublic Logger()

Method Detail

processMessagepublic void processMessage(java.lang.String[] attributes) throws XlinkbaseException

Implements the abstract method of the superclass XlinkbaseBean. It contains the Application Logic.Overrides:

processMessage in class XlinkbaseBean

Page 55: Modellierungund Implementierung eines Message Flows in ...dret.net/netdret/docs/da-ss2001-meyer.pdfUnter den Begriffen Open Hypermedia System und Topic Maps ist man daran, das schon

Following copied from class: com.xlinkbase.ejb.XlinkbaseBean Parameters:

attributes - optional attributes used for steering the beans work.See Also:

XlinkbaseBean.addCommand(String, String[])

Class Tree Deprecated Index Help PREV CLASS NEXT CLASS FRAMES NO FRAMES

SUMMARY: INNER | FIELD | CONSTR | METHOD DETAIL: FIELD | CONSTR | METHOD

Page 56: Modellierungund Implementierung eines Message Flows in ...dret.net/netdret/docs/da-ss2001-meyer.pdfUnter den Begriffen Open Hypermedia System und Topic Maps ist man daran, das schon

56 API Dokumentation

Page 57: Modellierungund Implementierung eines Message Flows in ...dret.net/netdret/docs/da-ss2001-meyer.pdfUnter den Begriffen Open Hypermedia System und Topic Maps ist man daran, das schon

Class Tree Deprecated Index Help PREV CLASS NEXT CLASS FRAMES NO FRAMES

SUMMARY: INNER | FIELD | CONSTR | METHOD DETAIL: FIELD | CONSTR | METHOD

com.xlinkbase.ejb.RequestHandler Class RequestHandlerjava.lang.Object | +-- com.xlinkbase.ejb.XlinkbaseBean | +-- com.xlinkbase.ejb.RequestHandler.RequestHandler

All Implemented Interfaces: javax.ejb.EnterpriseBean, javax.ejb.MessageDrivenBean, javax.jms.MessageListener, java.io.Serializable

public class RequestHandlerextends XlinkbaseBeanimplements javax.ejb.MessageDrivenBean, javax.jms.MessageListener

This is an implemention of the XlinkbaseBean class. It’s a Routed Message Driven Beans used to doread xlx files from disk. This bean must be deployed on the computer where the xlx files are.

Diploma Thesis 2001.21Computer Engineering and Networks LaboratorySwiss Federal Institute of Technology, Zürich

See Also: Serialized Form

Fields inherited from class com.xlinkbase.ejb.XlinkbaseBean

DEBUG, ERROR, NOTE, WARNING

Constructor SummaryRequestHandler()

Method Summary void processMessage(java.lang.String[] attributes)

Implements the abstract method of the superclass XlinkbaseBean.

Page 58: Modellierungund Implementierung eines Message Flows in ...dret.net/netdret/docs/da-ss2001-meyer.pdfUnter den Begriffen Open Hypermedia System und Topic Maps ist man daran, das schon

Methods inherited from class com.xlinkbase.ejb.XlinkbaseBean

addCommand, addData , addData , ejbActivate , ejbCreate , ejbPassivate , ejbRemove , getAttributes , getData , getDataById , getHistory , getParser , getSerializedForm , log , log , messageContainsFrame , onMessage , readMessage , sendException , sendMessage , setLoglevel , setLogPrefix , setMessageDrivenContext , setupMessageFrame , showMessage

Methods inherited from class java.lang.Object

clone, equals, finalize, getClass, hashCode, notify, notifyAll,toString, wait, wait, wait

Methods inherited from interface javax.ejb.MessageDrivenBean

ejbRemove, setMessageDrivenContext

Methods inherited from interface javax.jms.MessageListener

onMessage

Constructor Detail

RequestHandlerpublic RequestHandler()

Method Detail

processMessagepublic void processMessage(java.lang.String[] attributes) throws XlinkbaseException

Implements the abstract method of the superclass XlinkbaseBean. It contains the Application Logic.Overrides:

processMessage in class XlinkbaseBean

Page 59: Modellierungund Implementierung eines Message Flows in ...dret.net/netdret/docs/da-ss2001-meyer.pdfUnter den Begriffen Open Hypermedia System und Topic Maps ist man daran, das schon

Following copied from class: com.xlinkbase.ejb.XlinkbaseBean Parameters:

attributes - optional attributes used for steering the beans work.See Also:

XlinkbaseBean.addCommand(String, String[])

Class Tree Deprecated Index Help PREV CLASS NEXT CLASS FRAMES NO FRAMES

SUMMARY: INNER | FIELD | CONSTR | METHOD DETAIL: FIELD | CONSTR | METHOD

Page 60: Modellierungund Implementierung eines Message Flows in ...dret.net/netdret/docs/da-ss2001-meyer.pdfUnter den Begriffen Open Hypermedia System und Topic Maps ist man daran, das schon

60 API Dokumentation

Page 61: Modellierungund Implementierung eines Message Flows in ...dret.net/netdret/docs/da-ss2001-meyer.pdfUnter den Begriffen Open Hypermedia System und Topic Maps ist man daran, das schon

Class Tree Deprecated Index Help PREV CLASS NEXT CLASS FRAMES NO FRAMES

SUMMARY: INNER | FIELD | CONSTR | METHOD DETAIL: FIELD | CONSTR | METHOD

com.xlinkbase.ejb.Monitor Class Monitorjava.lang.Object | +-- com.xlinkbase.ejb.XlinkbaseBean | +-- com.xlinkbase.ejb.Monitor.Monitor

All Implemented Interfaces: javax.ejb.EnterpriseBean, javax.ejb.MessageDrivenBean, javax.jms.MessageListener, java.io.Serializable

public class Monitorextends XlinkbaseBeanimplements javax.ejb.MessageDrivenBean, javax.jms.MessageListener

This is an implemention of the XlinkbaseBean class. It’s a Routed Message Driven Beans used to domonitor the history.

Diploma Thesis 2001.21Computer Engineering and Networks LaboratorySwiss Federal Institute of Technology, Zürich

See Also: Serialized Form

Fields inherited from class com.xlinkbase.ejb.XlinkbaseBean

DEBUG, ERROR, NOTE, WARNING

Constructor SummaryMonitor()

Method Summary void processMessage(java.lang.String[] attributes)

Implements the abstract method of the superclass XlinkbaseBean.

Page 62: Modellierungund Implementierung eines Message Flows in ...dret.net/netdret/docs/da-ss2001-meyer.pdfUnter den Begriffen Open Hypermedia System und Topic Maps ist man daran, das schon

Methods inherited from class com.xlinkbase.ejb.XlinkbaseBean

addCommand, addData , addData , ejbActivate , ejbCreate , ejbPassivate , ejbRemove , getAttributes , getData , getDataById , getHistory , getParser , getSerializedForm , log , log , messageContainsFrame , onMessage , readMessage , sendException , sendMessage , setLoglevel , setLogPrefix , setMessageDrivenContext , setupMessageFrame , showMessage

Methods inherited from class java.lang.Object

clone, equals, finalize, getClass, hashCode, notify, notifyAll,toString, wait, wait, wait

Methods inherited from interface javax.ejb.MessageDrivenBean

ejbRemove, setMessageDrivenContext

Methods inherited from interface javax.jms.MessageListener

onMessage

Constructor Detail

Monitorpublic Monitor()

Method Detail

processMessagepublic void processMessage(java.lang.String[] attributes) throws XlinkbaseException

Implements the abstract method of the superclass XlinkbaseBean. It contains the Application Logic.Overrides:

processMessage in class XlinkbaseBean

Page 63: Modellierungund Implementierung eines Message Flows in ...dret.net/netdret/docs/da-ss2001-meyer.pdfUnter den Begriffen Open Hypermedia System und Topic Maps ist man daran, das schon

Following copied from class: com.xlinkbase.ejb.XlinkbaseBean Parameters:

attributes - optional attributes used for steering the beans work.See Also:

XlinkbaseBean.addCommand(String, String[])

Class Tree Deprecated Index Help PREV CLASS NEXT CLASS FRAMES NO FRAMES

SUMMARY: INNER | FIELD | CONSTR | METHOD DETAIL: FIELD | CONSTR | METHOD

Page 64: Modellierungund Implementierung eines Message Flows in ...dret.net/netdret/docs/da-ss2001-meyer.pdfUnter den Begriffen Open Hypermedia System und Topic Maps ist man daran, das schon

64 API Dokumentation

Page 65: Modellierungund Implementierung eines Message Flows in ...dret.net/netdret/docs/da-ss2001-meyer.pdfUnter den Begriffen Open Hypermedia System und Topic Maps ist man daran, das schon

Anhang C

Zeitplan

����������� �

����� ������������������� �! �" �# �$ %'& %( %'% %') %'* %'+ %'! %'" %'# %'$ )'& )�

,�- . ������. /���� ��������� �����

0 �213. ��� � ��. - ��� ������45��6�. - ���

0 . ��� �'. - ���

0 . ��� �'. - ��� %

0 . ������. - ��� )

72��13. 8���9'/�:;����. �'. - ���

<>=@?�A�BDC�E

F�G H ��I �'H J�I I�����K���I��5K���LM�N5O G P���I�Q���G H J�P�RSG PT��G �VU(��I�R�W'P�R���I�X�I���Y ��Z'H �%'N5O G P���I�Q���G H J�P�RSG PT��G �VQ���P2[�H G R�H ��PT7�����K�P2��\ ��R�G ��P]'N 0 P�13X�G I���H G ��PT�'J�1��'P�����I ��PT^�I���Y ��Z'H G ��P

0 P�1_H �'\ \ ��H G ��P�LM�N5O G P�I G ��K�H J�P�RS����1�`2I Q���G H 13X�\ �'H a5��1%'N 0 P�13H ��\ \ ��H G ��PbJ�P��b�(��P2c G R'J�I���H G ��PT����1�`2X�X�\ G ����H G ��PTd���I e���I 1]'N 0 P�13H ��\ \ ��H G ��Pb����I O P�H f�G ��Z�\ J�P�R�1_J�:;R���Q�J�P�R

����P�a5��X�H G ��P2LM�N5g I ��Q��S8���c G P2G H G ��PT����1�h(��J�H G P�R'��\ R���I�G H K�:�J�1%'N5i ��1_H \ ��R'J�P�RS����I�a5Jbe���I f���P2����P�����PT7�����K�P���\ ��R'G ��P

0 H ��I �'H G ��P�131_��K�I�G H H � M�j�] LM�N 8k��c G P�G H G ��PT����I i ����H J�I ��1���G �SG Pb��G ��13��I�0 H ��I �'H G ��PTG :;X�\ ��:;��P�H G ��I H�fk��I ����PT13��\ \ ��P%'N 0 :�X�\ ��:���P�H �'H G ��P]'N 72��13H*'N 8k��Z'J�:;��P�H ��H G ��Pb����I�0 H ��I���H G ��P

72��1_H LM�N 0 P�H ��R�I �'H G ��P%'N5g ��13��:;H K���G H 13H ��13H

8k��Z�J�:;��P�H ��H G ��P�LM�N 0 P�H ��R�I �'H G ��PT����I�0 H ��I ��H G ��P�13����Z�J�:;��P�H ��H G ��P2��P%'N U(��I e���\ \ 13H W�P2��G R'J�P�R]'N ^�I W'13��P�H ��H G ��P

Page 66: Modellierungund Implementierung eines Message Flows in ...dret.net/netdret/docs/da-ss2001-meyer.pdfUnter den Begriffen Open Hypermedia System und Topic Maps ist man daran, das schon

66 Zeitplan

Page 67: Modellierungund Implementierung eines Message Flows in ...dret.net/netdret/docs/da-ss2001-meyer.pdfUnter den Begriffen Open Hypermedia System und Topic Maps ist man daran, das schon

Literatur verzeichnis

Grundlagen

[1] YvesLangisch,AnbindungeinesLink-Management-SystemsaneinenWeb-Server;Diplomarbeit,DA-2001.13,TIK, ETHZ

[2] David LoweandErik Wilde, ImprovingWebLinkingUsingXLink;http://dret.net/netdret/docs/OpenPublish2001.pdf

[3] Erik Wilde, Wilde’sWWWglossary;http://wildesweb.com/glossary/

Programmierhandbücher

[4] StephenAsbury, ScottR. Weiner, DevelopingJavaEnterpriseApplications;JohnWiley & Sons;ISBN: 0471327565

[5] Ed Roman,MasteringEnterpriseJavaBeansand the Java 2 Platform, EnterpriseEdition;JohnWiley & Sons;ISBN: 0471332291

[6] RichardMonson-Haefel,EnterpriseJavabeans;O’Reilly & Associates;ISBN: 1565928695

Spezifikationen

[7] Sun MicrosystemsInc., EnterpriseJavaBeanSpecification,Version 2.0, ProposedFinal Draft 2;http://java.sun.com/products/ejb/docs.html

[8] SunMicrosystemsInc., Java2 PlatformEnterpriseEdition Specification,v1.3,Pro-posedFinal Draft 4;http://java.sun.com/j2ee/download.html#platformspec

WeblogicServer Dokumentation

[9] BEA Systems,Inc.,BEAWebLogic ServerRelease6.0Documentation;http://edocs.bea.com/wls/docs60/

[10] BEA Systems,Inc.,ProgrammingWebLogic EnterpriseJavaBeans;http://edocs.bea.com/wls/docs60/ejb

Page 68: Modellierungund Implementierung eines Message Flows in ...dret.net/netdret/docs/da-ss2001-meyer.pdfUnter den Begriffen Open Hypermedia System und Topic Maps ist man daran, das schon

68 LITERA TURVERZEICHNIS

[11] BEA Systems,Inc.,ProgrammingWebLogic JMS;http://e-docs.bea.com/wls/docs60/jms/

JBossServer Dokumentation

[12] JBossOrganization,JBoss- WORLD CLASSJ2EE TECHNOLOGIESIN OPENSOURCE;http://www.jboss.org/

[13] JBossOrganization,JBoss2.1+ documentation;http://jboss.org/documentation/HTML/index.html

API Dokumentationen

[14] TheApacheSoftwareFoundation,Xerces1.3.1API;http://xml.apache.org/apiDocs/

[15] SunMicrosystemsInc., JavaMessage Service(TM)1.0.2API Specification;http://java.sun.com/products/jms/javadoc-102a/

[16] SunMicrosystemsInc., EnterpriseJavaBeansAPI, v2.0pfd2;http://java.sun.com/products/ejb/javadoc-2_0-pfd2/

Tutorials und FAQs

[17] SunMicrosystemsInc., JavaTMMessageServiceTutorial, 1.3BetaRelease;http://java.sun.com/products/jms/tutorial/html/jmsTOC.fm.html

[18] jGuru.com,FAQ Entriesin EJB;http://www.jguru.com/faq/subtopic.jsp?topicID=328&page=1

[19] BorlandSoftwareCorporation,BorlandAppserver4.5FAQ;http://www.borland.com/devsupport/appserver/faq/45/

[20] JoshuaFox, Whenis a singletonnot a singleton?;http://www.javaworld.com/jw-01-2001/jw-0112-singleton.html

[21] RichardMonson-Haefel,Createforward-compatiblebeansin EJB;http://www.javaworld.com/javaworld/jw-12-1999/jw-12-ssj-ejb1.html