Ñо¿ÏîÄ¿: JBoss¼Ü¹¹·ÖÎö
Jenny Liu
School of Information
Technologies
University of Sydney
jennyliu@cs.usyd.edu.au
Îõ¿É¼¯ÍŠϵͳ·ÖÎöÔ±:Àî½£»ª·Òë
huihoo.org AllenÕûÀí,ÖÆ×÷
English
ÕªÒª
JBossÊÇÒ»¸öÃâ·ÑµÄ¿ª·ÅµÄJ2EEʵÏÖ¡£ËüµÄ¼Ü¹¹ÊÇ»ùÓڸ߱ê×¼µÄÄ£¿é»¯ºÍ²åÈëʽÉè¼Æ¡£JBossʹÓù¤Òµ±ê×¼µÄJMXÀ´¹ÜÀí£¬
JBoss×é¼þºÍΪEJBÌṩ·þÎñ¡£»ùÓÚÎÒÃÇÒÔǰµÄ¿ª·¢¾Ñ飬ÎÒÃÇ·¢ÏÖÁ˲»Í¬µÄJ2EEÓ¦Ó÷þÎñÆ÷¼äµÄ´æÔÚמ޴óµÄÐÔÄܺͿÉÀ©Õ¹ÐÔ²îÒì¡£
ÎÒÃÇÏàÐżܹ¹µÄÉè¼ÆÊǾö¶¨ÀàËÆÓÚÐÔÄܺͿÉÀ©Õ¹ÐÔµÈÖÊÁ¿Ö¸±êµÄÖØÒªÒòËØ¡£
·ÖÎöºÍÕ¹ÏÖJBoss¼Ü¹¹Ä£ÐÍÓÐÖúÓÚÎÒÃÇÁ˽âÆäÄÚ²¿ÐÐΪ²¢°ïÖúÎÒÃÇ´´½¨Ò»¸ö¾«È·µÄ×îÖÕÐÔÄÜÄ£ÐÍ¡£
ÔÚÕâ¸öÏîÄ¿ÖУ¬ÎÒÃÇ·ÖÎöJBossÓ¦Ó÷þÎñÆ÷¼Ü¹¹µÄËĸöÌØÊⲿ·Ö£¬JBoss EJB ÈÝÆ÷¡¢JBossNS¡¢JBossTXÒÔ¼°JBossCMP£¬
Äæ×ª¹¤³Ì¹¤¾ßÄÜʹÎÒÃÇͨ¹ýÔ´´úÂëÀ´·Ö½â×é¼þ/×Óϵͳ¡£ÎÞÂÛÊÇÈý¸öJBoss×ÓϵͳµÄ¸ÅÄîÄ£ÐÍ»òʵ¼ÊÄ£ÐͶ¼½«±»ÎÒÃÇÓÃÀ´ÌÖÂÛJBoss
¼Ü¹¹Ä£¿éÉè¼Æ·ç¸ñ¡£
Table of Content
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
ͼʾÁбí
- Figure 1-1 JBoss×ÜÌå¸ÅÄîÄ£ÐÍ
- Figure 2-1 JMX²ã´ÎÄ£ÐÍ
- Figure 3-1 ÈÝÆ÷¸ÅÄî¼Ü¹¹Ä£ÐÍ
- Figure 3-2 À¹½ØÆ÷µ÷ÓÃ'Pipe'
- Figure 3-3 JBossÃüÃû·þÎñ¸ÅÄîÄ£ÐÍ
Services Conceptual Model
- Figure 3-4 JBoss CMP·þÎñ¸ÅÄîÄ£ÐÍ
- Figure 3-5 JBossTx¸ÅÄî¼Ü¹¹Ä£ÐÍ
- Figure
4-1 ÈÝÆ÷Ï໥ÒÀÀµÍ¼
- Figure 4-2 JBossÃüÃû·þÎñ¸ÅÄîÄ£ÐÍ
- Figure
4-3 ·½·¨µ÷ÓÃÏûϢͼ
- Figure 4-4 ʵÌåBeanÈÝÆ÷¸ÅÄî¼Ü¹¹Ä£ÐÍ
- Figure 4-5 ¿Í»§¶ËºÍEJBÈÝÆ÷µÄ½»»¥Í¼
- Figure 4-6
JBossCMPÒÀÀµÓë¼Ì³Ðͼand Inherency Diagram
- Figure 4-7 JBossCMP¸ÅÄîÄ£ÐÍ
- Figure 4-8
JBossTxÒÀÀµÓë¼Ì³Ðͼ
- Figure Appendix-1
StatelessSessionContainer¸ÅÄî¼Ü¹¹Ä£ÐÍ Concrete Architectual Model
- Figure Appendix-2
StatefulSessionContainer¸ÅÄî¼Ü¹¹Ä£ÐÍ Concrete Architectual Model
- Figure Appendix-3 A COTS EJBÈÝÆ÷¸ÅÄî¼Ü¹¹Ä£ÐÍ
Conceptual Architecture Model
1. ½éÉÜ
1.1 JBossÊÇʲô?
JBossÊÇÃâ·ÑµÄ£¬¿ª·ÅÔ´´úÂëJ2EEµÄʵÏÖ£¬Ëüͨ¹ýLGPLÐí¿ÉÖ¤½øÐз¢²¼¡£ËüÌṩÁË»ù±¾µÄEJBÈÝÆ÷ÒÔ¼°EJB(ºÃÏñÓ¦¸ÃÊÇJ2EE)·þÎñ£¬
ÀýÈ磺Êý¾Ý¿â·ÃÎÊJDBC¡¢½»Ò×(JTA/JTS)¡¢ÏûÏ¢»úÖÆ(JTS)¡¢ÃüÃû»úÖÆ(JNDI)ºÍ¹ÜÀíÖ§³Ö(JMX)¡£Ä¿Ç°µÄJBoss·¢²¼°æ2.2.4ʵÏÖÁËEJB
1.1ºÍ²¿·ÖEJB 2.0µÄ±ê×¼¡¢JMS 1.0.1¡¢Servlet 2.2¡¢JSP 1.1¡¢JMX 1.0¡¢JNDI 1.0¡¢JDBC 1.2ºÍ2.0À©³ä(Ö§³ÖÁ¬½Ó³Ø
(Connection Polling))¡¢JavaMail/JAF¡¢JTA 1.0ºÍJAAS 1.0±ê×¼£¬JBossÊÇ100%´¿JavaʵÏÖÄÜÔËÐÐÓÚÈÎºÎÆ½Ì¨¡£
1.2 ¶¯»ú
Õâ¸öÏîÄ¿µÄ¶¯»úÊÇÎÒÃÇÏë·ÖÎöÒ»ÏÂÖмä¼þ»ù´¡ÏµÍ³µÄÐÔÄÜ¡£»ùÓÚÎÒÃÇÒÔǰµÄ¿ª·¢¾Ñ飬
ÎÒÃÇÖªµÀ²»Í¬J2EEÓ¦Ó÷þÎñÆ÷ÔÚÐÔÄܺͿÉÀ©Õ¹ÐÔ·½ÃæÓÐ׿«´óµÄ²îÒ죬²¢ÇÒÏàÐżܹ¹µÄÉè¼ÆÊǾö¶¨ÀàËÆÓÚÐÔÄܺͿÉÀ©Õ¹ÐÔµÈÖÊÁ¿
Ö¸±êµÄÖØÒªÒòËØ£¬ÎÒÃÇÏëͨ¹ý·ÖÎöÕâ¸öϵͳÀ´Á˽â¼Ü¹¹Éè¼Æ¾¿¾¹¶ÔÓÚÐÔÄܺͿÉÀ©Õ¹ÐÔ¾ßÓÐ×ÅÔõÑùµÄÓ°Ïì¡£ÎÞÂÛ¸ÅÄîÐÔÄ£Ð͵ľÖÏÞÐÔ
»òʵ¼ÊÄ£ÐÍÖжÔÓÚϵͳÔËÐÐÆÚÐÐΪµÄReflect(·´Éä»úÖÆ)Ó¦Óã¬ËûÃÇ»¹ÊÇÄÜÌṩ¸øÎÒÃÇÒ»¸ö¶ÔÓÚÕû¸öϵͳµÄÈ«Ãæ¼Ü¹¹µÄÁ˽âµÄÊÓµã
ºÍ·ûºÏ»ù±¾¾³¿öµÄ·ÖÎöÄ£Ð͵Ĺ¹½¨µÄǰÌá¡£
1.3 ·½·¨ÂÛ
´óÐÍÈí¼þϵͳµÄ¼Ü¹¹·ÖÎö¿ÉÒÔ·ÖΪÁ½¸ö²ãÃæ£º¸ÅÄîÐԼܹ¹ºÍʵ¼Ê¼Ü¹¹¡£¸ÅÄîÐԼܹ¹
ͨ¹ý½«×ÓϵͳµÄ"À¦°óʽ"·ÖÎöºÍ×Óϵͳ¼äµÄ·ÖÎöÃèÊöÁËÕâ¸öϵͳµÄ¼Ü¹¹¡£Ã¿Ò»¸ö×Óϵͳ¾ßÓÐÇåÎúµÄÓÐÒâÒåµÄ·½·¨ºÍËûÃǰüº¬ÁËÕû¸ö
ϵͳµÄÌØÊâµÄ¼Ü¹¹·ç¸ñ¡£Êµ¼Ê¼Ü¹¹ºÍ¸ÅÄîÐԼܹ¹±ÈÆðÀ´¾ßÓнÏÉٵIJã´Î¹ØÏµ¡£Ëü±íÊöÁËʵ¼ÊµÄ±à³Ì¹æ»®/Ä£Ð͵Äʵ¼ÊÌåÏÖ£¬ËüºÍÏëÏó
µÄ¸ÅÄîÐԼܹ¹Óкܶ಻ͬ¡£ÔÚÕâ¸öÏîÄ¿ÖУ¬ÎÒÃǽ«JBossµÄ¸ÅÄîÐԼܹ¹ºÍʵ¼Ê¼Ü¹¹½øÐÐÁ˷ָÏëÏóµÄ¸ÅÄîÐԼܹ¹Ä£ÐÍͨ¹ý²Î¿¼
×ÊÁÏÀ´·Ö¸îºÍ»ñµÃ£¬ÎÒÃÇ×Ô¼ºµÄ¾ÑéÀ´×ÔÅäÖÃÓ¦ÓÃϵͳºÍJBossµÄÔÚÏßÂÛ̳¡£ÑÛÏ£¬ÎÒÃÇÏȹØÐÄÒ»ÏÂÿ¸ö×é¼þÔÚÄ£¿é²ãÃæÉϵÄ
¹¦ÄÜÐÔ£¬ËûÃDZ˴˲»Ïà¹Ø¡£Êµ¼Ê¼Ü¹¹Ä£ÐÍÊÇ×ۺϵġ£ÎÒÃÇʹÓÃÄæ×ª¹¤³Ì¹¤¾ßTogether 5.5ÒÔ±ãÓÚ½«Ô´´úÂë·×ª³ÉΪÀà(class)ͼºÍ
ÐòÁÐ(sequence)ͼ²¢Ê¹ËûÃÇÔÚÒ»¸ö×ÓϵͳģÐÍÖÐ×ۺϡ£Together 5.5Ö§³ÖÓ¦ÓÃÉè¼Æ£¬ÊµÊ©£¬ÅäÖúÍJBossµÄÄæ×ª¹¤³Ì¡£Ëü¿ÉÒÔ
ͨ¹ýJavaÎļþºÍclassÎļþÀ´»ñµÃÀàͼ¡£¸üÉîÒ»²ã£¬ÎÒÃÇͨ¹ýʹÓÃTogetherÑ¡ÔñÏàÓ¦µÄÌØÊâµÄ·½·¨À´»ñµÃÐòÁÐͼ¡£
ÓÐÁ½¸ö¹¤¾ß¿ÉÒÔ°ïÖúÎÒÃÇÀ´Á˽â×é¼þÐÐΪ£¬×îÖÕʵ¼ÊÄ£Ðͺ͸ÅÄîÐÔÄ£Ð͵ıȽϡ£ÔÚʵ¼ÊÄ£ÐÍÖÐÒÔÍâµÄÄ£¿é¡¢×é¼þºÍÆäËü²¿·ÖÒ²
½«±»ÌÖÂÛ¡£
1.4 ×éÖ¯
Õâ·Ý±¨¸æ½«°´ÕÕÒÔÏ´ÎÐò½øÐÐ×éÖ¯£ºµÚ¶þ²¿·Ö½«½éÉÜJBoss¼Ü¹¹µÄÕûÌåÉè¼ÆºÍÖ÷ÒªµÄ×é¼þ¡£
µÚÈý²¿·ÖÌÖÂÛJBoss×ÓϵͳµÄ¸ÅÄîÐÔÄ£ÐÍ£¬¼´£ºÈÝÆ÷¿ò¼ÜºÍËüµÄ²å¼þ¡£JBossÃüÃû·þÎñ(JNDI)£¬JBossÈÝÆ÷³Ö¾ÃÐÔ¹ÜÀí(CMP)ºÍJBoss
½»Ò×·þÎñ¡£µÚËIJ¿·Ö£¬ÎÒÃǽ«ÍÚ¾òJBoss×ÓϵͳµÄʵ¼ÊÄ£Ðͺͱ»Ìá¼°µÄ×é¼þ¼äµÄÏàÓ¦Îȹ̵ĹØÏµ¡£µÚÎ岿·Ö£¬ÎÒÃÇÀ´ÆÀ¼ÛÒ»ÏÂJBoss
µÄ¼Ü¹¹·ç¸ñºÍÔÚÐÔÄÜ¡¢¿É¸ü¸ÄÐÔ¡¢¿ÉÀ©Õ¹ÐÔµÈһϵÁÐÖÊÁ¿Ö¸±êÉϵıíÏÖ¡£ÔÚµÚÁù²¿·ÖÎÒÃǽ«ÌÖÂÛÎÒÃǽ«À´µÄ¹¤×÷ºÍÌá³öÎÒÃDZ¨¸æµÄ
×îÖÕ½áÂÛ¡£
2. 2. JBoss ·þÎñÆ÷¼Ü¹¹¸ÅÊö
JBossµÄ¹¹¼ÜºÍÆäËûJ2EEÓ¦Ó÷þÎñÆ÷µÄ¹¹¼ÜÓÐמ޴óµÄ²»Í¬¡£JBossµÄÄ£¿é¼Ü¹¹Êǽ¨Á¢ÔÚJMXµ×²ãÉϵģ¬
ÏÂͼչÏÖÁËJBossÖ÷Òª×é¼þºÍJMXµÄÁªÏµ¡£
Figure 1-1 Overall JBoss Conceptual Model
2.1 JMX - ²ã´Î
JMXÊÇÒ»¸ö¿É¸´Óÿò¼Ü£¬ËüΪԶ³Ì(Remote)ºÍ±¾µØ(Local)¹ÜÀí¹¤¾ßÀ©Õ¹ÁËÓ¦Óá£ËüµÄ¼Ü¹¹ÊDzãʽ¼Ü¹¹¡£
ËûÃÇÊÇʵÏÖ²ã(instrumentation layer)¡¢´úÀí²ã(agent layer)ºÍ·¢²¼²ã(distribution layer)¡£ÆäÖУ¬
·¢²¼²ã»¹ÔڵȴýδÀ´µÄ±ê×¼»¯¡£¼òÒªµÄ±íÊöÊÇ£¬Óû§Ê¹ÓùÜÀíBean£¬MBeanÀ´Ìṩ»ñµÃÏàÓ¦×ÊÔ´µÄʵÏÖ·½·¨¡£
ʵÏÖ²ãʵÏÖÏà¹ØµÄÌØÐÔ×ÊÔ´²¢½«Ëü·¢²¼ÓÚJMXÏà¹ØÓ¦ÓÃÖУ¬ËüµÄ´úÀí²ã¿ØÖƺͷ¢²¼ÏàÓ¦µÄ×¢²áÔÚMBeanServer´úÀíÉϵĹÜÀí×ÊÔ´¡£.
Figure 2-1 JMX²ã´ÎÄ£ÐÍ
2.2 JBossÖ÷Ҫģ¿é
Ö÷ÒªµÄJBossÄ£¿éÊÇÔÚMeanServerÉϵĿɹÜÀíMBean¡£
[2].
1.JBoss EJBÈÝÆ÷ÊÇJBoss·þÎñÆ÷µÄºËÐÄʵÏÖ¡£ËüÓÐÁ½¸öÌØÐÔ£¬µÚÒ»ÊÇÔÚÔËÐÐÆÚ²úÉúEJB ¶ÔÏóµÄStubºÍSkeletonÀ࣬µÚ¶þÊÇÖ§³ÖÈȲ¿Êð¡£
2.JBossNSÊÇJBossÃüÃû·þÎñÓÃÀ´¶¨Î»¶ÔÏóºÍ×ÊÔ´¡£ËüʵÏÖÁËJNDI J2EE¹æ·¶.
3.JBossTX ÊÇÓÉJTA/JTSÖ§³ÖµÄ½»Ò×¹ÜÀí¿ØÖÆ.
4.²¿Êð·þÎñÖ§³ÖEJB(jar)¡¢WebÓ¦ÓÃÎĵµ(war)ºÍÆóÒµ¼¶Ó¦ÓÃÎĵµ(ears)µÄ²¿Êð¡£Ëü»áʱ¿Ì¹ØÐÄJ2EEÓ¦ÓõÄURLÇé¿ö£¬Ò»µ©ËüÃDZ»¸Ä±ä»ò³öÏÖµÄʱºò½«×Ô¶¯²¿Êð¡£
5.JBossMQʹJava ÏûÏ¢¹æ·¶(JMS)µÄʵÏÖ¡£
6.JBossSXÖ§³Ö»ùÓÚJAASµÄ»ò²»Ö§³ÖJAAS»úÖÆµÄ°²È«ÊµÏÖ¡£
7.JBossCXʵÏÖÁ˲¿·ÖJCAµÄ¹¦ÄÜ¡£JCAÖÆ¶©ÁËJ2EEÓ¦ÓÃ×é¼þÈçºÎ·ÃÎÊ»ùÓÚÁ¬½ÓµÄ×ÊÔ´¡£
8.Web·þÎñÆ÷Ö§³ÖWebÈÝÆ÷ºÍServletÒýÇæ¡£JBoss 2.4.x°æ±¾Ö§³ÖTomcat 4.0.1£¬Tomcat 3.23ºÍJetty 3.x·þÎñ.
2.3 ËûÃÇÊÇÈçºÎ¹¤×÷µÄ?
µ±JBoss±»Æô¶¯£¬ËüµÄµÚÒ»²½ÊÇ´´½¨Ò»¸öMBean·þÎñÆ÷µÄʵÀý¡£Ò»¸ö»ùÓÚ¹ÜÀí»úÖÆµÄMBean×é¼þͨ¹ýÔÚMean ServerÖеÄ×¢²á¶ø±»
²åÈëJBossÖС£JBossʵÏÖÁ˶¯Ì¬Àà×°ÔØ M-Let ·þÎñ£¬ËüÊÇ´úÀí·þÎñ£¬M-letÔÊÐíMBean±»×¢²áµ½MBean·þÎñÆ÷ÉÏ¡£Í¨¹ý»ùÓÚÎı¾Îļþ
µÄÅäÖÃÎļþÖеÄÅäÖã¬ÏàÓ¦MBean½«±»×°ÔØ¡£
JMX MBean·þÎñÆ÷ʵ¼ÊÉϱ¾Éí²¢Ã»ÓÐʵÏֺܶ๦ÄÜ¡£ËüµÄ¹¤×÷ÀàËÆÓÚÒ»¸öMBeanÖÐÁªÏµµÄ΢ºË¾ÛºÏ×é¼þ£¬Í¨¹ýMbeansÈ¡´úJMX MBean
·þÎñÆðÀ´ÌṩÏàÓ¦µÄ¹¦ÄÜ£¬»»¶øÑÔÖ®£¬ÕæÕýÆð×÷ÓõÄÊÇMBean¡£JBossµÄÕûÌå¼Ü¹¹²¢²»ÊÇÒÀÑGarlanºÍShawÎļþÖеļܹ¹·ç¸ñÑϸñ·Ö
ÀàµÄ£¬´úÌæËüµÄÊÇÒ»¸ö×é¼þ²åÈëʽµÄ¿ò¼Ü¡£MBeanµÄ½Ó¿ÚÊÇÒ»¸öÁ¬½ÓÆ÷¡£
ÔÚÕâ·â±¨¸æµÄÓàϲ¿·Ö£¬ÎÒÃÇÑ¡ÔñÁËJBoss¼Ü¹¹ÖеÄJBoss EJBÈÝÆ÷¡¢JBossNS¡¢JBossTXºÍJBossCMP×ÓϵͳÀ´¼ÓÒÔѧϰ¡£
ËäÈ»JBossCMP£¬ÊµÌåBeanµÄÈÝÆ÷¹ÜÀí³Ö¾Ã²ãÊÇÈÝÆ÷¼Ü¹¹µÄÒ»²¿·Ö£¬µ«ÎÒÃÇ»¹Êǽ«Ëü·Ö¿ªÌÖÂÛ£¬ÒòΪËûÃÇÓÐ×Ô¼ºµÄ¹¹¼Ü¡£
ÎÒÃÇÖ»ÔÚÕâ¸öÏîÄ¿ÖнéÉÜÈý¸ö²¿·ÖÊÇÒòΪËüÃÇÊÇÎÒÃǹØÐĵÄJBossÓ¦Ó÷þÎñÆ÷µÄÐÔÄÜÎÊÌâµÄ¹Ø¼üµã¡£
ÔÚÕâ¸öÏîÄ¿ÖÐÎÒÃÇʹÓõķ½·¨Ñ§¿ÉÒÔÀ©Õ¹µ½¸ü¶àÓÐÓõÄ×ÓϵͳµÄѧϰÖÐÈ¥¡£
3. ¸ÅÄî¼Ü¹¹Ä£ÐÍ
3.1 ÈÝÆ÷µÄ¸ÅÄîÐԼܹ¹Ä£ÐÍ - ²åÈëʽ
JBoss EJBÈÝÆ÷ÊÇJBoss·þÎñÆ÷µÄºËÐÄʵÏÖ¡£Í¼3-1չʾÁËEJBÈÝÆ÷µÄ¸ÅÄîÐÔÄ£ÐÍ¡£ÎÒÃÇ·¢ÏÖJBossÈÝÆ÷µÄ¼Ü¹¹²¢
²»ÊÇÒ»¸öÑϸñÒâÒåÉϵIJ㣬¾ö´ó¶àÊýµÄ¶ÀÁ¢¼þÊÇË«Ïò¹ÜÀí£¬ÈÝÆ÷ÒÀÀµÓÚ¸ü¶àµÄµÍ²ã´Î×é¼þ¡£Êµ¼ÊÉÏ£¬ÈÝÆ÷ºÍËüµÄ²å¼þ¡¢
ʵÀý³Ø(instance pool)¡¢ÊµÀý»º´æ(instance cache)¡¢À¹½ØÆ÷¡¢ÊµÌå³Ö¾Ã¹ÜÀí¡¢ÓÐ״̬»á»°³Ö¾Ã¹ÜÀí£¬¶¼ÊÇ»ùÓÚ²åÈëʽ¿ò¼ÜÀ´
ÎªÌØ¶¨µÄEJBÌṩÏàÓ¦µÄEJB·þÎñ¡£
Figure 3-1 Container Conceptual Architecture Model
3.1.1 Ö÷ÒªµÄ×é¼þºÍ½Ó¿Ú
¿Í»§¶Ë²»¿ÉÒÔÖ±½Ó·ÃÎÊEJBʵÀý¶øÊÇҪͨ¹ýHome(EJBHome)ºÍÈÝÆ÷ÌṩµÄÔ¶³Ì¶ÔÏó (EJB Object) ½Ó¿Ú¡£ContainerÀàÊÇÒÀѿͻ§
¶ËµÄµ÷ÓÃÀ´ÌṩBeanʵÀý²¢ÊµÏÖ²Ù×÷¡£ContainerÀàµÄÔðÈÎÀ´ÊµÏÖ²å¼þµÄ½»»¥£¬Îª²å¼þÌṩÐÅÏ¢À´ÊµÏÖ²Ù×÷²¢¹ÜÀíBeanµÄÉúÃüÖÜÆÚ¡£ContainerÀàÓÐËĸö×ÓÀà(ËÄÖÖBeanµÄÀàÐÍ)£¬·Ö±ðÊÇ£ºStatelessSessionContainer¡¢StatefulSessionContrainer¡¢EntityContainerºÍMessageDrivenContainer¡£ËüÃÇÊÇÓÉContainerFactoryͨ¹ýÏàÓ¦µÄBeanÀàÐÍÔÚ²¿ÊðÆÚÖб»´´½¨ºÍ³õʼ»¯µÄ¡£
ContainerFactory±»ÓÃÀ´´´½¨EJBÈÝÆ÷ºÍÔÚÈÝÆ÷Öв¿ÊðÏàÓ¦µÄEJB¡£ContainerFactory ±»×÷Ϊһ¸öMBeanʵÏÖ¡£ÕâÒâζ×ÅJBoss·þÎñ
Æ÷Æô¶¯µÄʱºòÆäÏàÓ¦µÄ·þÎñÒ²±»Æô¶¯¡£Ëü»á¶ÔEJB-jarµÄXML¶¨ÒåÎļþ»ñµÃÏàÓ¦µÄURL¡£ContainerFactoryʹÓÃEJB-jar XMLÖеÄÔªÊý
¾Ý²úÉúÒ»¸öÈÝÆ÷ʵÀý²¢Ê¹ËûÃÇ´¦Óڿɱ»µ÷ÓÃ״̬£¬ÔÚ²¿ÊðÆÚÖУ¬ContainerFactoryµÄ¹¦ÄܰüÀ¨£º
- ͨ¹ýÔÚ²¿ÊðÃèÊöÎļþÖеÄEJBÀàÐÍÀ´´´½¨ContainerÀàµÄ×ÓÀ࣬¼´Ëĸö×ÓÀàÖеÄÒ»¸ö¡£
- ͨ¹ýjboss.xmlºÍstandardjboss.htmlÎļþ´´½¨ÈÝÆ÷ÊôÐÔ¡£
- ͨ¹ý¶¨ÒåÔÚstandardjboss.htmlÎļþÖеÄÄÚÈÝ´´½¨ºÍÌí¼ÓÈÝÆ÷À¹½ØÆ÷¡£
- ʹÓÃÓ¦ÓöÔÏóÀ´ÁªÏµÏàÓ¦µÄÈÝÆ÷¡£
ContainerInvoker ÊÇÒ»¸öJava RMI ·þÎñÆ÷¶ÔÏó¡£ÕýÈçËûÃû×ÖËù±íÊöµÄ£¬ContainerInvoker ͨ¹ý¿Í»§¶ËµÄÇëÇó
(request)·½·¨À´µ÷ÓÃÏàÓ¦µÄÈÝÆ÷¡£¿ÉÒÔ¿´×÷¿Í»§¶ËÇëÇóºÍÈÝÆ÷¼äµÄ½Ó¿Ú£¬ËüÀûÓÃRMIÀ´»ñµÃ×ÔÉíµÄÓÐЧµ÷Óã¬ÎÞÂÛÕâ¸öµ÷ÓÃÀ´×Ô
ÆäËûJVMÉϵÄÔ¶³Ì¿Í»§»òÊÇÀ´×ÔͬһJVMÉÏͬһEJBÓ¦ÓÃµÄÆäËûBean¡£ContainerInvoker¹¤×÷ÔÚͨѶ²ãÃæÉÏ£¬Í¨¹ýÌØÊâÐÒé½øÐÐͨѶ¡£Èç¹ûÏëÔÚJBoss·þÎñÆ÷ÉÏʵÏÖеÄÐÒ飬µÚÒ»ÊÇÐèÒªÌṩһ¸ö¸ÃÐÒéµÄContainerInvokerʵÏÖ¡£JBoss ͨѶ²ã»Ø¸´ÊÇͨ¹ýSun RMIµÄJRMP£¬ContainerInvokerµÄRMI°æ±¾ÊÇJRMContainerInvoker¡£Ò»¸öContainerInvokerÔÚEJBÖÐʵÏÖ·Ö¸îÏàÓ¦µÄͨѶÐÒ飬ÕâÖÖÉè¼ÆÔö¼ÓÁËϵͳµÄ¿É¸ü¸ÄÐÔ¡£JBoss EJBÈÝÆ÷ÖÐËùʹÓõÄÐÒé¿ÉÒÔÔÚÏàÓ¦µÄ·þÎñÆ÷ÅäÖÃÎļþÖж¨Òå¡£
EJB¶ÔÏóʵÀý±»·ÅÈëInstancePoolÖÐÒÔ¼õÉÙÔÚÔËÐÐÆÚÖд´½¨ËüÃǵĿªÏú¡£ÔÚInstance PoolÖеÄʵÀý²»ÄÜºÍÆäËûµÄEJB¶ÔÏó½»Á÷£¬
ËüÃÇÓÉInstance PoolÀ´¹ÜÀí¡£
ÓÐ״̬»á»°BeanºÍʵÌåBeanʵÀý½«±»»º´æ»¯£¬ÔÚÉúÃüÖÜÆÚÖÐËüÃÇÓµÓÐÏàÓ¦µÄ״̬¡£Ò»¸ö»º´æÊµÀýͨ¹ýʵÀý³Ø»ñµÃ£¬
ËûÃǺÍÌØÊâµÄ¶ÔÏóÏà¹ØÁª²¢¾ßÓÐÏàÓ¦µÄ±êʾ¡£Æä״̬ÓÉInstanceCache¿ØÖÆ£¬ÀýÈçÔÚ»º´æÖеÄʵÀý״̬ºÍµÚ¶þ·½´æ´¢½éÖÊÖеĶÔÏó
µÄͬ²½¡£
EntityPersistenceManager ¶ÔÓÚʵÌåBeanµÄ³Ö¾ÃÐÔÆð×÷Óá£
StatefulSessionPersistenceManager ¶ÔÓÚÓÐ״̬»á»°BeanµÄ³Ö¾ÃÐÔÆð×÷Óá£
À¹½ØÆ÷ͨ¹ýÈÝÆ÷»ñµÃÏàÓ¦µÄ·½·¨µ÷Óá£ÔÚÈÝÆ÷ÅäÖÃÎļþ standardjboss.htmlÖУ¬±»·½·¨µ÷ÓõÄÀ¹½ØÆ÷±ØÐë±»ÒÀ´Î¶¨ÒåÔÚ
ÆäÖС£Í¼3-2չʾÁËͨ¹ýÀ¹½ØÆ÷µÄ·½·¨µ÷ÓõÄÂß¼Ö´ÐÐ˳Ðò¡£
ͼ3-2 ͨ¹ýÀ¹½ØÆ÷¹ÜµÀµÄ·½·¨µ÷ÓÃ
Õâ¸öÉè¼Æ×ñÑÁËDavid GarlanºÍMary ShawµÄ"¹ÜµÀºÍ¹ýÂË"("pipe and filter")¼Ü¹¹¶¨Ò壬Ôڴ˶¨ÒåµÄ¹ýÂËÔÐÍÊÇÒ»¸ö×é¼þ£¬
Æä°üÀ¨ÁËÊý¾ÝÁ÷ºÍÀàËÆÓÚÊä³ö×ÜÊÇ·¢ÉúÔÚÊäÈëÁ÷±»ÍêÈ«¶Áȡ֮ºóµÈ·½ÃæµÄ¼ÆËãÊä³öµÄÔöÇ¿£¬À¹½ØÆ÷ÊǹýÂËÆ÷¶ø·½·¨µ÷ÓÃÊÇÁ¬ÐøÀ¹½Ø
Æ÷ÖеÄÁ¬½ÓÆ÷¡£À¹½ØÆ÷ÊÇÕû¸ö¹¹¼ÜÖеÄÓÅÊÆ²¿·Ö£º
- ËüÄܹ»ÖªµÀÿһ¸ö½×¶Î¹ÜµÀµÄÐÐΪ¡£
- Ëüͨ¹ýÄ£¿éÀ´Ö§³ÖÖØÓúÍÀ©Õ¹£¬²»Í¬À¹½ØÆ÷Ö®¼ä¾ßÓÐÃ÷ÏÔµÄÒ»¸ö¹¦ÄÜÐÔÇø±ð¡£Ìí¼ÓÒ»¸öеÄÀ¹½ØÆ÷£¬µÚÒ»ÊÇÐèҪʵÏÖÀ¹½Ø
Æ÷µÄ½Ó¿Ú²¢½«Ëû¶¨Òåµ½ÏàÓ¦µÄÈÝÆ÷ÅäÖÃÎļþÖÐ
- Ö§³Öͬ²½.
- ¾ßÓпìËÙµÄÈÝ´íÓïÒå±íÊö.Èç¹ûÔÚÀ¹½ØÆ÷´¦ÀíÖвúÉú´íÎó»òÎ¥Àý,¾Í»á³öÏÖÏàÓ¦±íÊö¡£
3.1.2 ÒÀÀµÐÔ
±¾ÖÊÉÏ, InstancePool, InstanceCache,
EntityPersistenceManager, StatefulSessionPersistenceManager, ¶¼ÊÇÈÝÆ÷²å¼þµÄ½Ó¿Ú¡£
ÈÝÆ÷µÄ²å¼þÊÇÕâЩ½Ó¿ÚµÄʵÏÖ¶ÔÏóµÄ¼¯ºÏ¡£JBossÈÝÆ÷²¢²»×öÌ«¶àµÄ¸´ÔӵŤ×÷£¬ËüÖ»ÊÇÌṩÁËÒ»¸öÁªÏµ²»Í¬²å¼þµÄ¿ò¼Ü¡£
- ÈÝÆ÷ÏòÀ¹½ØÆ÷·¢³ö·½·¨µ÷ÓÃÐÅÏ¢¡£
- À¹½ØÆ÷ÒÀÀµÓÚInstancePoolÀ´·ÃÎʻỰBeanʵÀý£¬»òÊÇÒÀÀµÓÚInstanceCahce·ÃÎÊʵÌåBeanʵÀý
- ×îºÃ»¹ÊÇΪÁËÒ»¸ö×ÔÓÉBeanʱ£¬InstanceCache»áºÍInstancePool½øÐл¥¶¯
- InstanceCacheÒÀÀµÓÚEntityPersistenceManager(»òStatefulSessionPersistence Manager)
ͨ¹ýÊý¾ÝÔ´½øÐÐʵÀý״̬³õʼ»¯¡£.
- À¹½ØÆ÷ÒÀÀµÓÚEntityPersistenceManager(»ò StatefulSessionPersistenceManager)ͨ¹ýÊý¾ÝÔ´½øÐÐʵÀý״̬µÄ
ͬ²½¡£
µ±Ö´Ðпͻ§¶ËÇëÇóʱ£¬ÈÝÆ÷µÄ¿ò¼ÜÒÀÀµÓÚÍⲿµÄÆäËûµÄ·þÎñ¹¦Äܿ顢ÃüÃû·þÎñ¡¢½»Ò×·þÎñ¡¢°²È«·þÎñºÍ×ÊÔ´¹ÜÀí¡£¾Ù¸öÀý×Ó£¬
µ±¿Í»§¶ËÇëÇóÒ»¸ö½»Ò×ÐÅÏ¢½«¸üÐÂÊý¾Ý¿âÄÚÈÝ£¬ÈÝÆ÷»áͨ¹ýÃüÃû·þÎñ»ñµÃÏàÓ¦µÄÊý¾ÝÔ´ºÍ×ÊÔ´¹ÜÀíÌṩµÄÏàÓ¦µÄÊý¾ÝÔ´Çý¶¯¡£
Õû¸ö½»Ò×¹ý³ÌÔÚÈÝÆ÷ÄÚ½øÐУ¬½»Ò×¹ÜÀíÆ÷ºÍ×ÊÔ´¹ÜÀíÆ÷Óɽ»Ò×·þÎñ½øÐпØÖÆ¡£
²»Ïó´«Í³µÄ·Ö²¼Ê½ÏµÍ³¹¹¼Ü£¬EJBÈÝÆ÷ÔÚ²¿ÊðÃèÊöÎļþÖÐÉùÃ÷ÁËÍⲿÊôÐÔ¡£ËäÈ»ÈÝÆ÷µ£µ±µÄÊǺÍÔªÊý¾ÝÐÅÏ¢µÄͨѶ×÷Óã¬
ËüÔÚ²¿Êð·þÎñÖÐÏÔʾ³öµÄÍâÔÚ¶ÀÁ¢ÐÔºÍÆäËûµÄ·þÎñ»¹ÊÇÓе㲻ͬµÄ¡£ÕâÒâζ×ÅËüµÄÐÅÏ¢ÔÚ²¿ÊðÆÚʱ¾Í±»·ÅÈëÈÝÆ÷ÖÐÁË¡£
3. 2 JBossÃüÃû·þÎñµÄ¸ÅÄîÐÔÄ£ÐÍ
3.2.1 Ö÷ÒªµÄJNDI API
JNDIÌṩÁËΪÊýÖÚ¶àµÄÃüÃû·þÎñ¡£Ö÷ÒªµÄJNDI APIÊÇjavax.naming.Name£¬javax.naming.ContextÒÔ¼°
javax.namingInitialContext¡£¸ù±¾ÉÏÃüÃûϵͳÊÇÒ»¸ö¶ÔÏóµÄ¼¯ºÏ²¢ÇÒÿ¸ö¶ÔÏó¶¼ÓжÀÁ¢µÄÃû×Ö¡£ContextÊÇÓû§¶Ë·ÃÎÊÃüÃû·þÎñ
µÄ½Ó¿Ú¡£InitalContext ʵÏÖÁËContext¡£JBoss ÃüÃûϵͳÊÇJBoss JNDIµÄÌṩÕß¡£Ô´´úÂëÔÚorg.jnp°üÖУ¬¾ÍÏñÎÒÃÇÔÚµÚ¶þ²¿·ÖÖÐ
Ìáµ½µÄÒ»Ñù£¬JBoss ÃüÃûϵͳ±»ÊµÏÖ³ÉΪMBean¡£Í¼3-2 չʾÁËJBossÃüÃûϵͳµÄ¸ÅÄîÐÔÄ£ÐÍ¡£
ͼ3-3 JBossÃüÃû·þÎñ¸ÅÄîÐÔÄ£ÐÍ
3.2.2 Ö÷ÒªµÄ×é¼þºÍ½Ó¿Ú
Org.jnp.server°ü°üº¬ÁËÃüÃû·þÎñµÄMBean£¬Main°ü×°ÁËMain NamingServer²¢·¢²¼Ëü¡£NamingServerµÄ¹¤×÷ÊǽøÐÐ"ÃüÃû-¶ÔÏó"
Ò»¶Ô¶ÔµÄÐòÁбàÅÅ¡£
Org.inp.interface°ü¼Ì³Ð/ʵÏÖÁËjavax.naming.*½Ó¿Ú£¬ÕâÊǸöJ2EE¹æ·¶¡£Õâ¸ö½Ó¿Ú¿ÉÒÔͨ¹ý¿Í»§¶ËÔ¶³Ì·ÃÎÊ¡£
ËüʹµÃMain¿ÉÒÔÔÚNaming ServerÖкÍÃüÃû·þÎñ½øÐн»»¥£¬NamingContext ʵÏÖÁËjavax. naming.Context½Ó¿Ú£¬
ËüÊǿͻ§¶ËºÍJBossÃüÃû·þÎñÖ®¼äµÄ½Ó¿Ú¡£
3.2.3 ÒÀÀµ
JBossNSûÓиü¶àµÄÍⲿÒÀÀµ.
3.3 JBossCMP ¸ÅÄîÐÔÄ£ÐÍ
3.3.1 Ö÷Òª×é¼þºÍ½Ó¿Ú
JBossCMPͨ¹ýÀ©Õ¹JAWSÀ´Ö§³ÖÄÚ´æÖÐJava¶ÔÏóºÍ¹ØÏµÐÍÊý¾Ý¿â»ù±¾´¢´æÖ®¼äµÄÓ³Éä(ÊÇÒ»¸öO/R MappingµÄ¸ÅÄî)¡£
JBossCMP°üº¬ÁËÖ§³ÖEJB 1.1ÈÝÆ÷³Ö¾ÃÐÔ¹ÜÀí(CMP)Ä£Ð͵Ä×é¼þ¡£ÔÚCMPµÄʵÌåBeanÄ£ÐÍÖУ¬EJBʵÌåµÄ³Ö¾ÃÐÔ״̬µÄÐÔÄÜÊÇÓÉÈÝÆ÷¾ö¶¨µÄ¡£
ÈÝÆ÷·ÃÎÊÊý¾Ý¿âÊÇʵÌåBeanµÄÐÐΪ¡£Í¼3-4չʾÁËJBoss CMP·þÎñµÄ¸ÅÄîÐÔÄ£ÐÍ¡£
Figure 3-4 JBoss CMP Services Conceptual
Model
EntityContainer ÒÀÀµEntityPersistenceManager½Ó¿ÚΪ³Ö¾ÃÐÔ¹ÜÀíµÄʵÌåBean¡£
CMPPersistenceManageʵÏÖÁËEntityPersistenceManager½Ó¿Ú¡£¾ÍÏñÎÒÃÇÇ°ÃæÌáµ½µÄ£¬ÈÝÆ÷¹ÜÀíÁËʵÀýµÄ״̬¡£EJB1.1CMPµÄÓïÒåÓлص÷·½·¨¡¢
ejbLoad¡¢ejbStore¡¢ejbActivate¡¢ejbPassivate¡¢ejbRemoveÌṩÁËʵÀý״̬¹ÛµãµÄÈÝÆ÷±íÊö¡£Êµ¼ÊÉÏ£¬ÕýÊÇCMPPesistenceManagerÔÚ
×öÒ»Ï×÷£ºµ×²ãµÄÊý¾Ý¿âºÍ»º´æÊµÀý״̬µÄͬ²½¡£¾Ù¸öÀý×Ó£ºµ±Ò»¸öBeanµÄ»º´æÊý¾Ý±»×°ÔØ£¬CMPPersistenceManager½«»áÔÚBeanʵÀý
Öе÷ÓÃÈÝÆ÷µÄ»Ø½Ð·½·¨ejLoad¡£µ±»º´æÊý¾ÝÐèÒª¸üÐÂÊý¾Ý¿â£¬ejbStore·½·¨½«±»µ÷ÓÃÀ´×¼±¸ÏàÓ¦µÄ»º´æÊý¾Ý£¬ÕâÑùCMPPersistenceManager
½«¹Ø×¢ÓÚ¸üÐÂÊý¾Ý¿â¡£
EntityPersistenceStore½Ó¿ÚµÄʵÏÖ¹Ø×¢µÄÊǾßÌåµÄÎïÀí´¢´æÏ¸½Ú¡£CMPPersistenceManagerÊÚȨÓÚEntityPersistenceStore½øÐÐʵÌå
³Ö¾ÃÐÔÄÚÈݵÄʵ¼Ê´¢´æ¡£×¢ÒâEntityPersistenceStoreÊÇÒ»¸ö½Ó¿Ú£¬ËüÁô×ų־ò㴢´æÊµÏֵĿͻ§»¯¿Õ¼ä£¬e.g¡£»ùÓÚÎļþµÄ´¢´æ»òÊý
¾Ý¿â´æ´¢¡£
3.3.2 ÒÀÀµÐÔ
JBossCMP ²¢²»ÊǺÍJBossNSÒ»Ñù±»ÊµÏÖ³ÉΪMBean·þÎñ¡£Êµ¼ÊÉÏ£¬
Ëü±»°üº¬ÔÚEJBÈÝÆ÷°üorg.jboss.ejbÖÐͨ¹ýÈÝÆ÷ºÍÆäËûµÄ²å¼þ½øÐн»»¥¡£±íÃæÉÏ£¬JBossCMPÊÇÒÀÀµÓÚJbossNSÀ´»ñµÃÏàÓ¦µÄÊý¾ÝÔ´
µ÷Óò¢ÔÚBeanʵÀýÖдæ·Å³Ö¾ÃÐÔÊý¾Ý¡£
3. 4 JBossTX ¸ÅÄîÐÔÄ£ÐÍ
3.4.1 Ö÷Òª×é¼þºÍ½Ó¿Ú
JBossTX ¹¹¼Ü¿ÉÒÔʹÓõÄÊÇÈκÎʵÏÖÁËJTA¹æ·¶µÄ½»Ò×¹ÜÀí¡£
ÔÚ·Ö²¼Ê½½»Ò×ÖÐÖ÷ÒªµÄ²ÎÓëÕß°üÀ¨£º:
1.½»Ò×¹ÜÀíÆ÷£ºËüÌṩÁËÏàÓ¦µÄ·þÎñºÍ¹ÜÀí·½·¨À´Ö§³Ö½»Ò×»®·Ö¡¢½»Ò××ÊÔ´¹ÜÀí¡¢Í¬²½ºÍ½»Ò×ÄÚÈÝ´«²¥µÈ¹¦ÄÜ¡£Ê¹ÓÃjavax.transaction.TransactionManager½Ó¿ÚÒÔ±ãÓÚ¿ÉÒÔͨ¹ýRMIÀ´Êä³ö½»Ò×¹ÜÀí¡£
2.Ó¦Ó÷þÎñÆ÷£ºÒ»¸öÓ¦Ó÷þÎñÆ÷(»òTP¼àÊÓÆ÷)ÌṩÁË»ù´¡½á¹¹À´Ö§³ÖÔËÐÐÆÚ»·¾³µÄ½»Ò×״̬¹ÜÀíÓ¦Óá£Ó¦Ó÷þÎñÆ÷µÄÀý×ÓÊÇ:EJB·þÎñÆ÷/ÈÝÆ÷¡£
3.×ÊÔ´¹ÜÀíÆ÷£º×ÊÔ´¹ÜÀíÆ÷Ìṩ½øÈëÆäËû×ÊÔ´µÄ¹¦ÄÜ¡£×ÊÔ´¹ÜÀíÆ÷µÄÀý×ÓÊÇ£º¹ØÏµÐÍÊý¾Ý¿â·þÎñÆ÷¡£
4.½»Ò×ÄÚÈÝ£º½»Ò×ÄÚÈÝÈ·¶¨Ò»¸öÌØ¶¨µÄ½»Òס£
5.½»Ò׿ͻ§¶Ë£º½»Ò׿ͻ§¶ËÔÚµ¥¸ö½»Ò×ÖпÉÒÔµ÷ÓÃÒ»¸ö»ò¶à¸ö½»Ò×¶ÔÏó¡£
6.½»Ò×¶ÔÏ󣺽»Ò×¶ÔÏóµÄÐÐΪÊÇÓɽ»Ò×ÄÚÈÝÖеÄÔË×÷À´¾ö¶¨µÄ.¾ø´ó¶àÊýµÄEJB BeanÊǽ»Ò×¶ÔÏó¡£
|
Figure 3-5 JBossTX ¸ÅÄîÐԼܹ¹Ä£ÐÍ |
3.4.2 ÒÀÀµ
JBossTX¼Ü¹¹±»Éè¼Æ³ÉΪ¿ÉÒÔʹÓÃÈκεÄʵÏÖÁËJTA javax.transaction. TransactionManager½Ó¿ÚµÄ½»Ò×¹ÜÀí£¬
JBoss½»Ò×¹ÜÀí½«±»¿´×÷Ϊһ¸öMBean£¬²¢¿Éͨ¹ýRMIµ±×÷Ò»¸ö·þÎñÊä³öÆä×ÔÉí¡£
½»Ò×¹ÜÀí·þÎñµÄ»ù±¾ÐèÇóÊÇÔÚJBoss·þÎñÆ÷·þÎñ¹ÜÀíÆô¶¯µÄʱºòͨ¹ýJNDIÃüÃûĿ¼°ó¶¨ËüµÄʵÏÖ¡£Òò´Ë£¬JBossTX¿´ÉÏÈ¥ÊÇÒÀÀµÓÚ
JBossNSµÄ¡£
4. 4.ʵ¼Ê¼Ü¹¹Ä£ÐÍ
ʵ¼Ê¼Ü¹¹Ä£ÐÍÊÇͨ¹ý¹¤³ÌÄæ×ª¹¤¾ßͨ¹ýJBossÔ´´úÂë»ñµÃµÄ¡£ÎÒÃÇÑ¡ÔñÁËTogetherSoft ¹«Ë¾µÄ
Together 5.5¡£Together 5.5 ÊÇÒ»¸öCase IDE¹¤¾ß£¬Ëü¿ÉÒÔͨ¹ýÔ´´úÂë»òjarÎļþÀ´Éú³ÉÏàÓ¦µÄÀàͼ¡£Ëü»¹Ö§³Ö¸ú×ÙÏàÓ¦µÄÀàͼÒÔ´´½¨
³öÏàÓ¦µÄÐòÁÐͼµÄ·½·¨£¬Óû§¿ÉÒÔÑ¡Ôñ¿ÉÊÓ»¯½çÃæ¡£ÕâÀïÊÇÒ»¸öËüÈçºÎ¹¤×÷µÄ¸ÅÊö¡£
µ±¿ª·¢Õß×¢Òâµ½ÔÚ°üÖеÄÒ»×éÎļþ¾ßÓÐÏàͬµÄ¹¦ÄÜÐÔ£¬ÎÒÃÇ·¢ÏÖÔ´´úÂë°üµÄ²ã´ÎÐԷdz£ÀàËÆÓÚ¸ÅÄîÐÔÄ£ÐÍ¡£ÎÒÃǽ«²»Í¬°üÖеÄÔ´´úÂëÒÀÑ
ÎÒÃǵĸÅÄîÐÔÄ£ÐͽøÐÐÁËÏàÓ¦µÄ×éÖØÅÅ£¬²¢½«ËüÃǵ¼ÈëÁËTogether 5.5¡£
ʵ¼Ê¼Ü¹¹Ä£ÐͺÍÎÒÃÇËùÆÚ´ý¶ÔÓÚ¸ÅÄîÄ£Ð͵ÄÈÏʶÓÐ×ű¾ÖÊÉϵÄÇø±ð¡£Ò»Ð©×é¼þºÍ¹ØÁªµÄ±íÏÖÊÇÏàµ±ÌØÊâµÄ£¬²¢ÇÒÓÐһЩ²»×öÈκαíʾ¡£
ÕâÊÇÒòΪʵ¼ÊÄ£Ðͺ͸ÅÄîÐÔÄ£ÐÍ±È½ÏÆðÀ´¸ü½Ó½üÓÚÔËÐÐÆÚÐÐΪµÄʵÏÖ¹ÛÄî¡£ÔÚÕâ¸öÕ½ÚÖУ¬ÎÒÃǽ«ÌÖÂÛÈÝÆ÷¡¢ÃüÃû·þÎñ¡¢ÈÝÆ÷¹ÜÀí³Ö¾Ã
ÐÔ(CMP)·þÎñºÍ½»Ò×·þÎñµÄʵ¼ÊÄ£ÐÍ¡£
4.1 ÈÝÆ÷ʵ¼ÊÄ£ÐÍ
4.1.1 »ñµÃ×ÛºÏʵ¼ÊÄ£Ð͵ķ½·¨
ͼ4-1 չʾÁËÈÝÆ÷ºÍÆä²å¼þµÄ¶ÀÁ¢µÄͼ¡£ÎÒÃÇ´ÓTogether 5.5»ñµÃµÄʵ¼Ê¹¹¼ÜÄ£ÐͺÍÎÒÃÇÄÔÖйÌÓеĶԸÅÄîÄ£Ð͵ÄÈÏʶÓÐןܴóµÄ
Çø±ð£¬ÕâÊÇÒ»¸ö²ã¹¹¼ÜÄ£ÐÍ£¬ÔÚ¶¥²ãʵÏÖµÄÊDzåÈëʽʵÏÖ×é¼þ£¬ÈÝÆ÷λÓÚÖмä²ã£¬²åÈë½Ó¿ÚλÓÚ×îµ×²ã¡£À¹½ØÆ÷ºÍ³Ö¾ÃÐÔ¹ÜÀíÖ®¼äµÄ
¹ØÏµÊDz»¿É¼ûµÄ£¬ËüÊÇ»ùÓÚJBossÎĵµµÄ¼ÆËã±¾ÄÜ¡£ÎÒÃÇÕÒµ½Ëü¹éÒòÓÚTogether 5.5µÄ¹ØÏµÐÍ¿ÉÊÓ»¯µÄÏÝÚå¡£ÔÚͬһ²ãÃæÉϵÄ×é¼þ¹ØÁª
¶¼±»ºöÂÔ£¬¾Ù¸öÀý×Ó£¬ÊµÌåʵÀýÀ¹½ØÆ÷ºÍʵÌåʵÌ塣ΪÁ˽â¾öÕâ¸öÎÊÌ⣬ÎÒÃÇʹÓÃÏÂÃæµÄ²½Ö裺
1.ÖØÅÅÈÝÆ÷µÄÔ´´úÂëºÍËüµÄ²å¼þ½Ó¿Ú£¬ÒÀ¾ÝBeanÀàÐÍÀ´ÊµÏÖ¡£½«ËüÃǵ¼ÈëTogether 5.5ÏîÄ¿¡£
2.·ÖÎö×é¼þµÄÒÀÀµ¹ØÏµºÍ¹ÌÓÐÁªÏµ¡£
3.Ϊ¹Ø¼ü×é¼þµÄÑ¡Ôñ¹Ø¼ü·½·¨£¬×·×Ù·½·¨µ÷ÓÃÀ´Éú³ÉÏûÏ¢ÊÓͼ¡£
4.ÖØ¸´1£¬2£¬3²½ÖèÒԺϳÉÈÝÆ÷¼Ü¹¹µÄʵ¼ÊÄ£ÐÍ¡£
ͼ 4-1¡¢4-2¡¢4-3
Figure 4-1 container dependecy
diagram |
Figure 4-2 container inherence
diagram |
Figure 4-3 method invocation message
diagram |
4.1.2 ·ÇÕý¹æ×é¼þºÍÒÀÀµ
ÔÚÕâÀïÎÒÃÇÖ»ÌÖÂÛʵÌåÈÝÆ÷µÄ¹¹¼ÜÄ£ÐÍ¡£ÔÚ¸½Â¼ÖÐÎÒÃÇչʾÁËStatelessSessionContainer ºÍ StatefulSessionContainer
ʵ¼Ê¼Ü¹¹Ä£ÐÍ¡£
Figure 4-4 ʵÌåÈÝÆ÷µÄʵ¼Ê¹¹¼ÜÄ£ÐÍ
ÔÚEJB¹æ·¶ÖУ¬EJBHomeʵÏÖÁËBeanµÄ±¾µØ½Ó¿Ú£¬EJBObjectʵÏÖÁËBeanµÄ
Ô¶³Ì½Ó¿Ú¡£EJBObject ºÍEJBµÄ¿Í»§ÊÓͼ½øÐн»»¥¡£ÈÝÆ÷ÌṩÕßµÄÔðÈÎÊDzúÉújavax.ejb.EJBHomeºÍjavax.ejb.EJBObject¡£JBoss EJB
ÈÝÆ÷µÄÉè¼Æ¹ÛµãÊÇÔÚÕâÀï¸ü±¾Ã»ÓÐEJBHomeºÍ EJBObjectµÄ¶ÔÏóʵÏÖ£¬ÕâÀïͨ¹ý¶¯Ì¬´úÀí»úÖÆÀ´»ñµÃEJBHomeºÍEJBObjectµÄ½ÇÉ«¡£
£¨JBossÊÇ»ùÓÚDynamic Proxy»úÖÆ¶øAuspicÊÇ»ùÓÚ×Ô¶¯´úÂëÉú³É»úÖÆµÄ¡££©¶¯Ì¬´úÀí»úÖÆÊÇÒ»¸ö¶ÔÏó£¬Ëü¿ÉÒÔÔÚÔËÐÐÆÚÖÐʵÏÖÌØ¶¨µÄ
һϵÁнӿÚͨ¹ýjava·´Éä»úÖÆÀ´ÊµÏÖ¡£
ÔÚ²¿ÊðÆÚContainerFactory´´½¨ºÍ³õʼ»¯ÏàÓ¦µÄÈÝÆ÷¡£Home¶ÔÏóÊÇͨ¹ý¶¯Ì¬×°ÔØ»úÖÆÊ¹ÓÃJRMP ContainerInvokerÀ´´´½¨µÄ£¬ÎÒÃÇ»áÔÚ
ÏÂÃæµÄÎÄÕÂÖÐÌÖÂÛËü¡£InvocationHandler±»HomeProxyÀàËùÈ¡´ú£¬ÏÖÔÚËû¿ÉÒÔÔÚ²¿ÊðÃèÊöÎļþÖж¨Òå²¢±»×÷Ϊһ¸öÌØ¶¨µÄJNDIÃû³Æ°ó¶¨
ÔÚJNDIÃüÃûÊ÷ÉÏ¡£
´úÀíÆ÷ÊÇ¿ÉÐòÁл¯µÄ£¬ÕâÒâζ×ÅËü¿ÉÒÔͨ¹ýÍøÂç±»·¢Ë͵½Ô¶³Ì¿Í»§ÄÇÀïÈ¥¡£µ±Ò»¸ö¿Í»§¶Ëͨ¹ýJNDIѰÕÒEJBHome£¬±¾µØ´úÀíÆ÷ʵÀý±»
ÐòÁл¯¡£ÔÚ¿Í»§¶Ë£¬±¾µØ´úÀíÆ÷ʵÀý±»·´ÐòÁл¯¡£ÒòΪ´úÀíÆ÷ʵÏÖÁËBeanµÄ±¾µØ½Ó¿Ú£¬Ëü½«¿ÉÒÔ±»µ±×÷±¾µØ½Ó¿ÚÀ´²¶»ñºÍʹÓá£
µ±¿Í»§¶ËÀûÓñ¾µØ¶ÔÏóÒýÓÃreferenceÀ´ÇëÇóÏàÓ¦µÄEJBObject.EJBObjectµÄ¶¯Ì¬´úÀí»áͨ¹ýÉÏÃæµÄ´úÂë×Ô¶¯Éú³É¡£InvocationHandler
»á±»Ä³Ò»¸öEJB¶ÔÏó´úÀíÆ÷ËùÈ¡´ú£¬¼´£¬»ùÓÚBeanµÄÀàÐ͵ÄStatefulSessionProxy£¬StatelessSessionProxyºÍEntityProxyÀ´»ñµÃ¡£
±¾µØ´úÀíµÄ¹²Í¬Ö®´¦£¬EJB ¶ÔÏó´úÀíÒ²¿ÉÒÔ±»ÐòÁл¯²¢Í¨¹ýÍøÂç·¢Ë͵½Ô¶³Ì¿Í»§¶Ë¡£
×îºó£¬¿Í»§¶Ë»ñµÃEJB¶ÔÏóµÄ¾ä±ú£¬²¢Ê¹ÓÃËüÈ¥µ÷ÓÃÔÚ·þÎñÆ÷¶Ë²¿ÊðµÄBeanµÄ·½·¨¡£±¾µØºÍ¶ÔÏóµÄ¶¯Ì¬´úÀíͨ¹ý¿Í»§¶ËµÄ
InvocationHanderµ÷Óá£
StatefulSessionProxy£¬StatelessSessionProxyºÍEntityProxyʵÏÖÁË
InvocationHandler½Ó¿Ú¡£¾ÍÏñËûÃÇÃû³ÆËùÖ¸³öµÄÒ»Ñù£¬ÔÚÈÝÆ÷ÖÐËûÃǵŤ×÷ÀàËÆÓÚÒ»¸ö´úÀíÆ÷¡£ËûÃÇÊ×ÏÈ×ÅÁ¦´¦Àí¿Í»§¶ËÇëÇóµÄ
·½·¨¡£Èç¹û·½·¨ÊÇÓɲ¿ÊðÔÚ·þÎñÆ÷¶ËµÄÔ¶³Ì·½·¨ÊµÏÖËùµ÷Óõϰ£¬µ÷Óý«±»×ª»»ÎªRemoteMethodInvocation¶ÔÏ󣬽Ó׎«Æä°ü×°³ÉΪ
MarsharlledObject²¢Í¨¹ýRMI´«µÝ¸øJRMPContainerInvoker¡£
»Øµ½3.1.1Õ½ڣ¬ContainerInvokerÊÇÒ»¸öÈÝÆ÷´«Êä¾ä±ú,
JRMPContainerInvokerʵÏÖÁËRMI/JRMP´«ÊäÐÒé¡£Ëüͨ¹ý½ÓÊÜʵÏÖContainerRemote½Ó¿ÚµÄÔ¶³Ì·½·¨µÄµ÷ÓÃÀ´Êä³öÆä×ÔÉí£¬
ʵÏÖContainerRemote½Ó¿Ú¼Ì³ÐÁËjava.rmi.Remote.JRMPContainerInvoker£¬Í¨¹ýÖ´ÐÐinvoke()ºÍinvokeHome()Á½¸ö·½·¨À´»ñµÃÓÅ»¯¡£
µÚÒ»¸öʹÓÃMarshalledObject²ÎÊý(Öµµ÷ÓÃ)ºÍÆäËûµÄʹÓ÷½·¨·´ÉäÀàÐ͵IJÎÊý(Referenceµ÷ÓÃ)£¬Èç¹ûµ÷ÓÃÆ÷À´×ÔÓÚÈÝÆ÷ÄÚµÄͬһVM£¬
µ÷ÓÃÆ÷»áÑ¡ÔñReferenceµ÷ÓöøºöÊÓMarshalledObjectÐòÁл¯£¬·ñÔò£¬·½·¨µ÷ÓÃÐÅÏ¢»á±»MarshalledObjectͨ¹ý×î³õµÄEJB·½·¨µ÷ÓÃ
(ÀýÈ簲ȫºÍ½»Ò×ÄÚÈÝ)µÄÊôÐÔ½øÐнâ°ü¡£½Ó×Å£¬Ëü±»×ª»»³ÉÎÄMethodInvocation²¢Í¨¹ýÈÝÆ÷´«µÝ¡£
- EntityContainer ºÍËüµÄÀ¹½ØÆ÷
ÔÚ²¿ÊðÆÚÖÐÈÝÆ÷ÀàÐÍÊÇͨ¹ýBeanÀàÐͶø±»Ö¸¶¨¡£
ContainerFactory´´½¨²¢³õʼ»¯Ëü¡£´ËÍ⣬¶ÔÓÚÿһ¸öBeanÀàÐÍ£¬standardjboss.xml¶¼»á¶¨ÒåʹÓÃÕâ¸öÈÝÆ÷ºÍËûÃǵ÷ÓôÎÐòµÄ
À¹½ØÆ÷¡£À¹½ØÆ÷¶¼¿ÉÒÔ±»´´½¨ºÍ³õʼ»¯£¬Ã¿Ò»¸öÈÝÆ÷ά»¤×ÅÒ»×éÀ¹½ØÆ÷¡£Ëü´ÙʹÁËÕë¶ÔÓÚÐòÁÐÖеÚÒ»¸öÀ¹½ØÆ÷·½·¨µ÷Óã¬
ÕâÊÇͨ¹ýinvoke()·½·¨ÊµÏֵġ£À¹½ØÆ÷Ê×ÏÈ´¦ÀíÏàÓ¦µÄµ÷Óò¢Í¨¹ýµ÷ÓÃ×ÔÉíµÄinvoke()·½·¨À´´¥·¢ÏÂÒ»¸öÀ¹½ØÆ÷£¬×îºóµÄÒ»¸öÀ¹½ØÆ÷
ÊÇContainerInterceptor£¬ËüµÄ¹¤×÷Êǽ«·½·¨µ÷ÓÃίÍиøBeanʵÀý¡£
ÎÒÃÇÖØÐÂÅÅÁÐÁËʵ¼Ê¹¹¼ÜÄ£ÐÍÒÔ±ãÓÚ¸üÈÝÒ׺͸ÅÄîÐÔÄ£ÐͽøÐбȽϡ£ÏóÎÒÃÇÔÚ3.1.1²¿·Ö½éÉÜ
µÄInstancePool¡¢InstanceCache¡¢IntercptorºÍPersistenceManager¶¼ÊǼ̳ÐÓÚContainerPluginµÄ½Ó¿Ú¡£ÔÚʵ¼ÊÄ£ÐÍÖУ¬ÈÝÆ÷µÄ²å¼þ
²ã±»Êµ¼ÊʵÏÖ×é¼þËùÌæ´ú¡£ÕâЩ×é¼þʵÏÖÁ˲å¼þµÄ½Ó¿Ú£¬Òò´ËEntityContainerÔÚ²å¼þ½Ó¿Ú²ãÃæµÄ¿ØÖÆÁ÷±»µ±Ç°Î¯Íе½Êµ¼ÊʵÏÖ×é¼þ¡£
²å¼þ½Ó¿ÚÖеĹØÏµ£¬±ÈÈçInstanceCacheºÍInstancePoolÔÚµ±Ç°µÄʵ¼ÊʵÏÖ×é¼þÖеĿØÖÆÁ÷,£¬EntityInstance ºÍEntityInstancePool¡£
Ò»¸öʵÌåBeanµÄ³Ö¾ÃÐÔ¹ÜÀíÓÐÁ½ÖÖÀàÐÍ£¬Bean¹ÜÀí³Ö¾ÃÐÔ(BMP)ºÍÈÝÆ÷¹ÜÀí³Ö¾ÃÐÔ(CMP)¡£×÷ΪBMPµÄ³ÌÐòÔ±ÄãÐèÒª·Ç³£¹Ø×¢Bean»º´æ×´Ì¬
ºÍµ×²ãÊý¾Ý¿âÖ®¼äµÄͬ²½¡£Ê¹ÓÃCMP£¬ÈÝÆ÷»á²úÉúÏàÓ¦µÄ´úÂëÀ´´¦ÀíÕâÖÖÊÂÇ飬Õ⽫ʹ³ÌÐòÔ±±äµÃÇáËɵ㡣ËüÃÇÖ®¼äÐÔÄܵÄÓ°Ïì²»ÊôÓÚ
ÕâÆªÎÄÕÂÌÖÂÛµÄÄÚÈÝ£¬ÎÒÃÇ»áÔÚÒÔºóÌÖÂÛJBossCMPµÄ¼Ü¹¹¡£
ÿһ¸öÀ¹½ØÆ÷¶¼ÊµÏÖÁËÀ¹½ØÆ÷½Ó¿Ú£¬ËûÃǶ¼ÊÇÈÝÆ÷µÄ²å¼þ¡£ºÍʵÌåBeanÒ»Ñù£¬ EntityInstanceInterceptor£¬EntityLockInterceptor
ºÍEntitySynchronizationInterceptorʹÓÃBeanLockManager½øÐÐBeanʵÀýµÄµ±Ç°¿ØÖÆ¡£
ÿһ¸öContainerPluginµÄʵÏÖ¶¼ºÍEntityContainerÏà¹Ø£¬Ëü½«ÖªµÀÄĸöÈÝÆ÷ÕýÔÚ±»setContainer()ºÍgetContainer()·½·¨µ÷Óá£
ContainerInvokerºÍContainer½»Á÷ÊDZØÐèµÄ£¬¾Ù¸öÀý×ÓÒ»¸ö»á»°Bean¿ÉÒÔµ÷ÓÃʵÌåBeanµÄ·½·¨¡£ContainerInvokerÊÇÈÝÆ÷µÄÒ»¸ö½Ó¿Ú£¬
ËüʹÓÃContainernvoker.JRMPContainerInvokerºÍContainerInvokerContainerÓÐÏà¹ØÐÔ£¬ContainerInvokerContainerÊÇʵ¼ÊÉϵÄ
EntityContainer¡£
MethodInvocationͨ¹ýÍøÂçÔÚËùÓеÄ×é¼þÖÐͨÐС£ËùÓеÄ×é¼þ¶¼ºÍËüÓйØÁª.¡£MethodInvocationÒÀÀµÓÚEnterpriseContext£¬
EnterpriseContext²¢ÇÒºÍÉúÃüÆÚʵÀýÖеÄBeanʵÀýÏà¹ØÁª¡£ÔÚʵÌåBeanÄ£ÐÍÖУ¬ÊµÌåBeanÊÇÒ»¸öJava¶ÔÏóºÍµ×²ãÊý¾Ý¿âµÄ±íÏÖ¡£
CacheKeyÊǶÔÓÚPrimaryKey×é¼þµÄ·â×°£¬EntityEnterpriseContextÒÀÀµÓÚCacheKeyÈ¥»ñµÃʵÌå¶ÔÏó¶øEntityProxyͨ¹ýCacheKey×÷Ϊ
Ò»¸öʵÌåÈÝÆ÷µÄ²ÎÊý¡£
ºÍ¸ÅÄîÐÔÄ£ÐÍÏà±È£¬Ò»Ð©ÌØÊâµÄ×é¼þºÍËüÃÇÖ®¼äµÄ¹ØÏµÕ¹Ê¾ÁËJBoss EJBÈÝÆ÷µÄÌØÊâÖ®´¦¡£
¶¯Ì¬´úÀí»úÖÆµÄÉè¼ÆºÍÔ¤±àÒëÈÝÆ÷Éè¼ÆÖ®¼äÓÐ×ű¾ÖÊÉϵIJ»Í¬£¬Ô¤±àÒë¼¼ÊõʹÓÃÔںܶ౻²âÊÔ¹ýµÄEJBÈÝÆ÷ʵÏÖÉÏ
(ÀýÈ磺WebLogicµÈ)¡£¸½Â¼-3չʾÁËEJBÈÝÆ÷²âÊÔÉ豸µÄ¸ÅÄîÐԽṹģÐÍ¡£JBossÎĵµÖÐÐû³Æ£¬»ùÓÚEJBÈÝÆ÷µÄ¶¯Ì¬´úÀíÉè¼ÆÊ¹ÈÝÆ÷
Éè¼Æ±äµÃÈÝÒס£Ëü»á¶ÔÖÊÁ¿ÊôÐÔÓÐÓ°Ï죬ÀýÈç²»ÄÜÔÚʵ¼ÊÄ£ÐÍÖÐÖ±½Ó¹Û²âµ½µÄÐÔÄÜÎÊÌâ¡£Ëü±ØÐë¾¹ýÑϸñµÄÖÊÁ¿²âÊÔ£¬Õ⽫ÊÇÎÒÃÇ
½«À´µÄ¹¤×÷¡£
EJBÈÝÆ÷µÄ²åÈëʽ¿ò¼ÜʹµÃEJBÈÝÆ÷±äµÃÁé»îÐÔºÍÀ©Õ¹ÐÔ¸üºÃ¡£Èç¹ûÐèÒª¸Ä±äÖ»ÐèҪдһ¸öÌØ¶¨½á¹¹µÄеÄʵÏÖ¼´¿É¡£
4.1.3 ʵÌåBeanÈÝÆ÷µÄʾÀýºÍËüµÄÖ´Ðз½·¨µ÷ÓõIJå¼þ
ͼ4-5 չʾÁ˿ͻ§¶ËºÍEJBÈÝÆ÷/·þÎñÆ÷½»»¥
µÄÇé¿ö.ÎÒÃÇ·ÖÎöEJBÈÝÆ÷µÄʵ¼ÊÄ£ÐÍ¿ÉÒÔ°ïÖúÎÒÃÇÀí½âÈÝÆ÷µÄÐÐΪ¡£
ͼ4-5 ¿Í»§¶ËºÍEJBÈÝÆ÷µÄ½»»¥Ê¾Òâ
1.ÔÚ²¿ÊðÆÚ£¬EJB±¾µØ¶ÔÏ󽫱»À¦°óÔÚJBossÃüÃû·þÎñµÄJNDIÊ÷ÉÏ£¬²¢±»·ÖÅäÒ»¸öJNDIÃû³Æ¡£
2.¿Í»§¶ËµÚÒ»´Î½Ó´¥JNDIÃüÃû·þÎñÒÔ»ñµÃEJB±¾µØ¶ÔÏó¡£
3.¿Í»§¶Ëͨ¹ýʹÓÃEJB ±¾µØ¶ÔÏóµÄReferenceÀ´ÏòEJB¶ÔÏó·¢³öÇëÇó¡£
4.EJB ±¾µØ¶ÔÏó´´½¨(»òѰÕÒ)Ò»¸öEJB¶ÔÏó²¢½«ËüµÄreference ·µ»Ø¸ø¿Í»§¶Ë¡£
5.¿Í»§¶Ë»ñµÃEJB ¶ÔÏóµÄreference£¬²¢ÔÚÔ¶³Ì½Ó¿ÚÖе÷ÓÃÏàÓ¦·½·¨¡£
6.ÈÝÆ÷À¹½ØÏ·½·¨µÄµ÷Óò¢½«ÆäίÅɸøBeanʵÀý£¬ÏàÓ¦µÄʵÀý½«Í¨¹ýÔ¶³Ì½Ó¿ÚÏò¿Í»§¶Ë·µ»Ø½á¹ûÖµ¡£
7.LogInterceptor¼Í¼Ïµ÷ÓõÄÈÕÖ¾¡£
8.TxInterceptorͨ¹ýXML²¿ÊðÃèÊö£¬ÒÀѵ÷Ó÷½·¨À´¾ö¶¨ÈçºÎ½øÐйÜÀí½»Òס£
9.SecuirtyInterceptorͨ¹ýXML²¿ÊðÃèÊöÀ´ÑéÖ¤µ÷ÓÃÊÇ·ñ¿ÉÒÔÖ´ÐС£
10.ÈÝÆ÷ÔÚËûµ÷ÓÃBeanµÄÉÌÎñ·½·¨µÄʱºò±ØÐëÓÐÒ»¸öʵÀý£¬EntityInstanceInterceptorͨ¹ý¸øÓèÒ»¸öÖ÷¼üÀ´µ÷ÓÃInstanceCacheÒÔ´ËÀ´»ñµÃÏàÓ¦µÄʵÌåBeanʵÀý¡£
11.Èç¹û»º´æÖÐûÓкÍËùÌṩµÄÖ÷¼üÏàÒ»ÖµÄʵÀý£¬Ëü»á֪ͨInstancePool»ñµÃÒ»¸ö¿ÕÏеÄʵÀýÀ´ºÍÖ÷¼üÏà¹ØÁª¡£
12.InstanceCache ÏÖÔÚÒªµ÷ÓÃPersistenceManager£¬Ëüͨ¹ýµ÷ÓÃejbActivate()·½·¨À´»ñµÃÒѱ»¼¤»îµÄʵÀý¡£
13.EntitySynchronizationInterceptor±»EntityInstanceInterceptorµ÷Óã¬ÓÃÀ´´¦ÀíʵÀýºÍÊý¾Ý¿âµÄͬ²½.ËüÓм¸¸öÑ¡Ïÿһ¸öÑ¡ÏÒåÁËÒ»¸öÀ¹½ØÆ÷£¬loadEntity()·½·¨½«ÔÚEntityPersistanceManagerÖб»µ÷Óá£
14.ContainerInterceptorÊÇÔÚÕû¸öÁ´ÖÐ×îºóÒ»¸öÀ¹½ØÆ÷£¬ËüÊÇͨ¹ýÈÝÆ÷±¾ÉíÌí¼ÓµÄ¶ø²»ÊÇÈÝÆ÷¹¤³§£¬ÒµÎñ·½·¨µÄµ÷ÓÃÏÖÔÚÒѾ±»Î¯ÍиøÁËEJBʵÀý¡£
15.ʵÀýʵÏÖÁËһЩ¹¤×÷²¢·µ»ØÁ˽á¹û¡£
16.EntitySynchronizationInterceptorÑ¡ÔñÁ˽«Ä¿Ç°µÄʵÀý״̬´¢´æ½øÊý¾Ý¿â£¬PersistenceManagerµÄstoreEntity()·½·¨½«±»µ÷Óá£
17.ʵÀý½«±»·µ»ØÈ뻺´æ¡£µ±½»Ò×ÔÚÔËÐÐʱ±»µ÷Óã¬ÊµÀý»áºÍÕâ¸ö½»Ò×Ëø¶¨ÒÔ±ãÓÚÔÚÕâ¸ö½»Ò×ÆÚ¼äûÓбðµÄ½»Ò׿ÉÒÔʹÓÃÕâ¸öʵÀý¡£
18.TxInteceptorÒÀѽ»Ò×ÉèÖô¦ÀíÏàÓ¦µÄ·½·¨²¢Õë¶ÔĿǰµÄ½»Ò×Ñ¡ÔñÌá½»»òÊǻعö¡£
19.ÈÝÆ÷¼¤»î·µ»Ø»úÖÆÏò¿Í»§¶Ë·µ»Ø½á¹û¡£
4.2 JBoss ÃüÃû·þÎñʵ¼ÊÄ£ÐÍ
4.2.1 ÌØÊâ×é¼þºÍÏ໥¹ØÏµ
ͼ 4-2 ÊÇJBossÃüÃû·þÎñʵ¼Ê¼Ü¹¹Ä£ÐÍ¡£×÷ΪÈÝÆ÷µÄʵ¼ÊÄ£ÐÍ£¬
ÕâÀïÓÐ×ÅÌØÊâ×é¼þºÍ×é¼þ¼äµÄÒÀÀµ¹ØÏµ£¬ÀàËÆÓÚNamingService MBeanÒÔ¼°ËüºÍorg.jnp×ÓϵͳµÄ¹ØÁª£¬ÔÚÏÂÃæµÄ²¿·Ö£¬
ÎÒÃÇ»áչʾÆäÖеÄϸ½Ú¡£
ͼ4-2 JBoss ÃüÃû·þÎñʵ¼ÊÄ£ÐÍ
Org.jboss.naming.NamingService±»×÷Ϊһ¸öMBeanʵÏÖ¡£ËüÌṩÁËJNDIÃüÃû·þÎñ£¬Õâ¸öNamingService´´½¨ÁËMain MBean²¢ÇÒ
¹ÜÀíËûÃǵÄ״̬¡£µ±Ò»¸öNamingServiceÆô¶¯£¬Ëü½«³õʼ»¯²¢Æô¶¯Main MBean¡£NamingService½«ÏàÓ¦µÄ¹¦Äܶ¼ÎªÎ¯ÍиøÁËMain MBean¡£
¸´ÖÆMBean·ûºÏÎÒÃǵĸÅÄîÐÔÄ£ÐÍ£¬¿ÉÊÇ£¬ÔÚ±íÏóºóÃæµÄÊÇJBossÖеÄJNDIÃüÃû·þÎñ±»ÊµÏÖ³ÉÁËÒ»¸ö¶ÀÁ¢µÄÓ¦Óá£NamingService MBean
ͨ¹ý´´½¨Ò»¸öеÄʵÀý²åÈëMain MBean¡£ÕâÖÖÉè¼ÆµÄºÃ´¦ÊÇÈç¹ûJNDI VM ºÍJBoss Server VMÒ»ÖµĻ°£¬JNDI²Ù×÷½«»áͨ¹ýsocketÁ¬½Ó
ÒÔ¼õÉÙÏàÓ¦µÄ¿ªÏú¡£
4.2.2 ¿Í»§¶Ë»ñµÃEJB ±¾µØ¶ÔÏóµÄÀý×Ó
ΪÁ˸üºÃµÄÁ˽âJBossÃüÃû·þÎñ¼Ü¹¹£¬ÎÒÃǸø³öÁËÒ»¸öÀý×Ó²¢×·×ÙÕû¸öµ÷Óùý³Ì¡£¾Ù¸öÀý×Ó£¬µ±Ò»¸ö¿Í»§¶ËÏëÈ¥µ÷ÓÃÒ»¸öBeanµÄ·½·¨£¬
Ëü²»µÃ²»Ïȶ¨Î»Bean Home£¬ÒòΪËüÊÇΪ¿Í»§¶ËÐèÇó¶ø´´½¨BeanʵÀýµÄ¾ä±ú¡£±¾µØ¶ÔÏóµÄJNDIÃû×ÖÊÇÔÚ²¿ÊðÆÚÖб»¶¨ÒåÔÚ²¿ÊðÃèÊöÎļþ
Öеġ£¿Í»§¶ËÔÚÔËÐÐÆÚÖÐͨ¹ýʹÓÃJNDIÃû×Ö·ÃÎÊÏàÓ¦µÄÃüÃû·þÎñÀ´»ñµÃ¶ÔÏó¡£
1.µ±JBoss·þÎñÆ÷Æô¶¯£¬NamingService MBean½«±»×¢²á²¢µÈºòµ÷Óá£
2.NamingService³õʼ»¯Main MBean²¢Ê¹µÃÃüÃû·þÎñͨ¹ýÕìÌýÏàÓ¦µÄSocket¶Ë¿Ú×¼±¸±»µ÷Óá£
3.Ò»¸ö¿Í»§¶ËÌṩÃüÃû·þÎñµÄ»·¾³ÅäÖá£
4.Ò»¸ö¿Í»§¶Ë´´½¨Ò»¸öеÄIntialContext£¬ËüÊÇNamingContextFactoryÓÃÀ´´´½¨ÐµÄNamingContextµÄ´Ù·¢Æ÷¡£
5.Ò»¸ö¿Í»§¶Ëͨ¹ýÌṩJNDIÃû×Ö²¢ÔÚJNDIÃüÃû·þÎñÖж¨Î»ÏàÓ¦µÄ±¾µØ¶ÔÏó¡£NamingContextÁ¬½ÓÏàÓ¦µÄÃüÃû·þÎñÆ÷À´½øÐÐÏàÓ¦µÄ¶¨Î»¡£
4.3 JBossCMP ʵ¼ÊÄ£ÐÍ
| ͼ4-6չʾÁËÎÒÃÇͨ¹ýTogether 5.5 »ñµÃµÃJBossCMPµÄ¹ØÁªºÍ¹ÌÓеÄÄÚÈÝ¡£JBossCMPʵ¼ÊÄ£Ðͷdz£ÀàËÆÎÒÃǵĸÅÄîÐÔÄ£ÐÍ.
Õâ¸öÌØÊâµÄ×ÓϵͳÊÇJWAS¡£ |
ͼ 4-6 JBossCMPÒÀÀµºÍ¹ØÁªÍ¼ |
4.3.1 ÌØÊâ×é¼þºÍÁªÏµ
Org.jboss.ejb.plugin.jwas °ü°üÀ¨ÁË JBossÖÐCMPʵÌåBean O/R Mapping¹¤¾ßµÄĬÈÏʵÏÖ¡£ËüʹÓÃJDBCÊý¾Ý
¿â×÷ΪËüµÄ³Ö¾Ã²ã´æ´¢¡£
EntityPersistenceStoreµÄĬÈÏʵÏÖÊÇJAWSPersistenceManager¡£
CMPʵÌåBean³Ö¾Ã²ã´æ´¢µÄ¿Í»§»¯ÊµÏÖÁËEntityPersistenceStoreµÄ½Ó¿Ú·½·¨¡£JAWSPersistenceManageͨ¹ýµ÷ÓÃËüµÄ×ÓÀàÖеÄ
execute()·½·¨À´ÊµÏÖ£¬¾Ù¸öÀý×Ó£¬JDBCActivateEntityCommandͨ¹ýËüµÄJMPActivateEntityCommandµÄ½Ó¿Ú·½·¨£¬
JAWSPersistenceManager»ùÓÚÊý¾Ý¿âµÄ´æ´¢.Èç¹ûÓÐÆäËûµÄ´æ´¢½éÖÊ£¬ËüÐèÒªÌṩһ¸öʵÏÖÁËJMPXXXCommand½Ó¿ÚµÄ°ü¡£

ͼ4-7 JBossCMP ʵ¼ÊÄ£ÐÍ
±í 4-1 ÏÔʾÁËEntityPersistenceStoreµÄ½Ó¿Ú·½·¨£¬ÔÚorg.jboss.ejb.plugin.jwas°üÖеĽӿڱ»ÊµÏÖÁËʵÏÖÁË
EntityPersistenceStoreµÄJAWSPersistenceManagerʹÓã¬ÒÔ¼°ÔÚÄÇЩ½Ó¿ÚÖÐÊDZȽϵͲã´ÎµÄʵÏÖ¡£
| EntityPersistenceStoreÖеķ½·¨ |
½Ó¿ÚÃû³Æ |
ʵÏÖÃû³Æ |
·½·¨ |
| createEntity |
JMPCreateEntityCommand |
JDBCCreateEntityCommand |
µ±ÊµÌ彨Á¢µÄʱºòµ÷Óà |
| findEntity |
JMPFindEntityCommand |
JDBCFindEntityCommand |
µ±µ¥¸öʵÌå±»·¢ÏÖʱµ÷Óà |
| findEntities |
JMPFindEntitiesCommand |
JDBCFindEntitiesCommand |
µ±ÊµÌ弯ºÏ±»·¢ÏÖʱµ÷Óà |
| activateEntity |
JMPActivateEntityCommand |
JDBCActivateEntityCommand |
µ±ÊµÌå±»¼¤»îʱµ÷Óà |
| loadEntity |
JMPLoadEntityCommand |
JDBCLaodEntityCommand |
µ±ÊµÌå±»µ×²ã´æ´¢×°ÔØÊ±µ÷Óà |
| loadEntities |
JMPLoadEntitesCommand |
JDBCLoadEntitesCommand |
µ±Ò»×éʵÌå±»µ×²ã´æ´¢Ô¤×°ÔØÊ±µ÷Óà |
| storeEntity |
JMPStoreEntityCommand |
JDBCStoreEntityCommand |
µ±ÊµÌåÐèÒª±»Ð´Èëµ×²ã´æ´¢Ê±µ÷Óà |
| passivateEntity |
JMPPassivateEntityCommand |
JDBCPassivateEntityCommand |
µ±ÊµÌå±»¶Û»¯Ê±±»µ÷Óà |
| removeEntity |
JMPRemoveEntityCommand |
JDBCRemoveEntityCommand |
µ±ÊµÌå´Óµ×²ã´æ´¢Öб»ÒÆÈ¥Ê±µ÷Óà |
4.4 JBoss ½»Ò×¹ÜÀíʵÌåÄ£ÐÍ
| ͼ4-8 չʾÁËÎÒÃÇ´ÓTogether 5.5 ÖлñµÃµÄJBossTxµÄ¹ØÁªºÍ¹ÌÓÐÐÅϢͼ¡£µ½Ä¿Ç°ÎªÖ¹£¬ÎÒÃDz¢Ã»ÓдÓUMLͼÖоªÆæµÄ·¢ÏÖ
Ò»Ð©ÌØÊâµÄ×é¼þºÍ¹ØÁª£¬ÎÒÃÇÔÙ´ÎÅÅÁйؼü×é¼þºÍ¹ØÏµµÄ¹ØÁªÒÔ¼°¼¯ºÏÒÔ±ãÎÒÃÇ´ÓÖеóö×ۺϵÄʵ¼ÊÄ£ÐÍ¡£ |
Figure 4-8 JBossTx dependency and inherency
diagram |
4.4.1 ÌØÊâ×é¼þºÍ¹ØÁª
ÎÒÃǹØ×¢JBossTxµÄ¸ÅÄîÐÔÄ£ÐÍ£¬JBossTx±»ÊµÏÖ³ÉΪMBeanͨ¹ýRMI±»·¢²¼¡£
ͨ¹ý RMI/JRMPµÄ½»Ò×ÄÚÈÝ´«²¥±»Éè¼Æ³ÉΪÁ½¸ö½Ó¿Ú£¬TransactionPropagationContextImpoter½Ó¿Ú£¬ËüµÄʵÏÖ±»ÓÃÀ´Ïò½»Ò×¹ÜÀí
ÆÚµ¼Èë½»Ò×´«²¥ÄÚÈÝ£¬TransactionPropagationContext Factory½Ó¿Ú£¬ËüµÄʵÏÖ±»ÓÃÀ´´Ó¿Í»§¶Ë»ñµÃ½»Ò×´«²¥ÄÚÈÝ¡£µ±½»Ò×¹ÜÀí
Æ÷±»Æô¶¯£¬ËüµÄµÚÒ»¸ö¹¤×÷ÊÇÔÚÊìϤµÄJNDIλÖÃÉϰó¶¨TransactionManager£¬ TransactionPropagationContext ImpoterºÍ
TransactionPropagationContextFactory¡£
TxManagerʵÏÖÁËjavax.transaction.TransactionManagerºÍÆäÉϲãµÄÁ½¸ö½Ó¿Ú¡£ËüÓÉ TransactionManagerService½øÐйÜÀí¡£
TxManagerÒÀ¿¿TransactionImplÀ´ÊµÏÖ½»ÒײÙ×÷£¬ÀàËÆÓÚÉùÃ÷½»Ò׵ĿªÊ¼¡¢Ìá½»¡¢»Ø¹ö·½·¨¡£ÓÐȤµÄÊÇ£¬TransactionImplÖ»ÊÇÒ»¸ö
ÇáÁ¿¼¶µÄǰÖÃTxCapsule¡£TxCapsuleÊÇͨ¹ýTransactionImpµÄ·½·¨µ÷Óöø±»¿ØÖƵġ£TxCapsule ¿ØÖÆ×ŹØÓÚÒ»¸ö½»Ò×µÄËùÓÐÐÅÏ¢¡£
ÔÚÕâ¸öÀàÖÐʵÏÖÁ˻ص÷ºÍͬ²½£¬Ëüͨ¹ýXidImplÀ´·Ö±æ²»Í¬½»Òס£
ÔڻỰBeanÖÐͨ¹ý¹ÜÀíJTA½»Ò×Beanµ÷ÓøÅÄîÐÔÄ£ÐÍ¡£ÔÚÕâ¸öÄ£ÐÍÖУ¬javax.transaction.UserTransactionÊDZØÐèµÄ¡£
JBossTxÓÉÒ»¸ö×ÓϵͳʵÏÖÁËUserTransaction ½Ó¿Ú£¬Î»ÓÚorg. jboss.tm.usertx°üÖС£Usertx ±»·Ö¸î³ÉΪÁ½¸ö×Óϵͳ£¬
¿Í»§¶ËºÍ·þÎñÆ÷¶Ë£¬ËûÃÇͨ¹ý½Ó¿Ú½øÐн»»¥¡£
ÕâÊÇÒ»¸ö·Ç³£´¿µÄ²ã¹¹¼Ü¡£ClientUserTransactionÊǿͻ§¶ËUserTransactionµÄʵÏÖ¡£
Ëü½«Í¨¹ýUserTransactionSession½Ó¿ÚίÍÐËùÓеÄUserTransactionÈ¥µ÷ÓÃÏàÓ¦µÄ·þÎñÆ÷¡£UserTransactionSessionImplÔÚ·þÎñÆ÷¶Ë
ʵÏÖÁËUserTransactionSession½Ó¿Ú¡£ÕâÊÇÒÔ±ã×÷Ϊ²»ÔÚͬһ¸öµØµãµÄ½»Ò×¹ÜÀíµÄVMµÄÔ¶³Ì¿Í»§¶Ë¡£µ±¿Í»§¶ËÖ´ÐеÄÊÇÔÚͬһ·þÎñÆ÷ÉÏ
µÄVM£¬ServerVMClientUserTransactionÊÇÒ»¸ö¿Í»§¶ËµÄUsertransactionʵÏÖ£¬Ëü½«ËùÓеÄUserTransactionµ÷ÓÃίÍиøÁË·þÎñÆ÷¶Ë
µÄTransactionManager¡£ºÍJBossÖеĴó¶àÊý·þÎñÒ»Ñù£¬UserTransactionµÄ±»×÷Ϊһ¸öMBeanÀ´ÊµÏֺ͹ÜÀí¡£Ëüͨ¹ýJNDIÃû³Æ
UserTranaction±»°ó¶¨ÔÚJNDIµÄÏàӦλÖÃÉÏ¡£

ͼ4-9 JBossTx ʵ¼ÊÄ£ÐÍ
5.JBoss ¼Ü¹¹µÄ¿ÉÀ©Õ¹ÐÔ
ͨ¹ýÉÏÃæ¶ÔÓÚJBoss¼Ü¹¹µÄÌÖÂÛ£¬ÎÒÃÇ¿ÉÒÔ¿´³öÔÚJBoss¼Ü¹¹Éè¼ÆÖеÄÁ½¸öÖØÒªµÄÌØÐÔ£¬
µÚÒ»ÊÇʹÓÃJMX×÷Ϊһ¸öÈí¼þ×ÜÏß´¹Ö±µÄ¹á´©ÆäËùÓеķþÎñ£¬Í¨¹ý½«ÐµķþÎñ×é¼þ×ñÑJMX¹æ·¶¹Ò½ÓÉÏ"×ÜÏß"£¬Ê¹µÃϵͳÀ©Õ¹ÏÖÓеķþÎñ
±äµÃÈÝÒס£¿É²åÈëʽ¿ò¼Ü±»¹ã·ºµÄÔËÓÃÓÚ·þÎñµÄʵÏÖ¡£¿ª·¢Õß¿ÉÒÔÑ¡ÔñËûÃÇÐèÒªµÄ·þÎñ²¢±àдËûÃÇËùÐèÒªµÄÏàӦʵÏÖ£¬Í¨¹ý¶¨ÒåÔÚ
²¿ÊðÃèÊöÎļþÖУ¬ÈÃJBoss·þÎñÆ÷ÖªµÀ¡£ÁíÒ»¸öÊÇÈÝÆ÷±»Éè¼Æ³ÉΪ¶¯Ì¬´úÀí»úÖÆ£¬ÕâÑùʹÈÝÆ÷µÄʵÏÖ±äµÃ¼òµ¥ºÍʹ¿ª·¢Õß±ÜÃâ·Ñ¾¢µÄ
½«jarÎļþ½øÐÐÔ¤±àÒëÒÔ»ñµÃstubºÍskeleton´úÂë¡£µ«ÊÇÕâÑù×öDZÔÚµÄÎÊÌâÊÇÐÔÄܺͿɲâÐÔ£¬ÒòΪÎÒÃÇÖªµÀjava·´Éä»úÖÆ»áÒýÆðÐÔÄÜ
µÄËðʧ¡£JBossÖдæÔÚ×ÅÏàÓ¦µÄÓÅ»¯·½°¸²¢ÇÒÔÚ½«À´µÄÑо¿ÖÐÎÒÃÇ»áÂÛÊö¸ÃÓÅ»¯·½·¨ÔÚʲôʱºò¹¤×÷²¢ÇÒÊÇÈçºÎ¹¤×÷µÄ¡£
6. ½áÂÛ
ÔÚÕâÆªÎÄÕÂÖУ¬ÎÒÃÇÌÖÂÛÁËJBoss¸ÅÄîÐԼܹ¹Ä£ÐͺÍʵ¼Ê¼Ü¹¹Ä£ÐÍ¡£ÎÒÃÇͨ¹ýʹÓÃÄæ¹¤³Ì¹¤¾ßºÍÈ˹¤×·×ÙÔ´´úÂëµÄ·½·¨´´½¨ÁËÒ»¸ö×ÛºÏ
µÄʵ¼ÊÄ£ÐÍ£¬ÎÒÃÇ·¢ÏÖʵ¼ÊÄ£ÐͺͻùÓÚÎĵµµÄ¸ÅÄîÐÔÄ£ÐÍÓÐ׎ϴóµÄ²îÒì¡£Õâ¾ÍÊÇΪʲôʵ¼ÊÄ£ÐÍÊÇ´¦ÓÚʵÏÖ²ãÃæµÄ¶«Î÷Ëü¸ü½Ó½üÓÚ
"ÕæÊµµÄ¹ÊÊÂ"¡£Êµ¼ÊÄ£ÐÍչʾÁËJBossÓ¦Ó÷þÎñÆ÷µÄ¶ÀÌØµÄ¡¢ÌØÊâµÄÉè¼Æ¡£ÎÒÃdz¢ÊÔ׎«Õâ¸ö·½·¨Ìṩ¸øJ2EE²úÆ·µÄ¼ì²âÖÐÈ¥¡£²»ÐÒµÄ
ÊÇ£¬Ô´´úÂë²¢²»¶¼ÊÇÓÐЧµÄ¶øÇÒÄæ¹¤³Ì½á¹ûÒ²²»ÍêÈ«ÓÐЧµÄ£¬Õ⽫µ¼ÖÂÎóµ¼£¬ÎÒÃÇÖ»ÄÜ×öµ½JBoss¼Ü¹¹Ä£Ðͺ͸ÅÄîÐÔÄ£Ð͵ıȽϡ£
ËäÈ»£¬ÔÚÕâÆªÎÄÕÂÖÐÎÒÃÇ·ÖÎöJBoss¼Ü¹¹µÄ·½·¨·Ç³£µÄÁîÈËÐË·Ü£¬µ«ÕâÖÖ½Ó´¥ÊÇÓÐÏ޵ġ£ÎÒÃÇÒÀȻûÓлñµÃһЩ¼Ü¹¹¶ÔÓÚÖÊÁ¿ÒòËØÓ°Ïì
µÄ½áÂÛ£¬±ÈÈç˵ÐÔÄÜ£¬ÒòΪÕâÈ¡¾öÓÚÔËÐÐÆÚÄÚ×é¼þºÍ×ÓϵͳµÄ¶àÑùÐÔ¡£´Óʵ¼ÊÄ£ÐÍÖÐÎÒÃÇ»ñµÃµÄÊǾ²Ì¬·ÖÎö£¬Ò»¸ö¾ßÓпÉÄÜÐԵĽâ¾ö
·½°¸ÊÇ·ÖÎöÏàÓ¦µÄÔ´´úÂë²¢ÔÚÔËÐÐÆÚÖиú×ÙÆä×é¼þ²¢²âÊÔËüµÄÐÔÄÜ¡£ÔÚÕâÀ¸ÅÄîÐԼܹ¹Ä£Ðͽ«ºÍÈí¼þʵÏÖÄ£ÐÍÏàÓ³É䣬ÏàÓ¦µÄ½Úµã
½«±íÏÖÈí¼þµÄ¹¦ÄÜ×é¼þ£¬ÏàÓ¦µÄÁ÷³Ì½«±íÏÖ¿ØÖÆÁ÷¡£Êµ¼Ê¼Ü¹¹Ä£Ðͽ«±»Ó³Éä³ÉΪϵͳִÐÐÄ£ÐÍ£¬Ëü½«ÌåÏÖ³öÀàËÆÓÚÍøÂç¶ÓÁеĹؼü¼ÆËã
»ú×ÊÔ´¡£Òò´Ë£¬ÕâÊÇÒ»¸ö»ùÓڼܹ¹·ÖÎöµÄ¿ÉÐеÄJBossÐÔÄܲâÊÔ·½·¨¡£ÎÒÃǵŤ×÷ÊÇ·ÖÎöJBoss¼Ü¹¹ÒÔʹÎÒÃǸüÁ˽âϵͳ¡£½ÓÏÂÀ´Òª×öµÄ
ÊÇ£¬Í¨¹ýÕâ´Î·ÖÎöÀ´»ñµÃJBossÓ¦Óõijõ²½µÄ½âÎöÐÔÄ£ÐÍ£¬·ÖÎö´úÂëÊÇ¿ÉÐеIJâÊÔ·½·¨²¢¿É²âÊÔËüµÄÐÔÄÜ¡£
7. ²Î¿¼×ÊÁÏ
1.JBoss Home Page http://www.jboss.org/
2.JBoss Documentation http://www.jboss.org/doco.jsp
3.JBoss Quick Techincal Overview http://www.ejbean.com/resources/free-open/jboss. html
4.Prof. Richard C. Holt's Home Page http://plg.uwaterloo.ca/~holt/
5.Ivan T. Bowman, Richard C. Holt and Neil V. Brewster, Linux as a Case Study: Its Extracted Software Architecture, ICSE 99, Los Angeles, May 99.
6.How do I deploy Enterprise JavaBean to JBoss http://otn.oracle.com/products/jdev/ howtos/appservers/deploy_to_jboss.html
7.The art of EJB deployment http://www.javaworld.com/javaworld/jw-08-2001/jw- 0803-ejb_p.html
8.Superior app management with JMX http://www.javaworld.com/javaworld/jw-06- 2001/jw-0608-jmx_p.html
9.DynaServer: System Support for Dynamic Content Web Servers http://www.cs.rice. edu/CS/Systems/DynaServer/
10.MTE Project http://www.cmis.csiro.au/adsat/mte.htm
11.TogetherSoft Home Page http://www.togethersoft.de/downloads/down_index.html
12.David Garlan and Mary Shaw, An Introduction to Software Architecture, CMU Software Engineering Institute Technical Report, 1994
13.Loyd G. Williams, Connie U. Smith, Performance Evaluation of Software Architecture, WOSP 98, Santa Fe.N.M
14.Felix Bachman, Len Bass, Charles Buhman, Santiago Comella-Dorda, Fred Long, John Robert, Robert Seacord, Kurt Wallnau,Technical Concepts of Component-based Software Engineering, Technical Report, CMU/SEI-2000-TR-008 ESC-TR-2000-007
8. Êý¾Ý×Öµä
[J2EE] Java 2
Enterprise Edition from Sun MicroSystem. It is a web operationg system
[JMX] the Java Management eXtension (TM)
to offer standard interfaces to the management of its components as well as the
applications deployed on it.
[JAWS] Just Another Web Storage
[JCA] The J2EE Connector Architecture
[JNDI] Java Naming and Directory Interface
[RMI] Remote Method Invocation. It is
Sun's object request broker(ORB).
[JRMP] Java Remote Method Protocal.
[JTA] Java Transaction API.
Appendix-1
Figure Appendix-1 StatelessSessionContainer Concrete
Architectual Model
Appendix-2
Figure Appendix-2 StatefulSessionContainer Concrete
Architectual Model
Appendix-3
Figure Appendix-3 A COTS EJB Container Conceptual
Architecture Model
Submitted on April 29,2002. This work is done in 15 working days.
You are more than welcome to write to the author about this work. Any of your
comment is greatly apprieciated.
© Copyright Jenny Liu, all rights reserved