Ñо¿ÏîÄ¿: 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

  1. ½éÉÜ

    1.1 JBossÊÇʲô
    1.2 ¶¯»ú
    1.3 ·½·¨
    1.4 ×éÖ¯
  2. JBoss·þÎñÆ÷¼Ü¹¹Ò»ÀÀ

    2.1 JMX - ²ã´Î
    2.2 JBoss Ö÷Ҫģ¿é
    2.3 ËüÊÇÈçºÎ¹¤×÷µÄ?
  3. ¼Ü¹¹Ä£Ð͸ÅÄî

    3.1 ÈÝÆ÷µÄ¸ÅÄîÐԼܹ¹Ä£ÐÍ - ²åÈëʽ
    3.1.1 Ö÷ÒªµÄ×é¼þºÍ½Ó¿Ú
    3.1.2 ÒÀÀµÐÔ
    3. 2 JBoss ÃüÃû·þÎñ¸ÅÄîÄ£ÐÍ
    3.2.1 Ö÷ÒªJNDI API
    3.2.2 Ö÷Òª×é¼þºÍ½Ó¿Ú
    3.2.3 ÒÀÀµÐÔ
    3. 3 JBossCMP¸ÅÄîÄ£ÐÍ
    3.3.1 Ö÷Òª×é¼þºÍ½Ó¿Ú
    3.3.2 ÒÀÀµÐÔ
    3. 4 JBossTx¸ÅÄîÄ£ÐÍ
    3.4.1 Ö÷Òª×é¼þºÍ½Ó¿Ú
    3.4.2 ÒÀÀµÐÔ
  4. ʵ¼Ê¼Ü¹¹Ä£ÐÍ

    4.1 ÈÝÆ÷ʵ¼ÊÄ£ÐÍ
    4.1.1 »ñµÃ×ÛºÏʵ¼ÊÄ£Ð͵ķ½·¨
    4.1.2 ·ÇÕý¹æ×é¼þºÍÒÀÀµ
    4.1.3 ʵÌåBeanÈÝÆ÷µÄʾÀýºÍËüµÄÖ´Ðз½·¨µ÷ÓõIJå¼þ
    4.2 JBossÃüÃû·þÎñ¸ÅÄîÄ£ÐÍ
    4.2.1 ÌØÊâ×é¼þºÍÏ໥¹ØÏµ
    4.2.2 ¿Í»§¶Ë»ñµÃEJB ±¾µØ¶ÔÏóµÄÀý×Ó
    4.3 JBossCMP¸ÅÄîÄ£ÐÍ
    4.3.1 ÌØÊâ×é¼þºÍÁªÏµ
    4.4 JBoss ½»Ò×¹ÜÀíʵÌåÄ£ÐÍ
    4.4.1 ÌØÊâ×é¼þºÍ¹ØÁª
  5. JBoss ¼Ü¹¹µÄ¿ÉÀ©Õ¹ÐÔ

  6. ½áÂÛ

  7. ²Î¿¼

  8. Êý¾Ý×Öµä

  9. ¸½Â¼

ͼʾÁбí

  1. Figure 1-1 JBoss×ÜÌå¸ÅÄîÄ£ÐÍ
  2. Figure 2-1 JMX²ã´ÎÄ£ÐÍ
  3. Figure 3-1 ÈÝÆ÷¸ÅÄî¼Ü¹¹Ä£ÐÍ
  4. Figure 3-2 À¹½ØÆ÷µ÷ÓÃ'Pipe'
  5. Figure 3-3 JBossÃüÃû·þÎñ¸ÅÄîÄ£ÐÍ Services Conceptual Model
  6. Figure 3-4 JBoss CMP·þÎñ¸ÅÄîÄ£ÐÍ
  7. Figure 3-5 JBossTx¸ÅÄî¼Ü¹¹Ä£ÐÍ
  8. Figure 4-1 ÈÝÆ÷Ï໥ÒÀÀµÍ¼
  9. Figure 4-2 JBossÃüÃû·þÎñ¸ÅÄîÄ£ÐÍ
  10. Figure 4-3 ·½·¨µ÷ÓÃÏûϢͼ
  11. Figure 4-4 ʵÌåBeanÈÝÆ÷¸ÅÄî¼Ü¹¹Ä£ÐÍ
  12. Figure 4-5 ¿Í»§¶ËºÍEJBÈÝÆ÷µÄ½»»¥Í¼
  13. Figure 4-6 JBossCMPÒÀÀµÓë¼Ì³Ðͼand Inherency Diagram
  14. Figure 4-7 JBossCMP¸ÅÄîÄ£ÐÍ
  15. Figure 4-8 JBossTxÒÀÀµÓë¼Ì³Ðͼ
  16. Figure Appendix-1 StatelessSessionContainer¸ÅÄî¼Ü¹¹Ä£ÐÍ Concrete Architectual Model
  17. Figure Appendix-2 StatefulSessionContainer¸ÅÄî¼Ü¹¹Ä£ÐÍ Concrete Architectual Model
  18. 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µÄ¹¦ÄܰüÀ¨£º

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ÈÝÆ÷²¢²»×öÌ«¶àµÄ¸´ÔӵŤ×÷£¬ËüÖ»ÊÇÌṩÁËÒ»¸öÁªÏµ²»Í¬²å¼þµÄ¿ò¼Ü¡£

µ±Ö´Ðпͻ§¶ËÇëÇóʱ£¬ÈÝÆ÷µÄ¿ò¼ÜÒÀÀµÓÚÍⲿµÄÆäËûµÄ·þÎñ¹¦Äܿ顢ÃüÃû·þÎñ¡¢½»Ò×·þÎñ¡¢°²È«·þÎñºÍ×ÊÔ´¹ÜÀí¡£¾Ù¸öÀý×Ó£¬ µ±¿Í»§¶ËÇëÇóÒ»¸ö½»Ò×ÐÅÏ¢½«¸üÐÂÊý¾Ý¿âÄÚÈÝ£¬ÈÝÆ÷»áͨ¹ýÃüÃû·þÎñ»ñµÃÏàÓ¦µÄÊý¾ÝÔ´ºÍ×ÊÔ´¹ÜÀíÌṩµÄÏàÓ¦µÄÊý¾ÝÔ´Çý¶¯¡£ Õû¸ö½»Ò×¹ý³ÌÔÚÈÝÆ÷ÄÚ½øÐУ¬½»Ò×¹ÜÀíÆ÷ºÍ×ÊÔ´¹ÜÀíÆ÷Óɽ»Ò×·þÎñ½øÐпØÖÆ¡£

²»Ïó´«Í³µÄ·Ö²¼Ê½ÏµÍ³¹¹¼Ü£¬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
dependency diagram
Figure 4-1 container dependecy diagram

inherence diagram
Figure 4-2 container inherence diagram

message 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²¢Í¨¹ýÈÝÆ÷´«µÝ¡£

ÔÚ²¿ÊðÆÚÖÐÈÝÆ÷ÀàÐÍÊÇͨ¹ý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¡£ JBossCMP Diagram
ͼ 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