Sun ONE logo     ÉÏÒ»¸ö      Ŀ¼      Ë÷Òý      ÏÂÒ»¸ö     
Sun ONE Application Server 7, Update 1 ¹ÜÀíÔ±Ö¸ÄÏ



ÅäÖÃÃüÃûºÍ×ÊÔ´

±¾ module ½éÉÜÁË Sun ONE Application Server ʹÓÃµÄ J2EE ×ÊÔ´£¬²¢ÌÖÂÛÁËÓÃÓÚ´´½¨ºÍ¹ÜÀíÕâЩ×ÊÔ´µÄ·½·¨£º

±¾ module °üÀ¨ÒÔÏÂÖ÷Ì⣺

¹ØÓÚ J2EE ÃüÃû·þÎñºÍ×ÊÔ´

J2EE Ó¦ÓóÌÐò£¨°üÀ¨ EJB¡¢Web Ó¦ÓóÌÐò×é¼þºÍÓ¦ÓóÌÐò¿Í»§»ú£©¿ÉÒÔ·ÃÎÊÐí¶àÖÖÀàµÄ×ÊÔ´£¬ÀýÈ磬×ÊÔ´¹ÜÀíÆ÷¡¢Êý¾ÝÔ´£¨Èç SQL Êý¾ÝÔ´£©¡¢Á¬½Ó¹¤³§¡¢Óʼþ»á»°¡¢Java Message Service Ä¿±ê¶ÔÏóÒÔ¼° URL Á¬½Ó¹¤³§¡£J2EE ƽ̨ͨ¹ý Java ÃüÃûºÍĿ¼½Ó¿Ú (JNDI) ÃüÃû·þÎñ½«ÕâЩ×ÊÔ´Ìṩ¸øÓ¦ÓóÌÐò¡£

Sun ONE Application Server ʹÄú¿ÉÒÔ´´½¨ºÍ¹ÜÀíÒÔÏ J2EE ×ÊÔ´£º

JDBC Êý¾ÝÔ´

JDBC Êý¾ÝÔ´ÊÇÒ»ÖÖ J2EE ×ÊÔ´£¬¿ÉʹÓà Sun ONE Application Server ½øÐд´½¨ºÍ¹ÜÀí¡£

JDBC API ÊÇÓÃÓں͹ØϵÊý¾Ý¿âϵͳ½øÐÐÁ¬½ÓµÄ API¡£JDBC API ÓÐÁ½¸ö²¿·Ö£º

  • Ò»¸öÓ¦ÓóÌÐò¼¶½Ó¿Ú£¬Ó¦ÓóÌÐò×é¼þʹÓÃËüÀ´·ÃÎÊÊý¾Ý¿â¡£
  • Ò»¸ö·þÎñÌṩÕß½Ó¿Ú£¬ÓÃÓÚ½« JDBC Çý¶¯³ÌÐòÁ¬½Óµ½ J2EE ƽ̨¡£

JDBC DataSource ¶ÔÏó´ú±íÒÔ Java ±à³ÌÓïÑÔ±àдµÄÊý¾ÝÔ´¡£´Ó±¾ÖÊÉÏÀ´½²£¬Êý¾ÝÔ´ÊÇÒ»ÖÖ´æ´¢Êý¾ÝµÄ¹¤¾ß¡£Êý¾ÝÔ´¿ÉÄÜ»áÏñ´óÐ͹«Ë¾µÄ×ÛºÏÊý¾Ý¿âÒ»Ñù¸´ÔÓ£¬Ò²¿ÉÄÜ»áÏñ°üº¬ÐкÍÁеÄÎļþÒ»Ñù¼òµ¥¡£JDBC Êý¾ÝÔ´ÊÇÒ»ÖÖ J2EE ×ÊÔ´£¬¿Éͨ¹ý Sun ONE Application Server ½øÐд´½¨ºÍ¹ÜÀí¡£

ÓÐ¹Ø JDBC Êý¾ÝÔ´µÄÏêϸÐÅÏ¢£¬Çë²Î¼û¡°¹ØÓÚ JDBC ×ÊÔ´¡±¡£

Java Óʼþ»á»°

JMS Ä¿±êÊÇ J2EE ×ÊÔ´£¬¿Éͨ¹ý Sun ONE Application Server ½øÐд´½¨ºÍ¹ÜÀí¡£

Ðí¶à Internet Ó¦ÓóÌÐò¶¼ÐèÒª¾ßÓз¢Ë͵ç×ÓÓʼþ֪ͨµÄÄÜÁ¦£¬Òò´Ë£¬J2EE ƽ̨ÌṩÁË JavaMail API ÒÔ¼°Ò»¸öʹӦÓóÌÐò×é¼þ¿ÉÒÔ·¢ËÍ Internet ÓʼþµÄ JavaMail ·þÎñÌṩÕß¡£JavaMail API ÓÐÁ½¸ö²¿·Ö£º

  • Ò»¸öÓ¦ÓóÌÐò¼¶½Ó¿Ú£¬Ó¦ÓóÌÐò×é¼þʹÓÃËüÀ´·¢ËÍÓʼþ¡£
  • Ò»¸ö·þÎñÌṩÕß½Ó¿Ú£¬ÒÔ J2EE SPI ¼¶±ðʹÓá£

Java Óʼþ»á»°ÊÇ J2EE ×ÊÔ´£¬¿Éͨ¹ý Sun ONE Application Server ½øÐд´½¨ºÍ¹ÜÀí¡£ÓÐ¹Ø Java Óʼþ»á»°µÄÏêϸÐÅÏ¢£¬Çë²Î¼û¡°¹ØÓÚ Java Óʼþ×ÊÔ´¡±¡£

JMS Ä¿±ê

Java ÏûÏ¢´«ËÍ·þÎñ (JMS) ÊÇÒ»ÖÖÓÃÓÚÏûÏ¢´«Ë͵ıê×¼ API£¬Ö§³Ö¿É¿¿µÄµã¶ÔµãÏûÏ¢´«ËÍÒÔ¼°¡°·¢²¼-¶©ÔÄ¡±Ä£Ê½¡£´Ë·þÎñÒªÇó JMS ÌṩÕ߼ȿÉÒÔʵÏÖµã¶ÔµãÏûÏ¢´«ËÍ£¬Í¬Ê±Ò²¿ÉÒÔʵÏÖ¡°·¢²¼-¶©ÔÄ¡±ÏûÏ¢´«ËÍ¡£

JMS ÌṩÁËÁ½ÖÖͨÓõĹÜÀí¶ÔÏóÀàÐÍ£ºÁ¬½Ó¹¤³§ºÍÄ¿±ê¡£¾¡¹ÜÕâÁ½ÖÖÀàÐͶ¼°üº¬ÌṩÕßÌض¨µÄÐÅÏ¢£¬µ«ËüÃÇÔÚ JMS ¿Í»§»úÖеÄÓÃ;¼«Îª²»Í¬¡£Á¬½Ó¹¤³§ÓÃÓÚ´´½¨ÓëÏûÏ¢·þÎñÆ÷µÄÁ¬½Ó£¬¶øÄ¿±ê¶ÔÏóÔòÓÃÓÚ±êʶ JMS ÏûÏ¢´«ËÍ·þÎñµÄÎïÀíÄ¿±ê¡£

¹ØÓÚ Java ÃüÃûºÍĿ¼½Ó¿Ú (JNDI)

±¾½Ú½«ÌÖÂÛ Java ÃüÃûºÍĿ¼½Ó¿Ú (JNDI)¡£Java ÃüÃûºÍĿ¼½Ó¿Ú (JNDI) ÊÇÒ»ÖÖÓ¦ÓóÌÐò±à³Ì½Ó¿Ú (API)£¬ÓÃÓÚ·ÃÎʲ»Í¬ÀàÐ͵ÄÃüÃûºÍĿ¼·þÎñ¡£J2EE ×é¼þͨ¹ýµ÷Óà JNDI ²éÕÒ·½·¨À´¶¨Î»¶ÔÏó¡£

±¾½Ú°üÀ¨ÒÔÏÂÖ÷Ì⣺

JNDI Ìåϵ½á¹¹

JNDI Ìåϵ½á¹¹°üº¬Ò»¸öÓ¦ÓóÌÐò±à³Ì½Ó¿Ú (API) ÒÔ¼°Ò»¸ö·þÎñÌṩÕß½Ó¿Ú (SPI)¡£Java Ó¦ÓóÌÐòʹÓà JNDI API ·ÃÎʸ÷ÖÖÃüÃûºÍĿ¼·þÎñ¡£SPI ¿ÉÒÔʹ¸÷ÖÖÃüÃûºÍĿ¼·þÎñ͸Ã÷µØ²åÈ룬ÕâÑù Java Ó¦ÓóÌÐòÔò¿ÉÒÔʹÓà JNDI API ·ÃÎÊËüÃǵķþÎñ¡£ÏÂͼ¡°JNDI Ìåϵ½á¹¹¸Å¿ö¡±ËµÃ÷ÁË¿Éͨ¹ý JNDI API ·ÃÎʵķþÎñ£º

   JNDI Ìåϵ½á¹¹¸Å¿ö
´ËͼÏÔʾÁË JNDI Ìåϵ½á¹¹µÄ¸Å¿ö¡£

J2EE ÃüÃû·þÎñ

JNDI Ãû³ÆÊDZãÓÚÓû§Ê¹ÓõĶÔÏóÃû³Æ¡£ÕâЩÃû³Æͨ¹ý J2EE ·þÎñÆ÷ÌṩµÄÃüÃûºÍĿ¼·þÎñ°ó¶¨µ½Æä¶ÔÏó¡£ÓÉÓÚ J2EE ×é¼þͨ¹ý JNDI API ·ÃÎÊ´Ë·þÎñ£¬Òò¶øÎÒÃÇͨ³£½«Ò»¸ö¶ÔÏóµÄ±ãÓÚʹÓõÄÃû³Æ³Æ×÷¸Ã¶ÔÏóµÄ JNDI Ãû³Æ¡£Pointbase Êý¾Ý¿âµÄ JNDI Ãû³ÆΪ jdbc/Pointbase¡£Pointbase Æô¶¯Ê±£¬Sun ONE Application Server ½«´ÓÅäÖÃÎļþÖжÁÈ¡ÐÅÏ¢£¬²¢×Ô¶¯½« JNDI Êý¾Ý¿âÃû³ÆÌí¼Óµ½Ãû³Æ¿Õ¼ä¡£

J2EE Ó¦ÓóÌÐò¿Í»§»ú¡¢ÆóÒµ Bean ÒÔ¼° Web ×é¼þ¶¼ÐèÒª¾ßÓÐȨÏÞ£¬²ÅÄÜ·ÃÎÊ JNDI ÃüÃû»·¾³¡£

Ó¦ÓóÌÐò×é¼þµÄÃüÃû»·¾³ÊÇÒ»ÖÖ»úÖÆ£¬Ê¹ÓÃËü¿ÉÒÔÔÚ²¿Êð»ò»ã±àÆÚ¼ä×Ô¶¨ÒåÓ¦ÓóÌÐò×é¼þµÄÉÌÒµÂß¼­¡£Ê¹ÓÃÓ¦ÓóÌÐò×é¼þµÄ»·¾³¼´¿É¶ÔÓ¦ÓóÌÐò×é¼þ½øÐÐ×Ô¶¨Ò壬¶øÎÞÐè·ÃÎÊ»ò¸ü¸ÄÓ¦ÓóÌÐò×é¼þµÄÔ´´úÂë¡£

J2EE ÈÝÆ÷ʵÏÖ J2EE Ó¦ÓóÌÐò×é¼þµÄ»·¾³£¬²¢½«¸Ã»·¾³×÷Ϊ JNDI ÃüÃûÉÏÏÂÎÄÌṩ¸ø J2EE Ó¦ÓóÌÐò×é¼þʵÀý¡£J2EE Ó¦ÓóÌÐò×é¼þµÄ»·¾³µÄʹÓ÷½Ê½ÈçÏ£º

  • Ó¦ÓóÌÐò×é¼þµÄÉÌÒµ·½·¨Ê¹Óà JNDI ½Ó¿Ú·ÃÎʸû·¾³¡£Ó¦ÓóÌÐò×é¼þÌṩÕßÔÚ²¿ÊðÃèÊö·ûÖÐÉùÃ÷Ó¦ÓóÌÐò×é¼þÐèÒªÆä»·¾³ÔÚÔËÐÐʱÌṩµÄËùÓеĻ·¾³Ïî¡£
  • ÈÝÆ÷ʵÏÖ´æ´¢Ó¦ÓóÌÐò×é¼þ»·¾³µÄ JNDI ÃüÃûÉÏÏÂÎÄ¡£ÈÝÆ÷»¹ÌṩÁ˲¿ÊðÕß¿ÉÒÔÓÃÓÚ´´½¨ºÍ¹ÜÀíÿ¸öÓ¦ÓóÌÐò×é¼þµÄ»·¾³µÄ¹¤¾ß¡£
  • ²¿ÊðÕßʹÓÃÈÝÆ÷ÌṩµÄ¹¤¾ß£¬¿ÉÒÔ³õʼ»¯Ó¦ÓóÌÐò×é¼þµÄ²¿ÊðÃèÊö·ûÖÐÉùÃ÷µÄ»·¾³Ïî¡£²¿ÊðÕß¿ÉÒÔÉèÖúÍÐ޸Ļ·¾³ÏîµÄÖµ¡£
  • ÈÝÆ÷ʹ»·¾³ÃüÃûÉÏÏÂÎÄÔÚÔËÐÐʱ¿ÉÓÃÓÚÓ¦ÓóÌÐò×é¼þʵÀý¡£Ó¦ÓóÌÐò×é¼þµÄʵÀýʹÓà JNDI ½Ó¿Ú»ñÈ¡»·¾³ÏîµÄÖµ¡£

ÿ¸öÓ¦ÓóÌÐò×é¼þ¶¨ÒåÁËÆä±¾ÉíµÄ»·¾³ÏºÏ¡£Ò»¸öÓ¦ÓóÌÐò×é¼þÔÚͬһÈÝÆ÷ÄÚµÄËùÓÐʵÀý¹²ÏíÏàͬµÄ»·¾³Ïî¡£²»ÔÊÐíÓ¦ÓóÌÐò×é¼þʵÀýÔÚÔËÐÐʱÐ޸Ļ·¾³¡£ÓÐ¹Ø J2EE ÈÝÆ÷£¨Èç Web ÈÝÆ÷ºÍ EJB ÈÝÆ÷£©ÈçºÎʹÓà JNDI ÃüÃû·þÎñ²éÕÒ¶ÔÏóµÄÏêϸÐÅÏ¢£¬Çë²Î¼û¡°ÅäÖà J2EE ÈÝÆ÷¡±¡£

ÃüÃû²Î¿¼ºÍ°ó¶¨ÐÅÏ¢

×ÊÔ´²Î¿¼ÊDz¿ÊðÃèÊö·ûÖеÄÒ»ÖÖÔªËØ£¬ÓÃÓÚ±êʶ¸Ã×ÊÔ´µÄ×é¼þµÄ±àÂëÃû³Æ¡£¸ü¾ßÌåµØ˵£¬±àÂëÃû³Æ²Î¿¼×ÊÔ´µÄÁ¬½Ó¹¤³§¡£ÔÚϽڸø³öµÄʾÀýÖУ¬×ÊÔ´²Î¿¼Ãû³ÆÊÇ jdbc/SavingsAccountDB¡£

×ÊÔ´µÄ JNDI Ãû³ÆÓë×ÊÔ´²Î¿¼µÄÃû³ÆÊDz»Í¬µÄ¡£Ê¹ÓôËÃüÃû·½·¨£¬ÄúÐèÒªÔÚ½øÐв¿Êð֮ǰÏÈÓ³ÉäÕâÁ½¸öÃû³Æ£¬µ«´Ë·½·¨Ò²ÓÃÓÚ½«×é¼þÓë×ÊÔ´·ÖÀ뿪¡£ÓÉÓÚ´ËÃüÁî·½·¨¿ÉÓÃÓÚ·ÖÀ룬Òò¶øÈç¹û×é¼þÒÔºóÐèÒª·ÃÎÊÆäËü×ÊÔ´£¬Ôò²»±ØÔÚ´úÂëÖиü¸ÄÃû³Æ¡£ÕâÒ»Áé»îÐÔʹÄú¿ÉÒÔ¸ü¼ÓÈÝÒ׵شÓÏÈÇ°´æÔÚµÄ×é¼þ»ã±à J2EE Ó¦ÓóÌÐò¡£

ÏÂ±í¡°JNDI ²éÕÒ¼°Æä¹ØÁª²Î¿¼¡±ÁгöÁË Sun ONE Application Server ʹÓÃµÄ J2EE ×ÊÔ´µÄ JNDI ²éÕÒ¼°Æä¹ØÁª²Î¿¼¡£

   JNDI ²éÕÒ¼°Æä¹ØÁª²Î¿¼

JNDI ²éÕÒÃû³Æ

¹ØÁª²Î¿¼

java:comp/env

 

Ó¦ÓóÌÐò»·¾³Ïî

 

java:comp/env/jdbc

 

JDBC Êý¾ÝÔ´×ÊÔ´¹ÜÀíÆ÷Á¬½Ó¹¤³§

 

java:comp/env/ejb

 

EJB ²Î¿¼

 

java:comp/UserTransaction

 

UserTransaction ²Î¿¼

 

java:comp/env/mail

 

JavaMail »á»°Á¬½Ó¹¤³§

 

java:comp/env/url

 

URL Á¬½Ó¹¤³§

 

java:comp/env/jms

 

JMS Á¬½Ó¹¤³§ºÍÄ¿±ê

 

java:comp/ORB

 

Ó¦ÓóÌÐò×é¼þÖ®¼ä¹²ÏíµÄ ORB ʵÀý

 

J2EE ±ê×¼²¿ÊðÃèÊö·ûÖеÄÃüÃû²Î¿¼

ÃüÃû²Î¿¼ÊÇÒ»ÖÖ×Ö·û´®£¬Ó¦ÓóÌÐòʹÓÃÕâÖÖ×Ö·û´®ÔÚÖ¸¶¨µÄÃüÃûÉÏÏÂÎÄÖвéÕÒ¶ÔÏó¡£Ã¿¸ö J2EE Ó¦ÓóÌÐò¶¼ÓÐÒ»¸öÃüÃûÉÏÏÂÎÄ£¬¶øÇÒÆä²Î¿¼ÔÚ±ê×¼×é¼þ²¿ÊðÃèÊö·ûÖнøÐÐÁËÅäÖᣱ¾½Ú½éÉÜÁË Sun ONE Application Server ÖÐʹÓõıê×¼²¿ÊðÃèÊö·û¹¦ÄÜ¡£±¾½Ú°üÀ¨ÒÔÏÂÖ÷Ì⣺

Ó¦ÓóÌÐò»·¾³Ïî

»·¾³ÏîÊÇʹÓà <env-entry> ¶¨ÒåµÄ£¬ËüÌṩÁËÒ»ÖÖΪ J2EE Ó¦ÓóÌÐòÖ¸¶¨²¿Êðʱ¼ä²ÎÊýµÄ·½·¨¡£×¢Ò⣬Èç¹ûÊÇ Web Ó¦ÓóÌÐò£¬Ôò¿ÉÒÔʹÓà <context-param> ¶¨Òå servlet ÉÏÏÂÎijõʼ»¯²ÎÊý£¬µ« <env-entry> ÊÇÊ×Ñ¡·½·¨£¬ÒòΪӦÓóÌÐò²¿ÊðÕßͨ¹ýÃ÷È·Ö¸¶¨´ËÀàÓ¦ÓóÌÐò²ÎÊýµÄÃû³Æ¡¢ÀàÐͺÍÖµÀ´¶ÔÆä½øÐÐÅäÖá£

ÏÂÃæµÄÑùÀý½éÉÜÁË J2EE ±ê×¼²¿ÊðÃèÊö·ûÖÐÖ¸¶¨µÄ <env-entry> µÄÓï·¨£º

<env-entry>
<description> Send pincode by mail </description>
<env-entry-name> mailPincode </env-entry-name>
<env-entry-value> false </env-entry-value>
<env-entry-type> java.lang.Boolean </env-entry-type>
</env-entry>

<env-entry-type> ±ê¼ÇΪÏîÖ¸¶¨ÁËÒ»¸öÈ«ÏÞ¶¨µÄÀàÃû¡£ÏÂÃæÊÇÒ»¸ö´úÂë¶Î£¬ËüʹÓà JNDI ´ÓÓ¦ÓóÌÐò×é¼þ£¨¸ÃÊõÓïÖ¸ servlet/JSP »òʵÌå Bean »ò IIOP Ó¦ÓóÌÐò¿Í»§»ú£©ÖвéÕÒ <env-entry>£º

Context initContext = new InitialContext();
Boolean mailPincode = (Boolean)
initContext.lookup("java:comp/env/mailPincode");

// Óû§¿ÉÒÔÔÚ×ÓÉÏÏÂÎÄÖÐʹÓÃÏà¶ÔÃû
Context envContext = initContext.lookup("java:comp/env");
Boolean mailPincode = (Boolean)
envContext.lookup("mailPincode");

EJB ²Î¿¼

³ýÁ˲¿ÊðÃèÊö·ûÖ§³ÖÖ®Í⣬JNDI ÃüÃû·þÎñʹӦÓóÌÐòÄܹ»Ê¹Óá°Âß¼­¡±Ãû³Æ£¨³ÆΪ EJB ²Î¿¼£©Ó³Éäµ½ÆóÒµ Bean µÄÖ÷½Ó¿Ú£¬ÈçÏÂÃæµÄʾÀýËùÊö£º

<ejb-ref>
<ejb-ref-name> ejb/EmplRecord </ejb-ref-name>
<ejb-ref-type> Entity </ejb-ref-type>
<home> com.wombat.empl.EmployeeRecordHome </home>
<remote> com.wombat.empl.EmployeeRecord </remote>
<ejb-link> EmployeeEJB </ejb-link>
</ejb-ref>

Ïñ JSP ÕâÑùµÄÓ¦ÓóÌÐò×é¼þ¿ÉÒÔʹÓà JNDI ·ÃÎÊ EJB Ö÷¶ÔÏó£¬ÈçÏÂÃæµÄʾÀýËùÊö£º

Context initContext = new InitialContext();
Context envContext = initContext.lookup("java:comp/env");
Object result = envContext.lookup("ejb/EmplRecord");
EmployeeRecordHome emplRecordHome = (EmployeeRecordHome)
javax.rmi.PortableRemoteObject.narrow(result, EmployeeRecordHome.class);

ejb-ref-name ÔªËض¨ÒåÁËÓ¦ÓóÌÐò´úÂëÖÐʹÓõÄ×Ö·û´®£¨ÈçÉÏÃæ¸ø³öµÄʾÀýËùʾ£©¡£ejb-link ÔªËؽ«´Ë²Î¿¼Á´½Óµ½Ê¹Óà ejb-name ÔªËض¨ÒåµÄÄ¿±êÆóÒµ Bean£¬¶ø ejb-name ÔªËØÊôÓÚ ejb-jar.xml Öж¨ÒåµÄʵÌå Bean¡£»¹¿ÉÒÔÌṩÁ´½Ó¹¦ÄÜ£¬¶øÎÞÐèÐÞ¸ÄÓ¦ÓóÌÐò²¿ÊðÃèÊö·û»òÆóÒµ Bean ÃèÊö·û¡£

×ÊÔ´¹ÜÀíÆ÷Á¬½Ó¹¤³§µÄ²Î¿¼

¹¤³§ÊÇÒ»ÖÖ¸ù¾ÝÐèÒª´´½¨ÆäËü¶ÔÏóµÄ¶ÔÏó¡£×ÊÔ´¹¤³§´´½¨×ÊÔ´¶ÔÏó£¬ÀýÈ磬Êý¾Ý¿âÁ¬½Ó»òÏûÏ¢·þÎñÁ¬½Ó¡£ËüÃÇÊÇʹÓñê×¼²¿ÊðÃèÊö·ûÖÐµÄ <resource-ref> ÔªËؽøÐÐÅäÖõġ£

ÒÔÏÂʾÀý½éÉÜÁ˹¤³§µÄʹÓãº

ʾÀý A£º

ÒÔÏÂʾÀýÉùÃ÷Á˶Էµ»Ø¶ÔÏóÀàÐÍΪ javax.sql.DataSource µÄ JDBC Á¬½Ó¹¤³§µÄ²Î¿¼£º

<resource-ref>
<description> Primary database </description>
<res-ref-name> jdbc/primaryDB </res-ref-name>
<res-type> javax.sql.DataSource </res-type>
<res-auth> Container </res-auth>
</resource-ref>

ʾÀý B£º

ÏÂÃæÊÇ¶Ô JavaMail »á»°×ÊÔ´¹¤³§µÄ²Î¿¼µÄʾÀý£º

<resource-ref>
<description> mail Session </description>
<res-ref-name> mail/Session </res-ref-name>
<res-type> javax.mail.Session </res-type>
<res-auth> Container </res-auth>
</resource-ref>

<res-type> ÊǸÃ×ÊÔ´¹¤³§µÄÈ«ÏÞ¶¨ÀàÃû¡£¿ÉÒÔ½« Container »ò Application ×÷Ϊֵָ¶¨¸ø <res-auth> ±äÁ¿¡£ÓйØÅäÖà JavaMail »á»°×ÊÔ´¹¤³§µÄÏêϸÐÅÏ¢£¬Çë²Î¼û¡°¹ØÓÚ Java Óʼþ×ÊÔ´¡±¡£

Èç¹ûÖ¸¶¨ÁË Container£¬Web ÈÝÆ÷»áÔÚ½«×ÊÔ´¹¤³§°ó¶¨µ½ JNDI ²éÕÒ×¢²á±í֮ǰ½øÐÐÑéÖ¤¡£Èç¹ûÖ¸¶¨ÁË Application£¬servlet ±ØÐëÒÔ±à³Ì·½Ê½½øÐÐÑéÖ¤¡£²»Í¬ÀàÐ͵Ä×ÊÔ´¹¤³§½«ÔÚÃèÊöÁË×ÊÔ´ÀàÐ͵ĵ¥¶ÀµÄ×ÓÉÏÏÂÎÄÖнøÐвéÕÒ£¬ÈçÏÂËùʾ£º

  • jdbc/£¬ÓÃÓÚ JDBC javax.sql.DataSource ¹¤³§
  • jms/£¬ÓÃÓÚ JMS javax.jms.QueueConnectionFactory »ò javax.jms.TopicConnectionFactory
  • mail/£¬ÓÃÓÚ JavaMail javax.mail.Session ¹¤³§
  • url/£¬ÓÃÓÚ java.net.URL ¹¤³§

ÏÂÃæÊÇÒ»¸ö´úÂë¶Î£¬Ëüͨ¹ýÓÃÈÝÆ÷´¦ÀíÑéÖ¤£¬´ÓÓ¦ÓóÌÐò×é¼þ»ñÈ¡ JDBC Á¬½Ó£º

InitialContext initContext = new InitialContext();
DataSource source =
(DataSource) initContext.lookup("java:comp/env/jdbc/primaryDB");
Connection conn = source.getConnection();

×¢Ò⣬ΪÁËÈ·±£ÕâЩ×ÊÔ´²Î¿¼Õý³£¹¤×÷£¬res-ref-name ±ØÐëÔÚÔËÐÐʱӳÉäµ½ÓÐЧµÄ×ÊÔ´¹¤³§¡£

×ÊÔ´»·¾³²Î¿¼

×ÊÔ´»·¾³²Î¿¼ÌṩÁËÒ»ÖÖ¿ÉÒÔͨ¹ý JNDI ²éÕÒ·ÃÎÊÓë×ÊÔ´¹ØÁªµÄ¹ÜÀí¶ÔÏóµÄ·½·¨¡£ÀýÈ磬ij¸öÓ¦ÓóÌÐò¿ÉÄÜÐèÒª·ÃÎÊ JMS Ä¿±ê¶ÔÏó¡£±ê×¼²¿ÊðÃèÊö·ûÖж¨ÒåµÄ <resource-env-ref> ÔªËØʹӦÓóÌÐò¿ÉÒÔÉùÃ÷×ÊÔ´ÒªÇó¡£

<resource-env-ref> Óë <resource-ref> ÔªËØÖ®¼äµÄÖ÷ÒªÇø±ðÊÇ <resource-ref> ûÓÐÌض¨µÄ×ÊÔ´ÑéÖ¤ÒªÇ󣬵«Á½ÖÖÔªËض¼±ØÐëͨ¹ý×ÊÔ´¹¤³§ÃèÊö·û½øÐб¸·Ý¡£

ʾÀý£º

<resource-env-ref>
<description> My Topic </description>
<res-env-ref-name> jms/MyTopic </res-ref-name>
<res-env-ref-type> javax.jms.Topic </res-type>
</resource-env-ref>

ʹÓÃÏÂÃæ´úÂë¶Î£¬Äú¿ÉÒÔ·ÃÎÊ JMS Ö÷Ìâ¶ÔÏó£º

InitialContext initContext = new InitialContext();
javax.jms.Topic myTopic =
(javax.jms.Topic) initContext.lookup("java:comp/env/jms/MyTopic");

×¢Ò⣬ΪÁËʹÕâЩ resource-env-ref ±äÁ¿Õý³£¹¤×÷£¬¹ÜÀíÔ±±ØÐëÔÚÔËÐÐʱʹĿ±ê×ÊÔ´¹¤³§¿ÉÓá£ÓйطÃÎÊ JMS Ö÷ÌâÄ¿±êºÍ¶ÓÁÐÄ¿±êµÄÏêϸÐÅÏ¢£¬Çë²Î¼û¡°Ê¹Óà JMS ·þÎñ¡±¡£

UserTransaction ²Î¿¼

J2EE ÒªÇóÈÝÆ÷ÔÚ JNDI Ãû³Æ java:comp/UserTransaction ´¦Ìṩ UserTransaction ¶ÔÏóʵÏÖ¡£UserTransaction ¶ÔÏóʹӦÓóÌÐò¿ÉÒÔÆô¶¯¡¢Ìá½»ºÍÖÐÖ¹ÊÂÎñ¡£

ÒªÒÔ±à³Ì·½Ê½Æô¶¯ºÍÖ´ÐÐÊÂÎñ£¬×é¼þͨ¹ýÕë¶Ô java:comp/UserTransaction Ö´ÐÐ JNDI ²Î¿¼£¬»ñÈ¡ÈÝÆ÷µÄĬÈÏÊÂÎñЭµ÷Æ÷µÄ²Î¿¼¡£·µ»ØµÄ¶ÔÏóʵÏÖ javax.transaction.UserTransaction ½Ó¿Ú£¬²¢¿ÉÓÃÓÚÔÚ³ÌÐòÖÐÆô¶¯¡¢Ìá½»¡¢»Ø¹öºÍ²éѯÊÂÎñµÄ״̬¡£Sun ONE Application Server ÖÐµÄ JNDI ʵÏÖÖ§³ÖÖîÈç¶ÔÊÂÎñЭµ÷Æ÷µÄ²éÕÒ¡£ÓÐ¹Ø javax.transaction.UserTransaction ½Ó¿ÚµÄÏêϸÐÅÏ¢£¬Çë²Î¼û¡°Ê¹ÓÃÊÂÎñ·þÎñ¡±¡£

³õʼÃüÃûÉÏÏÂÎÄ

Sun ONE Application Server ÖеÄÃüÃûÖ§³ÖÖ÷Òª»ùÓÚ J2EE 1.3£¬Í¬Ê±Ìí¼ÓÁËһЩÔöÇ¿¹¦ÄÜ¡£µ±Ó¦ÓóÌÐò×é¼þͨ¹ý InitialContext() ´´½¨³õʼÉÏÏÂÎÄʱ£¬Sun ONE Application Server ·µ»ØÒ»¸ö³äµ±Ó¦ÓóÌÐòÃüÃû»·¾³µÄ¾ä±úµÄ¶ÔÏ󡣴˶ÔÏóÓÖΪ java:comp/env namespace ÌṩÁË×ÓÉÏÏÂÎÄ¡£Ã¿¸öÓ¦ÓóÌÐò»ñÈ¡Æä×Ô¼ºµÄÃû³Æ¿Õ¼ä£¬Õâ¾ÍÊÇ˵£¬java:comp/env namespace ÊÇÕë¶Ôÿ¸öÓ¦ÓóÌÐòµÄ£¬¶øÇÒÒ»¸öÓ¦ÓóÌÐòµÄÃû³Æ¿Õ¼äÖа󶨵ĶÔÏó²»ÓëÆäËüÓ¦ÓóÌÐòÖа󶨵ĶÔÏó·¢Éú³åÍ»¡£

COSNaming ·þÎñ

EJB »¥²Ù×÷ÐÔЭÒéÒªÇóʹÓà COSNaming ЭÒ飬ÒÔ±ãʹÓà JNDI API ²éÕÒ EJB ¶ÔÏó¡£

ÒªÔÚ CosNaming ·þÎñÖз¢²¼ EJBHome ¶ÔÏó²Î¿¼£¬ÔòÐèҪʹÓà EJB ÈÝÆ÷¡£CosNaming ±ØÐëÔÚ¶¨ÒåµÄ CosNaming Ä£¿éÖÐʵÏÖ IDL ½Ó¿Ú£¬²¢Ê¹¿Í»§»ú¿ÉÒÔͨ¹ý IIOP µ÷ÓýâÎöºÍÁбí²Ù×÷¡£

CosNaming ·þÎñÔÚÌṩ¸ù NamingContext ¶ÔÏóµÄÖ÷»ú¡¢¶Ë¿ÚºÍ¶ÔÏó¹Ø¼ü×Öʱ£¬±ØÐë×ñÊØ CORBA Interoperable Name Service ¹æ·¶ÖеÄÒªÇó¡£CosNaming ±ØÐëÄܹ»·þÎñÓÚʹÓÃÌṩµÄÖ÷»ú¡¢¶Ë¿ÚºÍ¶ÔÏó¹Ø¼ü×ֵĸù NamingContext µÄ IIOP µ÷Óá£

ÐèҪʹÓÿͻ§»úÈÝÆ÷£¨¼´ EJB¡¢Web »òÓ¦ÓóÌÐò¿Í»§»úÈÝÆ÷£©ÒÔ°üº¬ JNDI CosNaming ·þÎñÌṩÕߣ¬¸Ã·þÎñÌṩÕßʹÓà Interoperable Name Service ¹æ·¶Öж¨ÒåµÄ»úÖÆÓë·þÎñÆ÷µÄ CosNaming ·þÎñ½øÐÐÁªÏµ£¬²¢Í¨¹ý±ê×¼ CosNaming API ½âÎö EJBHome ¶ÔÏó¡£JNDI CosNaming ·þÎñÌṩÕß¿ÉÄÜʹÓà JNDI SPI Ìåϵ½á¹¹£¬Ò²¿ÉÄܲ»Ê¹ÓøÃÌåϵ½á¹¹¡£JNDI CosNaming ·þÎñÌṩÕß±ØÐë´ÓÒÔÏ URL ´´½¨¶ÔÏó²Î¿¼£¬²ÅÄÜ·ÃÎÊ·þÎñÆ÷µÄ CosNaming ·þÎñµÄ¸ù NamingContext£º

corbaloc:iiop:1.2@<host>:<port>/<objectkey>£¨ÆäÖУ¬<host>¡¢<port> ºÍ <objectkey> ÊÇÓÉ·þÎñÆ÷µÄ CosNaming ·þÎñÌṩµÄ»òͨ¹ýÒ»ÖÖµÈЧ»úÖÆÌṩµÄ¸ù NamingContext µÄÖµ£©¡£

²¿Êðʱ£¬¿Í»§»úÈÝÆ÷µÄ¿ª·¢ÕßÓ¦¸ÃΪ¿Í»§»ú×é¼þµÄ²¿ÊðÃèÊö·ûÖÐÿ¸ö ejb-ref ÔªËØ»ñÈ¡·þÎñÆ÷µÄ CosNaming ·þÎñµÄÖ÷»ú¡¢¶Ë¿ÚºÍ¶ÔÏó¹Ø¼ü×Ö£¬ÒÔ¼°·þÎñÆ÷ EJBHome ¶ÔÏóµÄ CosNaming Ãû³Æ£¨ÀýÈ磬ͨ¹ýä¯ÀÀ·þÎñÆ÷µÄÃû³Æ¿Õ¼ä£©¡£ÕâÑù£¬ejb-ref-name£¨ÓÉ JNDI ²éÕÒµ÷ÓÃÖеĿͻ§»ú´úÂëʹÓ㩽«»áÁ´½Óµ½ EJBHome ¶ÔÏóµÄ CosNaming Ãû³Æ¡£ÔËÐÐʱ£¬¿Í»§»ú×é¼þµÄ JNDI ²éÕÒµ÷ÓÃʹÓà CosNaming ·þÎñÌṩÕߣ¬¸Ã·þÎñÌṩÕßÁªÏµ·þÎñÆ÷µÄ CosNaming ·þÎñ¡¢½âÎö CosNaming Ãû³Æ²¢½« EJBHome ¶ÔÏó²Î¿¼·µ»Øµ½¿Í»§»ú×é¼þ¡£

ÓÉÓÚ EJBHome ¶ÔÏóµÄÃû³ÆÔÚ CosNaming ·þÎñ£¨Í¨¹ýÌṩµÄÖ÷»úºÍ¶Ë¿Ú¿ÉÒÔ·ÃÎÊ£©µÄÃüÃû¿Õ¼ä·¶Î§Ö®ÄÚ£¬Òò´ËûÓбØÒª½áºÏ¿Í»§»úÈÝÆ÷ºÍ·þÎñÆ÷ÈÝÆ÷µÄÃû³Æ¿Õ¼ä¡£

ʹÓà CosNaming µÄºÃ´¦ÊÇ£¬²»½ö¿ÉÒÔ»ñµÃÓë·Ç J2EE CORBA ¿Í»§»úºÍ·þÎñÆ÷¸üºÃµÄÄÚ²¿»¥²Ù×÷ÐÔ£¬»¹¿ÉÒÔ¸üºÃµØÓëÄÚ²¿»¥²Ù×÷ÐÔËùÐèµÄ IIOP »ù´¡¼Ü¹¹½øÐм¯³É¡£ÓÉÓÚ CosNaming ½ö´æ´¢ CORBA ¶ÔÏó£¬Òò´Ë£¬¹©Ó¦É̺ܿÉÄÜ»áʹÓÃÆäËüÆóҵĿ¼·þÎñ£¬ÒÔ±ã´æ´¢ÆäËü×ÊÔ´¡£

Sun ONE Application Server °´ÕÕ J2EE 1.3 ¹æ·¶¼¯³ÉÁË JNDI µÄËùÓÐÃüÃû×ÊÔ´¡£

CosNaming ÌṩÕß.

ΪÁËÖ§³ÖÈ«¾Ö JNDI Ãû³Æ¿Õ¼ä£¨Ê¹Æä½ÓÊÜ IIOP Ó¦ÓóÌÐò¿Í»§»úµÄ·ÃÎÊ£©£¬Sun ONE Application Server °üÀ¨ÁËÖ§³Ö¶Ô CORBA ²Î¿¼£¨Ô¶³Ì EJB ²Î¿¼£©½øÐа󶨵ġ¢»ùÓÚ J2EE µÄ CosNaming ÌṩÕß¡£·µ»Øµ½ IIOP ¿Í»§»úµÄ InitialContext ÊÇ CosNaming ÌṩÕß¡£Ò»¸ö Sun ONE Application Server ·þÎñÆ÷µÄʵÀý×¢²áÁË IIOP ¿Í»§»úÒª²éÕÒ²¢°ó¶¨µ½µÄʵÌå Bean¡£

×¢Ò⣬Sun ONE Application Server ´¦Àí´æ´¢ÔÚ CosNaming ÖеĶÔÏ󣬶ø±¾µØ JNDI ÃüÃû»·¾³ÊÇÔÝʱµÄ£ºÒ²¾ÍÊÇ˵£¬ÔÚÿ´Î·þÎñÆ÷Æô¶¯ÒÔ¼°Ó¦ÓóÌÐòÖØмÓÔØʱ£¬¶¼»áÔٴΰÑËùÓÐÏà¹Ø¶ÔÏóÖØа󶨵½Ãû³Æ¿Õ¼ä¡£ÓйØÅäÖÃ¶Ô CORBA/IIOP ¿Í»§»úµÄÖ§³ÖµÄÏêϸÐÅÏ¢£¬Çë²Î¼û¡°Îª Corba/IIOP ¿Í»§»úÅäÖ÷þÎñÆ÷¡±¡£

JNDI Á¬½Ó¹¤³§

¶ÔÓÚ J2EE Web Ó¦ÓóÌÐò£¬web.xml ÎļþÖеIJ¿ÊðÃèÊö·ûÊǶ¨ÒåÓ¦ÓóÌÐò»·¾³Ïî¡¢×ÊÔ´¹ÜÀíÆ÷£¨Èç SQL Êý¾ÝÔ´£©Á¬½Ó¹¤³§»ò EJB µÄ²Î¿¼µÄռλ·û¡£Ó¦ÓóÌÐòʹÓà J2EE ÈÝÆ÷ÌṩµÄ JNDI InitialNamingContext ²éÕÒÕâЩ²Î¿¼¡£ÕâÑù£¬½öͨ¹ý¶Ô²¿ÊðÃèÊö·û½øÐиü¸Ä£¨¼´²»ÐèÒª·ÃÎÊ»òÐÞ¸ÄÓ¦ÓóÌÐòµÄÔ´´úÂ룩£¬Ó¦ÓóÌÐò¼´¿ÉÒÆÖ²µ½²»Í¬µÄÓ¦ÓóÌÐò·þÎñÆ÷»·¾³ÖС£Í¬ÑùµØ£¬J2EE ÒªÇó½«ÊµÌå Bean µÄ²¿ÊðÃèÊö·û (ejb-jar.xml) ÒÔ¼° IIOP Ó¦ÓóÌÐò¿Í»§»ú (application-client.xml) ×÷ΪÕâЩ JNDI ÃüÃû²Î¿¼µÄÖ÷Òª¹¤¾ß¡£

Á¬½Ó¹¤³§ÊÇÒ»ÖÖ¶ÔÏó£¬ËüÉú³Éʹ J2EE ×é¼þÄܹ»·ÃÎÊ×ÊÔ´µÄÁ¬½Ó¶ÔÏó¡£Êý¾Ý¿âµÄÁ¬½Ó¹¤³§ÊÇÒ»ÖÖ javax.sql.DataSource ¶ÔÏ󣬸öÔÏó´´½¨ java.sql.Connection ¶ÔÏó¡£

ÔÚ Sun ONE Application Server ÖУ¬Äú¿ÉÒÔÅäÖ÷ÃÎÊÒÔÏÂ×ÊÔ´ºÍ×ÊÔ´¹¤³§µÄ·½Ê½£º

  • JDBC Á¬½Ó¹¤³§
  • »ùÓÚ MQ µÄ JMS Á¬½Ó¹¤³§
  • JavaMail »á»°Á¬½Ó¹¤³§
  • JCA Á¬½ÓÆ÷¹¤³§
  • Óû§±àдµÄÆÕͨ×Ô¶¨Òå×ÊÔ´¶ÔÏ󹤳§¡£
  • Ö§³ÖÖîÈç LDAP ÕâÑùµÄÍⲿ×ÊԴϵͳÐÅÏ¢¿â

ËùÓÐ Sun ONE Application Server ×ÊÔ´¹¤³§ÊÇÔÚ server.xml ÖÐµÄ <resources> </resources> ±ê¼ÇÄÚÖ¸¶¨µÄ£¬²¢ÇÒ¾ßÓÐÒ»¸öÓà jndi-name ÊôÐÔÖ¸¶¨µÄ JNDI Ãû³Æ¡£´ËÊôÐÔÓÃÓÚÔÚ·þÎñÆ÷·¶Î§ÄÚµÄÃû³Æ¿Õ¼äÖÐ×¢²á¹¤³§¡£²¿ÊðÕß¿ÉÒÔʹÓà resource-ref-mapping ÔªËØ£¬½«Óû§Ö¸¶¨µÄ¡¢Ó¦ÓóÌÐòÌض¨µÄ×ÊÔ´²Î¿¼Ãû³Æ£¨ÔÚ resource-ref »ò resource-env-ref ÔªËØÄÚÉùÃ÷£©Ó³Éäµ½ÕâЩ·þÎñÆ÷·¶Î§ÄÚµÄ×ÊÔ´¹¤³§¡£ÕâÑùÓÐÖúÓÚÔÚ²¿Êðʱ½øÐоö¶¨¸ø¶¨µÄÓ¦ÓóÌÐòʹÓÃÄÄЩ JDBC Çý¶¯³ÌÐò£¨ºÍÆäËü×ÊÔ´¹¤³§£©¡£

×Ô¶¨Òå×ÊÔ´·ÃÎʱ¾µØ JNDI ϵͳÐÅÏ¢¿â£¬Íⲿ×ÊÔ´·ÃÎÊÍⲿ JNDI ϵͳÐÅÏ¢¿â¡£ÕâÁ½ÖÖÀàÐ͵Ä×ÊÔ´¶¼ÐèÒªÓû§Ö¸¶¨µÄ¹¤³§ÀàÔªËØ¡¢JNDI Ãû³ÆÊôÐԵȡ£ÔÚ±¾½ÚÖУ¬ÎÒÃǽ«ÌÖÂÛÈçºÎΪ J2EE ×ÊÔ´ÅäÖà JNDI Á¬½Ó¹¤³§×ÊÔ´£¬ÒÔ¼°ÈçºÎ·ÃÎÊÕâЩ×ÊÔ´¡£

±¾½Ú°üÀ¨ÒÔÏÂÖ÷Ì⣺

´´½¨×Ô¶¨Òå×ÊÔ´

server.xml Öж¨ÒåµÄ custom-resource ÔªËØÌṩÁËÒ»ÖÖÖ¸¶¨×Ô¶¨ÒåµÄ·þÎñÆ÷·¶Î§µÄ×ÊÔ´¶ÔÏ󹤳§µÄ·½·¨¡£ÕâÖÖ¶ÔÏ󹤳§ÊµÏÖ javax.naming.spi.ObjectFactory ½Ó¿Ú¡£´ËÔªËؽ«Ò»¸öÒªÔÚ·þÎñÆ÷·¶Î§µÄÃüÃû¿Õ¼äÖÐʹÓÃµÄ JNDI Ãû³Æ£¨Í¨¹ý jndi-name ×ÓÔªËؽøÐÐÖ¸¶¨£¬¾ÍÏñÆäËü Sun ONE Application Server ×ÊÔ´Ò»Ñù£©¡¢ÀàÐÍ¡¢Æä×ÊÔ´¹¤³§ÀàµÄÃû³ÆÒÔ¼°Ò»×éÓÃÓÚʵÀý»¯ÏàͬÊôÐԵıê×¼ÊôÐÔ¹ØÁªÆðÀ´¡£

ÒÔÏÂʾÀý˵Ã÷ÁËÈçºÎʵÏÖ javax.naming.spi.ObjectFactory ½Ó¿Ú£º

<resources> <custom-resource jndi-name="test/myBean"
res-type="test.MyBean"factory-class="test.MyBeanFactory"
enabled="true">

<property name="foo" value="test custom bean prop" />
</custom-resource>
</resources>

ÄúÐèҪȷ±£¸Ã×ÊÔ´²Î¿¼µÄ»·¾³²Î¿¼ºÍ EJB ²Î¿¼ÒÑÁ´½Óµ½ÅäÖõķþÎñÆ÷·¶Î§µÄ×ÊÔ´£»¶øÕâЩ×ÊÔ´ÊÇʹÓà server.xml ÖÐµÄ custom-resource ºÍ external-jndi-resource ±ê¼Ç¶¨ÒåµÄ¡£¶¯Ì¬µØÖØв¿ÊðÓ¦ÓóÌÐò×é¼þÊÇ JNDI ÃüÃû»·¾³ÖеÄÒ»¸öÎÊÌâ¡£Sun ONE Application Server ½«·¢²¼ËùÓÐÓ¦ÓóÌÐòÌض¨µÄ²Î¿¼£¬²¢½«ËùÓеÄвο¼ÖØа󶨵½Ð°²×°µÄÓ¦ÓóÌÐòµÄÃüÃûÉÏÏÂÎÄÖС£

ʹÓùÜÀí½çÃæ´´½¨×Ô¶¨Òå×ÊÔ´µÄ²½Ö裺

  1. ÔÚ¹ÜÀí½çÃæµÄ×ó²à´°¸ñÖУ¬´ò¿ªÒªÐÞ¸ÄÆä JNDI ÅäÖÃµÄ Sun ONE Application Server ʵÀý¡£
  2. ´ò¿ª¡°JNDI¡±±êÇ©£¬²¢µ¥»÷¡°Custom Resources¡±¡£ÈκÎÒѾ­´´½¨µÄ×Ô¶¨Òå×ÊÔ´½«»áÁбíÏÔʾÔÚÓҲര¸ñÖС£Òª´´½¨ÐµÄ×Ô¶¨Òå×ÊÔ´£¬µ¥»÷¡°New¡±¡£Äú»áÔÚ¹ÜÀí½çÃæµÄÓҲര¸ñÖп´µ½ÏÂͼ¡°JNDI Custom Resources¡±Ò³£º

   ¡°JNDI Custom Resources¡±Ò³
´ËͼÏÔʾÁË¡°JNDI Custom Resources¡±Ò³µÄ¿ÉÅäÖõÄÉèÖá£

  1. ÔÚ¡°JNDI Name¡±×Ö¶ÎÖУ¬ÊäÈëÒª·ÃÎÊ×ÊÔ´µÄÃû³Æ¡£´ËÃû³Æ½«×¢²áµ½ JNDI ÃüÃû·þÎñÖС£
  2. ÔÚ¡°Resource Type¡±×Ö¶ÎÖУ¬ÊäÈëÈ«ÏÞ¶¨µÄÀàÐͶ¨Ò壬ÈçÉÏÃæʾÀýÖÐËùʾ¡£Ó¦×ñÕÕÒÔϸñʽÔÚ¡°Resource Type¡±ÖÐÊäÈ붨Ò壺xxx.xxx¡£
  3. ÔÚ¡°Factory Class¡±×Ö¶ÎÖУ¬ÎªÒª´´½¨µÄ×Ô¶¨Òå×ÊÔ´ÊäÈ빤³§ÀàÃû¡£¸Ã×Ö¶ÎÖеÄÖµÊÇÓû§Ö¸¶¨µÄ¹¤³§ÀàµÄÃû³Æ¡£´ËÀàʵÏÖÁË javax.naming.spi.ObjectFactory ½Ó¿Ú¡£
  4. ÔÚ¡°Description¡±×Ö¶ÎÖУ¬ÎªËù´´½¨µÄ×ÊÔ´ÊäÈë˵Ã÷¡£´Ë˵Ã÷ÊÇ×Ö·û´®Öµ£¬×î¶à¿ÉÒÔ°üº¬ 250 ¸ö×Ö·û¡£
  5. Ñ¡ÖС°Custom Resource Enabled¡±¸´Ñ¡¿ò£¬½«ÆôÓÃ×Ô¶¨Òå×ÊÔ´¡£
  6. µ¥»÷¡°OK¡±±£´æ×Ô¶¨Òå×ÊÔ´¡£

´´½¨Íⲿ JNDI ×ÊÔ´

ʹÓùÜÀí½çÃæ´´½¨Íⲿ×ÊÔ´µÄ²½Ö裺

  1. ÔÚ¹ÜÀí½çÃæµÄ×ó²à´°¸ñÖУ¬´ò¿ªÒªÐÞ¸ÄÆä JNDI ÅäÖÃµÄ Sun ONE Application Server ʵÀý¡£
  2. ´ò¿ª¡°JNDI¡±²¢Ñ¡Ôñ¡°External Resources¡±¡£ÈκÎÒѾ­´´½¨µÄÍⲿ×ÊÔ´½«»áÒÔÁбíÐÎʽÏÔʾÔÚÓҲര¸ñÖС£Òª´´½¨ÐµÄÍⲿ×ÊÔ´£¬µ¥»÷¡°New¡±¡£
  3. Äú»áÔÚ¹ÜÀí½çÃæµÄÓҲര¸ñÖп´µ½ÒÔÏ´°¿Ú£¬Èç¡°JNDI External Resources¡±Ò³ÖÐËùʾ£º

   ¡°JNDI External Resources¡±Ò³
´ËͼÏÔʾ¿ÉÅäÖõġ°JNDI External Resources¡±Ñ¡Ïî¡£

  1. ÔÚ¡°JNDI Name¡±×Ö¶ÎÖУ¬ÊäÈëÒª·ÃÎÊ×ÊÔ´µÄÃû³Æ¡£´ËÃû³Æ½«×¢²áµ½ JNDI ÃüÃû·þÎñÖС£
  2. ÔÚ¡°Resource Type¡±×Ö¶ÎÖУ¬ÊäÈëÈ«ÏÞ¶¨µÄÀàÐͶ¨Ò壬ÈçÉÏÃæʾÀýÖÐËùʾ¡£Ó¦×ñÕÕÒÔϸñʽÔÚ¡°Resource Type¡±ÖÐÊäÈ붨Ò壺xxx.xxx¡£
  3. ÔÚ¡°JNDI Lookup¡±×Ö¶ÎÖУ¬ÊäÈëÒªÔÚÍⲿϵͳÐÅÏ¢¿âÖвéÕÒµÄ JNDI Öµ¡£ÀýÈ磬µ±Äú´´½¨Ò»¸öÓëÍⲿϵͳÐÅÏ¢¿âÁ¬½ÓµÄÍⲿ×ÊԴʱ£¬ÎªÁ˲âÊÔij¸ö Bean À࣬¡°JNDI Lookup¡±¿ÉÄÜ»á¶ÁÈ¡ cn=testmybean¡£
  4. ÔÚ¡°Factory Class¡±×Ö¶ÎÖУ¬ÊäÈë JNDI ¹¤³§ÀàÍⲿϵͳÐÅÏ¢¿â£¨ÀýÈ磬com.sun.jndi.ldap£©¡£´ËÀàʵÏÖÁË javax.naming.spi. ObjectFactory ½Ó¿Ú¡£
  5. ÔÚ¡°Description¡±×Ö¶ÎÖУ¬ÎªËù´´½¨µÄ×ÊÔ´ÊäÈë˵Ã÷¡£´Ë˵Ã÷ÊÇ×Ö·û´®Öµ£¬×î¶à¿ÉÒÔ°üº¬ 250 ¸ö×Ö·û¡£
  6. Ñ¡ÖС°External Resource Enabled¡±¸´Ñ¡¿ò£¬½«ÆôÓÃÍⲿ×ÊÔ´¡£
  7. µ¥»÷¡°OK¡±±£´æ×Ô¶¨Òå×ÊÔ´¡£

·ÃÎÊÍⲿ JNDI ϵͳÐÅÏ¢¿â

ͨ³££¬Sun ONE Application Server ÉÏÔËÐеÄÓ¦ÓóÌÐòÐèÒª·ÃÎÊÍⲿ JNDI ϵͳÐÅÏ¢¿âÖд洢µÄ×ÊÔ´¡£ÀýÈ磬һ°ãµÄ Java ¶ÔÏó¿ÉÄÜ»áÒÔ Java ģʽ´æ´¢ÔÚ LDAP ·þÎñÆ÷ÖС£Íⲿ JNDI ×ÊÔ´ÔªËØÔÊÐíÓû§ÅäÖôËÀàÍⲿ×ÊԴϵͳÐÅÏ¢¿â¡£Íⲿ JNDI ¹¤³§±ØÐëʵÏÖ javax.naming.spi.InitialContextFactory ½Ó¿Ú¡£

ʾÀý£º

<×ÊÔ´>
<!-- external-jndi-resource ÔªËØÖ¸¶¨ÈçºÎ·ÃÎÊ´æ´¢ÔÚÍⲿ
-- JNDI ϵͳÐÅÏ¢¿âÖÐµÄ J2EE ×ÊÔ´¡£ÏÂÃæµÄʾÀý
-- ˵Ã÷ÈçºÎ·ÃÎÊ LDAP Öд洢µÄ Java ¶ÔÏó¡£
-- factory-class ÔªËØÖ¸¶¨ÁË·ÃÎÊ×ÊÔ´¹¤³§Ê±ËùÐèµÄ
-- JNDI InitialContext ¹¤³§¡£ÊôÐÔÔªËØ
-- ÓëÊÊÓÃÓÚÍⲿ JNDI ÉÏÏÂÎĵĻ·¾³ÏàÆ¥Å䣬
-- jndi-lookup-name ÒýÓà JNDI Ãû³Æ£¬²éÕÒ²¢»ñÈ¡
-- Ö¸¶¨µÄ£¨ÔÚ´ËʾÀýÖÐΪ java£©¶ÔÏó¡£
-->
<external-jndi-resource jndi-name="test/myBean"
jndi-lookup-name="cn=myBean"
res-type="test.myBean"
factory-class="com.sun.jndi.ldap.LdapCtxFactory">

<property name="PROVIDER-URL" value="ldap://ldapserver:389/o=myObjects" />
<property name="SECURITY_AUTHENTICATION" value="simple" />
<property name="SECURITY_PRINCIPAL", value="cn=joeSmith, o=Engineering" />
<property name="SECURITY_CREDENTIALS" value="changeit" />
</external-jndi-resource>
</resources>

Ó³ÉäÓ¦ÓóÌÐò×ÊÔ´²Î¿¼

Ó¦ÓóÌÐòÌض¨µÄ×ÊÔ´²Î¿¼±ØÐë±»Ó³Éäµ½Ô¤¶¨ÒåµÄ·þÎñÆ÷·¶Î§µÄ×ÊÔ´¹¤³§¡£Sun ONE Application Server ÌØÓеÄ×ÊÔ´²Î¿¼Ó³ÉäÔªËؾÍÓÃÓÚ´ËÖÖÓÃ;¡£

ÏÂÃæµÄʾÀýÖÐ˵Ã÷ÁËÒ»¸ö Web Ó¦ÓóÌÐòµÄ²¿ÊðÃèÊö·û web.xml£¬Ëü½«×ÊÔ´²Î¿¼Ö¸¶¨Îª JDBC DataSource¡£

<resource-ref>
<res-ref-name> jdbc/EstoreDataSource </res-ref-name>
<res-type> javax.sql.DataSource </res-type>
<res-auth> Container </res-auth>
</resource-ref>

ËùÐèµÄ res-ref-name Ò²¿ÉÒÔÓ³Éäµ½ÈÝÆ÷·¶Î§µÄ Orcale JDBC Á¬½Ó×ÊÔ´¹¤³§£¬ÈçÏÂÃæËùʾ£º

<resource-ref>
<res-ref-name> jdbc/EstoreDataSource </resource-ref-name>
<jndi-name> jdbc/estore/InventoryDB </jndi-name>
</resource-ref>

¹ØÓÚ URL Á¬½Ó¹¤³§×ÊÔ´

URL Á¬½Ó¹¤³§²»ÐèÒªÔÚ server.xml Öж¨ÒåÈκÎ×ÊÔ´¡£ÏàÓ¦µÄ Sun ONE Application Server Ó¦ÓóÌÐò£¨Web »ò ejb£©²¿ÊðÃèÊö·ûµÄ jndi-name ÔªËØÖ¸¶¨ÁËÄ¿±ê URL¡£

ÀýÈ磬ÎÒÃǼٶ¨Ä³¸ö Web Ó¦ÓóÌÐòµÄ²¿ÊðÃèÊö·û web.xml Ö¸¶¨ÁËÒ»¸ö java.net.URL ×ÊÔ´²Î¿¼£¬¶øÇÒ½«¸Ã×ÊÔ´²Î¿¼Ó³Éäµ½ sun-web.xml ÖÐµÄ URL http://www.sun.com/index.html£º

Ó³ÉäÇé¿öÈçÏÂËùʾ£º

<resource-ref>
<res-ref-name>myURL</res-ref-name>
<res-type>java.net.URL</res-type>
<res-auth>Container</res-auth>
</resource-ref>

<sun-web-app>
<resource-ref>
<res-ref-name>myURL</res-ref-name>
<jndi-name> http://www.sun.com/index.html </jndi-name>
</resource-ref>
</sun-web-app>

Ó³ÉäÓ¦ÓóÌÐò×ÊÔ´»·¾³²Î¿¼

Ó¦ÓóÌÐòÌض¨µÄ×ÊÔ´»·¾³²Î¿¼ÉùÃ÷±ØÐë±»Ó³Éäµ½¸ÃÓ¦ÓóÌÐò·þÎñÆ÷µÄÔËÐÐʱ»·¾³ÖпÉÓõÄÄ¿±ê×ÊÔ´¶ÔÏó¡£Sun ONE Application Server Ìض¨µÄÅäÖÃÎļþÖж¨ÒåµÄ×ÊÔ´»·¾³Ó³ÉäÔªËØʹ²¿ÊðÕß¿É°´ÈçÏ·½Ê½½øÐÐÓ³É䣺

ʾÀý£º

<resource-env-ref>
<description> My Topic </description>
<res-env-ref-name> jms/MyTopic </res-ref-name>
<res-env-ref-type> javax.jms.Topic </res-type>
</resource-env-ref>

´Ë²Î¿¼±»Ó³Éäµ½ server.xml Öж¨ÒåµÄ jms/iMQ/Topics/Stocks/SUNW Ö÷Ìâ¡£ÓйØÏêϸÐÅÏ¢£¬Çë²Î¼û¡¶Sun ONE Application ServerAdministrator's Configuration File Reference¡·¡£

<resource-env-ref-mapping>
<res-env-ref-name> jms/MyTopic </res-ref-name>
<jndi-name> jms/iMQ/Topics/Stocks/SUNW </jndi-name>
</resource-env-ref-mapping>

Ó³Éä EJB ²Î¿¼

Ò²¿ÉÒÔ½«ÕæÕýÓÃÓÚÓ¦ÓóÌÐò´úÂëÖÐµÄ ejb-name ºÍÓÃÓÚÄ¿±êÆóÒµ Bean µÄ ejb-name ·ÖÀ뿪¡£µ±Äú²»ÏëÐÞ¸Ä Web Ó¦ÓóÌÐò²¿ÊðÃèÊö·û web.xml ÒÔ¼°Ê¹ÓÃÆóÒµ Bean ²¿ÊðÃèÊö·ûµÄ ejb-name ʱ£¬ÕâÓÈÆäÓÐÓá£Sun ONE Application Server Ìض¨µÄÅäÖÃʹÄú¿ÉÒÔ½« ejb-ref-name ÔªËØÓ³É䵽Ŀ±ê Bean µÄ ejb-name£¬¶øÎÞÐèʹÓà Sun ONE Application Server Ìض¨µÄ²¿ÊðÃèÊö·ûÖÐµÄ ejb-ref-mapping ÔªËØ¡£

ʾÀý£º

<ejb-ref>
<ejb-ref-name> ejb/EmplRecord </ejb-ref-name>
<ejb-ref-type> Entity </ejb-ref-type>
<home> com.wombat.empl.EmployeeRecordHome </home>
<remote> com.wombat.empl.EmployeeRecord </remote>
</ejb-ref>

<ejb-ref>
<ejb-ref-name> ejb/EmplRecord </ejb-ref-name>
<jndi-name> AccountEJB </jndi-name>
</ejb-ref-mapping>

¹ØÓÚ Persistence Manager ×ÊÔ´

´ËÄ£¿é½éÉÜÁ˳־ÃÐÔ£¬²¢ÇÒÆäÖн¨Á¢µÄ¿ò¼Ü¿ÉÓÃÓÚ Sun ONE Application Server Ö§³ÖµÄ¿É²å½ÓµÄ Persistence Manager¡£

´ËÄ£¿é°üÀ¨ÒÔÏÂÖ÷Ì⣺

ʲôÊdz־ÃÐÔ£¿

¶àÊýÉÌÒµÓ¦ÓóÌÐòµÄÒ»¸ö¹Ø¼ü·½ÃæÊǶԳ־ÃÐÔÊý¾Ý½øÐгÌÐò²Ù×÷£»³Ö¾ÃÐÔÊý¾Ý¼´´æ´¢ÔÚÓ¦ÓóÌÐòÖ®ÍâµÄ³¤ÆÚ´æÔÚµÄÊý¾Ý¡£¾¡¹Ü½«³Ö¾ÃÐÔÊý¾Ý¶ÁÈëÁÙʱÄÚ´æÖнöΪÁËʹÓûòÐÞ¸ÄÄ¿µÄ£¬µ«¸ÃÊý¾Ý»áд³öµ½¹ØϵÊý¾Ý¿â»òƽÃæÎļþϵͳ½øÐг¤ÆÚ´æ´¢¡£

ÔÚÃæÏò¶ÔÏóµÄ±à³ÌϵͳÖУ¬³Ö¾ÃÐÔÊý¾ÝÔÚÄÚ´æÖбíʾΪӦÓóÌÐò´úÂë²Ù×÷µÄÒ»¸ö»ò¶à¸öÊý¾Ý¶ÔÏó¡£Ò»°ã˵À´£¬Êý¾Ý´æ´¢¿âÖеij־ÃÐÔÊý¾ÝÓëÆäÔÚÄÚ´æÖбíʾΪµÄ³Ö¾ÃÐÔÊý¾Ý¶ÔÏóÖ®¼äµÄͨÐÅÊÇͨ¹ýÐí¶àÈí¼þ²ãʵÏֵģ¬ÈçÏÂͼ¡°»ù±¾³Ö¾ÃÐÔģʽ¡±Ëùʾ£º

   »ù±¾³Ö¾ÃÐÔģʽ
´ËͼÏÔʾÁËÓÃÓÚÄÚ´æÖбíʾµÄ³Ö¾ÃÐÔÊý¾ÝµÄ»ù±¾³Ö¾ÃÐÔģʽ¡£

ÿ¸öÊý¾Ý´æ´¢¿â¶¼ÓÐÒ»¸öͨ¹ýÇý¶¯³ÌÐòÈí¼þÓëÍⲿÊÀ½çµÄ½Ó¿Ú£¬Çý¶¯³ÌÐòÈí¼þÓÃÓÚ½¨Á¢ºÍά»¤Êý¾Ý´æ´¢¿âºÍÓ¦ÓóÌÐòÖ®¼äµÄÁ¬½Ó¡£½¨Á¢Á¬½Óºó£¬½«Ê¹ÓòéѯÓïÑÔ´ÓÊý¾Ý´æ´¢¿â¼ìË÷ÐÅÏ¢²¢½«Êý¾Ý¶ÁÈëÓ¦ÓóÌÐò£¬»òÕß½«Êý¾Ý´ÓÓ¦ÓóÌÐòдµ½Êý¾Ý´æ´¢¿âÖ®ÖС£ÁíÒ»Èí¼þ²ãÌṩÁËÄÚ´æÖеÄÊý¾Ý¶ÔÏóÓëÊý¾Ý´æ´¢¿âÖеÄÐÅÏ¢Ö®¼äµÄÓ³Éä¹Øϵ¡£

ͨ¹ý´ËÆÕͨģʽ£¬³ÌÐòÔ±¿ÉÒÔ½«³Ö¾ÃÐÔÊý¾Ý±íʾΪÔËÐÐʱ¶ÔÏó£¬Ê¹ÆäÓÉÓ¦ÓóÌÐòʹÓúͲÙ×÷¡£´Ëģʽ֧³ÖËùÓеĻù±¾³Ö¾ÃÐÔ²Ù×÷£¬¾­³£ËõдΪ CRUD£º

  • C £­ ´´½¨³Ö¾ÃÐÔÊý¾Ý£¨²åÈëµ½Êý¾Ý´æ´¢¿âÖУ©
  • R £­ ¼ìË÷³Ö¾ÃÐÔÊý¾Ý£¨´ÓÊý¾Ý´æ´¢¿âÖÐÑ¡Ôñ£©
  • U £­ ¸üг־ÃÐÔÊý¾Ý
  • D £­ ɾ³ý³Ö¾ÃÐÔÊý¾Ý

Persistence Manager µÄ½ÇÉ«

Persistence Manager (PM) ¸ºÔð EJB ÈÝÆ÷ÖоßÓÐÈÝÆ÷¹ÜÀíµÄ³Ö¾ÃÐÔµÄʵÌå Bean µÄ³Ö¾ÃÐÔ¡£ÊµÌå Bean ÌṩÕ߸ºÔð½«ÊµÌå Bean ÀàÌṩΪ³éÏóÀà¡£Persistence Manager ÌṩÕߵŤ¾ß¸ºÔðÌṩ¾ßÌåʵÏÖ¡£¿ÉÒÔͨ¹ýÒÔÏ·½Ê½´ïµ½ÒÔÉÏÄ¿±ê£º¶Ô³éÏóʵÌå Bean ¼°Ïà¹ØÀà½øÒ»²½·ÖÀಢÌṩ¾ßÌåʵÏÖ£¬»òÕßͨ¹ýÀûÓ÷â×°ºÍίÍС£

Persistence Manager µÄ¹¤¾ßËùÌṩµÄÀฺÔð¹ÜÀíʵÌå Bean Ö®¼äµÄ¹Øϵ£¬²¢¸ºÔð¹ÜÀí¶ÔÆä³Ö¾ÃÐÔ״̬µÄ·ÃÎÊ¡£PM ¹¤¾ß»¹¸ºÔðÌṩ java.util.Collection ÀàµÄʵÏÖ£¬ÕâЩÀàÓÃÓÚά»¤ÈÝÆ÷¹ÜÀíµÄ¹Øϵ (CMR)¡£

Ô¤²¿Êð Bean ÅäÖÃ

ÆóÒµ Java Bean ±ê׼ΪʵÌå Bean ÌṩÁËÁ½ÖÖ³Ö¾ÃÐÔÀàÐÍ¡£Ò»ÖÖÊÇÈÝÆ÷¹ÜÀíµÄ³Ö¾ÃÐÔ (CMP)£¬ÁíÒ»ÖÖÊÇ Bean ¹ÜÀíµÄ³Ö¾ÃÐÔ (BMP)¡£EJB 2.0 ¹æ·¶Ã»Óж¨Òå EJB ·þÎñÆ÷ºÍ³Ö¾ÃÐÔ¹ÜÀíÆ÷Ö®¼äµÄ±ê×¼ API¡£

±¾½Ú½²ÊöÁ˲¿ÊðºÍ´úÂëÉú³ÉʱµÄ¼¯³ÉÒªÇó¡£²¿Êð¿ÉÓÃÓÚÖ¸¶àÖÖÊÂÇé¡£Ò»°ãÈÏΪ²¿Êð¹ý³Ì°üÀ¨Èý¸ö½ØÈ»²»Í¬µÄ²½Ö裺ÅäÖᢴúÂëÉú³ÉºÍ°²×°¡£

±ØÐëΪһ¸ö Bean Ö¸¶¨¶à¸öÊôÐÔ£¬°üÀ¨ËùÓõij־ÃÐÔ»úÖÆ¡¢³Ö¾ÃÐÔ¹©Ó¦ÉÌ¡¢ËùÓð汾£¬ÒÔ¼°³Ö¾ÃÐÔ»úÖÆËùÐèµÄÆäËüÐÅÏ¢¡£¶àÊýµÄ³Ö¾ÃÐÔ¹©Ó¦É̶¼¾ßÓÐÏîÄ¿µÄ¸ÅÄÏîÄ¿´ú±í¿ÉÒÔ×÷Ϊһ¸öµ¥Î»²¿ÊðµÄËùÓÐÏà¹ØµÄ Bean ¼°Æä´ÓÊôÀࡣÿ¸öÏîÄ¿¿ÉÒÔÓÐÒ»¸ö¹©Ó¦ÉÌÌض¨µÄ xml Îļþ¡£

Ö§³Ö²¿ÊðÓÃ;µÄÈýÖÖ±ê×¼Îļþ£ºejb-jar.xml¡¢sun-ejb-jar.xml ÒÔ¼° sun-cmp-mappings.xml¡£sun-ejb-jar.xml ÖÐÿ¸ö´øÓÐ CMP Bean µÄ EJB Ä£¿é±ØÐë¾ßÓÐÒ»¸ö <pm-descriptors>£¬<pm-descriptors> ÖÐÖÁÉÙ´øÓÐÒ»¸ö <pm-descriptor> ÔªËØ£¨¸ÃÔªËØÖ¸¶¨ÁËÁíÍâÎå¸öÊôÐÔ£©¡£ÕâÎå¸öÊôÐÔÊÇ pm-identifier¡¢pm-version¡¢pm-config¡¢pm-class-generator ÒÔ¼° pm-mapping-factory¡£

Sun ONE Application Server Ìض¨µÄÃèÊö·û£¨ÕýÈçÔÚ sunEjb_jar_2_0.DTD ÖУ©¶¨Òå³Ö¾ÃÐÔ¹ÜÀíÆ÷Ïà¹ØµÄ±ê¼Ç¡£ÒÔÏÂÊÇÒ»¸öÓà Sun ONE Application Server DTD ¶¨ÒåµÄ CMP ÃèÊö·ûÑùÀý£º

PM ÃèÊö·û°üº¬Ò»¸ö»ò¶à¸ö pm ÃèÊö·û£¬µ«ÆäÖÐÖ»ÓÐÒ»¸öÃèÊö·û±ØÐèÔÚÈκÎÖ¸¶¨Ê±¼ä¶¼Ê¹ÓÃ

-->

<!ELEMENT pm-descriptors ( pm-descriptor+, pm-inuse)>

<!--

pm-descriptor ÃèÊöÁËÓëʵÌå Bean ¹ØÁªµÄ³Ö¾ÃÐÔ

¹ÜÀíÆ÷µÄÊôÐÔ

-->

<!ELEMENT pm-descriptor ( pm-identifier, pm-version, pm-config?, pm-class-generator?,

pm-mapping-factory?)>

<!--

´ËÔªËØÃèÊöÁËÌṩ PM ʵÏֵĹ©Ó¦ÉÌ£¬ÀýÈ磬Õâ¿ÉÄÜÊÇ Sun ONE Application Server Transparent Persistence¡¢TopLink¡¢Versant »ò CocoBase£º

-->

<!ELEMENT pm-identifier (#PCDATA)>

<!--

pm-version ½øÒ»²½Ö¸¶¨ÁËҪʹÓÃµÄ PM ¹©Ó¦É̲úÆ·µÄ°æ±¾

-->

<!ELEMENT pm-version (#PCDATA)>

<!--

pm-config Ö¸¶¨ÁËҪʹÓõĹ©Ó¦ÉÌÌض¨µÄÅäÖÃÎļþ

-->

<!ELEMENT pm-config (#PCDATA)>

<!--

pm-class-generator Ö¸¶¨Á˹©Ó¦ÉÌÌض¨µÄ¾ßÌåÀà²úÉúÆ÷

ÕâÊǹ©Ó¦ÉÌÌض¨µÄÀàµÄÃû³Æ£º

-->

<!ELEMENT pm-class-generator (#PCDATA)>

<!--

pm-mapping-factory Ö¸¶¨Á˹©Ó¦ÉÌÌض¨µÄÓ³É乤³§

ÕâÊǹ©Ó¦ÉÌÌض¨µÄÀàµÄÃû³Æ£º

-->

<!ELEMENT pm-mapping-factory (#PCDATA)>

´´½¨Ð嵀 Persistence Manager

ʹÓà ¹ÜÀí½çÃ棬¿ÉÒÔ´´½¨Ð嵀 Persistence Manager ʵÀý¡£´´½¨Ð嵀 Persistence Manager ʵÀýµÄ²½Ö裺

  1. ´Ó¹ÜÀí½çÃæµÄ×ó²à´°¸ñÖУ¬´ò¿ªÒªÎªÆä´´½¨Ð嵀 Persistence Manager µÄ Sun ONE Application Server ʵÀý¡£´ÓÏÔʾµÄ·þÎñÆ÷×é¼þÁбíÖе¥»÷¡°Persistence Manager¡±¡£
  2. ÈκÎÒѾ­Îª Sun ONE Application Server µÄ¸ÃÌض¨ÊµÀý´´½¨µÄ Persistence Manager ½«ÁбíÏÔʾÔÚ¹ÜÀí½çÃæµÄÓҲര¸ñÖС£

  3. Òª´´½¨Ð嵀 Persistence Manager£¬µ¥»÷¡°New¡±¡£Äú»áÔÚ¿´µ½ÒÔÏ´°¿Ú£¬Èçͼ¡°´´½¨Ð嵀 Persistence Manager¡±Ëùʾ£º

  
´ËͼÏÔʾÁËÈçºÎ´´½¨Ðµij־ÃÐÔ¹ÜÀíÆ÷¡£
´´½¨Ð嵀 Persistence Manager

  1. ÕâÊÇÓ¦ÓóÌÐò·þÎñÆ÷ÔËÐÐʱ´ú±íÓ¦ÓóÌÐò²éÕÒÌض¨ Persistence Manager ʱËùÓÃµÄ JNDI Ãû³Æ¡£´ËÃû³Æ±ØÐëÓëÔÚ Sun Ìض¨²¿ÊðÃèÊö·ûµÄʵÌå Bean µÄ CMP ×ÊÔ´ÔªËØÖж¨ÒåµÄÃû³ÆÏàͬ¡£
  2. ÔÚ¡°Description¡±×Ö¶ÎÖУ¬ÎªÐ嵀 Persistence Manager ÊäÈë˵Ã÷¡£´Ë×ֶεÄÖµÊÇ×Ö·û´®£¬×î¶à¿ÉÒÔ°üº¬ 250 ¸ö×Ö·û¡£
  3. ÔÚ¡°Factory Class¡±×Ö¶ÎÖУ¬Îª Persistence Manager ÊäÈ빤³§ÀàÁ¬½Ó¡£setEntityContext ͨ¹ý JNDI Ãû³Æ²éÕÒ¹¦ÄܲéÕÒ´ËÁ¬½Ó¹¤³§¡£¸Ã¹¤³§ÀàÃû³ÆÊÇ´´½¨ Persistence Manager ʵÀýµÄ Persistence Manager Factory µÄÀàÃû¡£Ä¬ÈÏÇé¿öÏ£¬½«´ËÉèÖÃΪ Sun ONE Application Server µÄÄÚ²¿ Persistence Manager Factory ÀࣻÈç¹ûʹÓÃÌæ´úʵÏÖ£¬Ôò±ØÐëÈ·±£´ËÀàÔÚ·þÎñÆ÷Àà·¾¶ÖпÉÓá£
  4. ´Ó¡°Connection Pool¡±ÏÂÀ­ÁбíÖУ¬Ñ¡ÔñÒª½«Ð嵀 Persistence Manager ¼ÓÈëµ½ÆäÖеÄÊý¾Ý¿âÁ¬½Ó³Ø¡£Ê¹ÓÃÁ¬½Ó¼ÓÈ룬ʵÌå Bean ¿ÉÒÔÇëÇ󵥸öÁ¬½Ó£¬²¢Ê¹ÓøÃÁ¬½ÓÖ´Ðжà¸ö¿Í»§»úÏ̵߳IJ¢·¢Óï¾ä¡£ÓëÈκÎÆäËüÊý¾Ý¿â·ÃÎÊÒ»Ñù£¬Persistence Manager ¿ÉÒÔʹÓÃÁ¬½Ó¼ÓÈëÌá¸ßÐÔÄܺͿÉËõ·ÅÐÔ¡£Ñ¡ÔñÏÖÓÐÁ¬½Ó³Ø£¬»òÕßÑ¡Ôñ¡°None Selected¡±£¨Èç¹ûÉÐδ´´½¨Á¬½Ó³Ø£©¡£
  5. ×¢Ò⣺ϵͳ½«×Ô¶¯´´½¨ JDBC ×ÊÔ´£¬ÒÔÔÊÐí PM ÔËÐÐʱʹÓà JNDI °ó¶¨µ½Á¬½Ó³Ø — Èç¹û JDBC ×ÊÔ´µÄ JNDI Ãû³ÆÇ°¼ÓÉÏÒ»¸ö¡°PM¡±Ç°×º£¬ÔòËüÓë PM JNDI Ãû³ÆÍêÈ«Ïàͬ¡£É¾³ý Persistence Manager ͬʱ½«É¾³ý¹ØÁªµÄ JDBC ×ÊÔ´¡£

  6. ÒªÆôÓà Persistence Manager£¬Ñ¡ÖС°Persistence Manager Enabled¡±¸´Ñ¡¿ò¡£Persistence Manager ÏÖÔÚÒÑΪָ¶¨µÄÁ¬½Ó¹¤³§ÆôÓá£
  7. µ¥»÷¡°OK¡±±£´æËù×öµÄ¸ü¸Ä¡£

¹ØÓÚ JDBC ×ÊÔ´

´ËÄ£¿é¸ÅÊöÁË JDBC API£¬È»ºó¾ßÌå½éÉÜÁË JDBC ×ÊÔ´¼°ÆäÔÚ Sun ONE Application Server ÖеÄʵÏÖºÍÓ¦Óá£

´ËÄ£¿é°üÀ¨ÒÔÏÂÖ÷Ì⣺

¹ØÓÚ JDBC API

JDBC API ÊÇÒ»ÖÖ Java API£¬Ëü¿ÉÓÃÓÚ·ÃÎʼ¸ºõËùÓÐÀàÐ͵ıí¸ñʽÊý¾Ý¡££¨ÓÐÒâ˼µÄÊÇ£¬JDBC ÊÇÉ̱êÃû³Æ¶ø²»ÊÇÊ××ÖĸËõд£»È»¶ø£¬JDBC ͨ³£±»ÈÏ×÷ÊÇ¡°Java Database Connectivity¡±µÄËõд¡££©JDBC API °üº¬Ò»×éÓà Java ±à³ÌÓïÑÔ±àдµÄÀàºÍ½Ó¿Ú£¬Îª¹¤¾ß/Êý¾Ý¿â¿ª·¢ÕßÌṩÁ˱ê×¼µÄ API£»¶øÇÒʹÓà JDBC API ¿ÉÒÔÀûÓÃÒ»ÖÖÈ« Java API ±àдÊý¾Ý¿âÓ¦ÓóÌÐò¡£

JDBC API ʹµÃ½« SQL Óï¾ä·¢Ë͵½¹ØϵÊý¾Ý¿âϵͳ¸ü¼ÓÈÝÒ×£¬²¢ÇÒÖ§³Ö SQL µÄËùÓÐÓïÑÔ¡£µ«ÊÇ JDBC 3.0 API ³¬³öÁË SQL µÄ·¶Î§£¬¶øÇÒʹÓëÆäËüÖÖÀàÊý¾ÝÔ´£¨ÈçÊý¾Ý¿âÖ®ÍâµÄÎļþ£©½øÐн»»¥³ÉΪ¿ÉÄÜ¡£

JDBC API µÄÓÅÊÆÔÚÓÚÓ¦ÓóÌÐò¿É·ÃÎʼ¸ºõËùÓеÄÊý¾ÝÔ´£¬²¢ÇÒ¿ÉÒÔʹÓà Java ÐéÄâ»úÔÚÈκÎƽ̨ÉÏÔËÐС£»»ÑÔÖ®£¬ÓÐÁË JDBC API£¬¾Í²»±Ø±àдһ¸ö³ÌÐòÀ´·ÃÎÊ Sybase Êý¾Ý¿â£¬±àдÁíÒ»¸ö³ÌÐòÀ´·ÃÎÊ Oracle Êý¾Ý¿â£¬ÔÙ±àдһ¸ö³ÌÐòÀ´·ÃÎÊ IBM DB2 Êý¾Ý¿â£¬µÈµÈ¡£Äú¿ÉÒÔʹÓà JDBC API ±àдһ¸öÄܹ»½« SQL »òÆäËüÓï¾ä·¢Ë͵½ÏàÓ¦µÄÊý¾ÝÔ´µÄ³ÌÐò¡£Í¬Ê±£¬ÓÐÁËÓà Java ±à³ÌÓïÑÔ±àдµÄÓ¦ÓóÌÐò£¬Äú¾Í²»±ØΪ±àдÔÚ²»Í¬Æ½Ì¨ÉÏÔËÐеIJ»Í¬Ó¦ÓóÌÐò¶ø¸Ðµ½¿àÄÕ¡£Java ƽ̨Óë JDBC API ×éºÏÔÚÒ»Æð£¬Ê¹³ÌÐòÔ±Ö»Ðè½øÐÐÒ»´Î±àд¼´¿É´ÓÈκεط½ÔËÐдúÂë¡£

JDBC API ÓÐʲô¹¦ÄÜ£¿

ʹÓûùÓÚ JDBC ¼¼ÊõµÄÇý¶¯³ÌÐò£¨JDBC Çý¶¯³ÌÐò£©£¬¿ÉÒÔÍê³ÉÒÔÏÂÈý¸ö²½Ö裺

  • ½¨Á¢ÓëÊý¾ÝÔ´µÄÁ¬½Ó
  • ½«²éѯºÍ¸üÐÂÓï¾ä·¢Ë͵½Êý¾ÝÔ´
  • ´¦Àí½á¹û

ÒÔÏ´úÂë¶ÎÊÇÕâÈý¸ö²½ÖèµÄÒ»¸ö¼òµ¥Ê¾Àý£º

Context ctx = new InitialContext();

DataSource ds = (DataSource)ctx.lookup("jdbc/AcmeDB");

Connection con = ds.getConnection("myLogin", "myPassword");

Statement stmt = con.createStatement();

ResultSet rs = stmt.executeQuery("SELECT a, b, c FROM Table1");

while (rs.next()) {

int x = rs.getInt("a");

String s = rs.getString("b");

float f = rs.getFloat("c");

}

¹ØÓÚÊý¾Ý¿â·ÃÎÊģʽ

JDBC API Ö§³ÖË«²ãʽºÍÈý²ãʽÊý¾Ý¿â·ÃÎÊģʽ¡£Sun ONE Application Server Öм¯³ÉÁ˸ü³£ÓõÄË«²ãʽÊý¾Ý¿â·ÃÎÊģʽ¡£

±¾½Ú°üÀ¨ÒÔÏÂÖ÷Ì⣺

Ë«²ãʽÊý¾Ý¿â·ÃÎÊģʽ

ÔÚË«²ãʽÊý¾Ý¿â·ÃÎÊģʽÖУ¬Java С³ÌÐò»òÓ¦ÓóÌÐòʹÓà DBMS רÓÃЭÒéÖ±½ÓÓëÊý¾ÝÔ´½øÐÐͨÐÅ¡£´Ë·ÃÎÊģʽÐèÒª JDBC Çý¶¯³ÌÐò£¬¸ÃÇý¶¯³ÌÐò¿ÉÒÔÓëËù·ÃÎʵÄÌض¨Êý¾ÝÔ´½øÐÐͨÐÅ¡£Óû§µÄÃüÁî´«Êäµ½Êý¾Ý¿â»òÆäËüÊý¾ÝÔ´£¬²¢ÇÒÕâЩÓï¾äµÄ½á¹û±»·µ»Ø¸øÓû§¡£Êý¾ÝÔ´¿ÉÄÜλÓÚÓû§Í¨¹ýÍøÂçÓëÆäÁ¬½ÓµÄÁíһ̨¼ÆËã»úÉÏ¡£´ËÅäÖóÆΪ¿Í»§»ú/·þÎñÆ÷ÅäÖã¬ÆäÖУ¬Óû§µÄ¼ÆËã»ú±»µ±×÷¿Í»§»ú£¬¶øÊý¾ÝÔ´ËùÔڵļÆËã»ú±»µ±×÷·þÎñÆ÷¡£ÍøÂç¿ÉÒÔÊÇÒ»¸ö Intranet£¨ÀýÈ磬¿ÉÓÃÓÚÁ¬½Óij¸ö¹«Ë¾ÄÚ²¿µÄÔ±¹¤£©£¬Ò²¿ÉÒÔÊÇ Internet¡£

Èý²ãʽÊý¾Ý¿â·ÃÎÊģʽ

ÔÚÈý²ãʽÊý¾Ý¿â·ÃÎÊģʽÖУ¬Java С³ÌÐò»òÓ¦ÓóÌÐò½«ÃüÁî·¢Ë͵½·þÎñµÄ¡°Öмä²ã¡±£¬¸ÃÖмä²ãÔÙ½«ÃüÁî·¢Ë͵½Êý¾ÝÔ´¡£¿Í»§»úÓ¦ÓóÌÐòͨ¹ý HTTP¡¢RM¡¢CORBA »òÆäËüµ÷ÓÃÓëÖмä²ã½øÐÐͨÐÅ¡£Öмä²ãͨ¹ý DBMS רÓÃЭÒéÓëÊý¾Ý´æ´¢¿â½øÐÐͨÐÅ¡£Êý¾ÝÔ´´¦ÀíÃüÁ²¢½«½á¹û·¢ËÍ»ØÖмä²ã£¬Öмä²ãÔÙ½«½á¹û·¢Ë͸øÓû§¡£MIS Ö÷¹ÜÃǶÔÈý²ãʽģÐͷdz£¸ÐÐËȤ£¬ÒòΪʹÓÃÖмä²ã¿ÉÒÔ¿ØÖÆÆäËûÈ˶Թ«Ë¾Êý¾ÝµÄ·ÃÎÊÒÔ¼°¿ØÖƿɶԹ«Ë¾Êý¾Ý½øÐеĸüеÄÀàÐÍ¡£Èý²ãʽģʽµÄÁíÒ»¸öÓŵãÊÇ¿ÉÒÔ¼ò»¯Ó¦ÓóÌÐòµÄ²¿Êð¡£×îºóÒ»¸öÓŵãÊÇ£¬Èý²ãʽÌåϵ½á¹¹ÔÚÐí¶àÇé¿öÏ¿ÉÒÔÌṩÐÔÄÜÓÅÊÆ¡£

¹ØÓÚ JDBC Êý¾ÝÔ´

DataSource ¶ÔÏóÔÚ Java ±à³ÌÓïÑÔÖбíʾÊý¾ÝÔ´¡£´Ó±¾ÖÊÉÏÀ´½²£¬Êý¾ÝÔ´ÊÇÒ»ÖÖ´æ´¢Êý¾ÝµÄ¹¤¾ß¡£Êý¾ÝÔ´¿ÉÄÜ»áÏñ´óÐ͹«Ë¾µÄ×ÛºÏÊý¾Ý¿âÒ»Ñù¸´ÔÓ£¬Ò²¿ÉÄÜ»áÏñ°üº¬ÐкÍÁеÄÎļþÒ»Ñù¼òµ¥¡£Êý¾ÝÔ´¿ÉÒÔλÓÚÔ¶³Ì·þÎñÆ÷ÉÏ£¬Ò²¿ÉÒÔλÓÚ±¾µØ×ÀÃæ¼ÆËã»úÉÏ¡£Ó¦ÓóÌÐòʹÓÃÁ¬½Ó·ÃÎÊÊý¾ÝÔ´£¬²¢ÇÒ¿ÉÒÔ½« DataSource ¶ÔÏóÊÓΪһ¸öÓÃÓÚÓë¸Ã DataSource ʵÀý´ú±íµÄÌض¨Êý¾ÝÔ´Á¬½ÓµÄ¹¤³§¡£DataSource ½Ó¿ÚÌṩÁËÁ½ÖÖ½¨Á¢ÓëÊý¾ÝÔ´µÄÁ¬½ÓµÄ·½·¨¡£

DataSource ¶ÔÏóÖаüº¬µÄÊôÐÔ±êʶ²¢ÃèÊöÁ˸öÔÏóËù´ú±íµÄÊý¾ÝÔ´¡£ÁíÍ⣬DataSource ¶ÔÏóʹÓà JNDI ÃüÃû·þÎñ£¬²¢ÇҸöÔÏ󵥶ÀµØ´ÓʹÓÃÆäµÄÓ¦ÓóÌÐòÖд´½¨¡¢²¿ÊðºÍ¹ÜÀí¡£Çý¶¯³ÌÐò¹©Ó¦É̽«Ìṩһ¸öÀ࣬¸ÃÀàÊÇ DataSource ½Ó¿Ú£¨¸Ã¹©Ó¦ÉÌµÄ JDBC 2.0 or 3.0 Çý¶¯³ÌÐò²úÆ·µÄ×é³É²¿·Ö£©µÄ»ù±¾ÊµÏÖ¡£

±¾½Ú°üÀ¨ÒÔÏÂÖ÷Ì⣺

DataSource ¶ÔÏóµÄÊôÐÔ

DataSource ¶ÔÏóÓÐÒ»×éÊôÐÔ£¬ËüÃDZêʶ²¢ÃèÊöÁ˸öÔÏóËù´ú±íµÄÏÖʵÊÀ½çµÄÊý¾ÝÔ´¡£ÕâЩÊôÐÔ°üÀ¨µÄÐÅÏ¢ÓУºÊý¾Ý¿â·þÎñÆ÷µÄλÖá¢Êý¾Ý¿âµÄÃû³Æ¡¢ÓÃÀ´Óë·þÎñÆ÷ͨÐŵÄÍøÂçЭÒ飬µÈµÈ¡£DataSource ÊôÐÔ×ñÕÕ JavaBeans Éè¼Æģʽ£¬²¢ÇÒͨ³£ÊÇÔÚ DataSource ¶ÔÏó²¿Êðʱ½øÐÐÉèÖõġ£

Ϊ´Ùʹ²»Í¬¹©Ó¦ÉÌµÄ DataSource ʵÏÖ±£³ÖÒ»Ö£¬JDBC 2.0 API Ö¸¶¨ÁËÒ»×é±ê×¼ÊôÐÔ£¬²¢ÎªÃ¿¸öÊôÐÔÖ¸¶¨Á˱ê×¼Ãû³Æ¡£

Ò»¸öʵÏÖ DataSource ½Ó¿ÚµÄÀàµÄʵÀý´ú±íÒ»¸öÌض¨Êý¾ÝÔ´¡£¸ÃʵÀýÉú³ÉµÄÿ¸öÁ¬½Ó¶¼½«²Î¿¼Í¬Ò»¸öÊý¾ÝÔ´¡£ÔÚ DataSource µÄ»ù±¾ÊµÏÖÖУ¬¶Ô·½·¨ DataSource.getConnection µÄµ÷Ó÷µ»ØÒ»¸öÁ¬½Ó¶ÔÏ󣬸ÃÁ¬½Ó¶ÔÏóºÍ DriverManager ¹¤¾ß·µ»ØµÄÁ¬½Ó¶ÔÏóÒ»Ñù£¬ÊÇÒ»¸öÓëÊý¾ÝÔ´µÄÎïÀíÁ¬½Ó¡£

JNDI ΪӦÓóÌÐòÌṩÁËÒ»ÖÖÔÚÍøÂçÉϲéÕҺͷÃÎÊÔ¶³Ì·þÎñµÄͳһ·½·¨¡£Ô¶³Ì·þÎñ¿ÉÒÔÊÇÈκÎÆóÒµ·þÎñ£¨°üÀ¨ÏûÏ¢´«ËÍ·þÎñ»òÓ¦ÓóÌÐòÌض¨µÄ·þÎñ£©£¬µ±È»£¬JDBC Ó¦ÓóÌÐòµÄÖ÷Òª×ÅÑÛµãÊÇÊý¾Ý¿â·þÎñ¡£Í¨¹ý JNDI ÃüÃû·þÎñ´´½¨²¢×¢²áÁË DataSource ¶ÔÏóÖ®ºó£¬Ó¦ÓóÌÐòÔò¿ÉÒÔʹÓà JNDI API ·ÃÎʸà DataSource ¶ÔÏó£¬È»ºó¿ÉÒÔʹÓøöÔÏóÁ¬½ÓÆäËù´ú±íµÄÊý¾ÝÔ´¡£

ʵÏÖÁ¬½Ó¼ÓÈëµÄ DataSource ¶ÔÏóͬÑù»áÉú³ÉÒ»¸öÓë DataSource ÀàËù´ú±íµÄÌض¨Êý¾ÝÔ´µÄÁ¬½Ó¡£µ«ÊÇ£¬·½·¨ DataSource.getConnection ·µ»ØµÄÁ¬½Ó¶ÔÏóÊÇ PooledConnection ¶ÔÏóµÄ¾ä±ú£¬¶ø²»ÊÇÎïÀíÁ¬½Ó¡£Ó¦ÓóÌÐòÒÔÆäͨ³£·½Ê½Ê¹ÓÃÁ¬½Ó¶ÔÏó£¬Èç¹û·¢Éú²»Í¬µÄÇé¿ö£¬Ò»°ãÒ²²»»áÒâʶµ½¡£Á¬½Ó¼ÓÈë²»»á¶ÔÓ¦ÓóÌÐò´úÂë²úÉúÈκÎÓ°Ï죬ֻÊǺϲ¢µÄÁ¬½Ó¾ÍÏñËùÓÐÁ¬½ÓÒ»Ñù£¬Ó¦Ê¼ÖÕÃ÷È·¹Ø±Õ¡£µ±Ó¦ÓóÌÐò¹Ø±ÕÒ»¸ö¼ÓÈëµÄÁ¬½Óʱ£¬¸ÃÁ¬½Ó»á¼ÓÈëµ½Ò»¸ö¿ÉÖظ´Ê¹ÓõÄÁ¬½Ó³ØÖС£Ï´ε÷Óà DataSource.getConnection ʱ£¬¾Í»á·µ»Ø³ØÖеÄÒ»¸öÁ¬½ÓµÄ¾ä±ú£¨Èç¹û´æÔÚÁ¬½Ó£©¡£ÓÉÓÚÁ¬½Ó¼ÓÈë±ÜÃâÁËÿ´ÎÇëÇóÁ¬½Óʱ¶¼´´½¨Ò»¸öеÄÎïÀíÁ¬½Ó£¬Òò¶øÓÐÖúÓÚÏÔÖøÌá¸ßÓ¦ÓóÌÐòµÄÔËÐÐËٶȡ£

ͬÑù¿ÉÒÔʵÏÖÒ»¸ö DataSource À࣬ÒÔ±ãʹÓ÷ֲ¼Ê½ÊÂÎñ»·¾³¡£ÀýÈ磬EJB ·þÎñÆ÷Ö§³Ö·Ö²¼Ê½ÊÂÎñ£¬²¢ÐèÒªÒ»¸ö DataSource À࣬¸ÃÀàʵÏÖºó¿ÉÒÔÓëÆä½øÐн»»¥¡£ÔÚ´ËÇé¿öÏ£¬DataSource.getConnection ·½·¨·µ»ØÒ»¸ö¿ÉÔÚ·Ö²¼Ê½ÊÂÎñÖÐʹÓÃµÄ Connection ¶ÔÏó¡£Ò»°ã¶øÑÔ£¬EJB ·þÎñÆ÷Ö§³ÖÁ¬½Ó¼ÓÈëÒÔ¼°·Ö²¼Ê½ÊÂÎñ¡£ºÍÁ¬½Ó¼ÓÈëÒ»Ñù£¬ÊÂÎñ¹ÜÀíÊÇÔÚÄÚ²¿´¦ÀíµÄ£¬Òò´Ë·Ö²¼Ê½ÊÂÎñ·Ç³£±ãÓÚÈÝÒס£Î¨Ò»µÄÒªÇóÊÇ£¬µ±ÊÂÎñΪ·Ö²¼Ê½Ê±£¨ÕâÐèÒªÁ½¸ö»ò¸ü¶àÊý¾ÝÔ´£©£¬Ó¦ÓóÌÐò²»Äܵ÷ÓÃÊÂÎñ·½·¨£¬ÎÞÂÛ commit »¹ÊÇ rollback¡£¸ÃÓ¦ÓóÌÐòÒ²²»Äܽ«Á¬½ÓÖÃÓÚ×Ô¶¯Ìύģʽ¡£´æÔÚÕâЩÏÞÖƵÄÔ­ÒòÊÇ£¬ÊÂÎñ¹ÜÀíÆ÷ÒÔÒþ±ÎµÄ·½Ê½¿ªÊ¼ºÍ½áÊø·Ö²¼Ê½ÊÂÎñ£¬Òò´ËÓ¦ÓóÌÐò²»ÄÜÖ´ÐÐÈκοÉÄÜ»áÔÚÊÂÎñ¿ªÊ¼»ò½áÊøʱÔì³ÉÓ°ÏìµÄ²Ù×÷¡£ÓÐ¹Ø Java ÊÂÎñµÄÏêϸÐÅÏ¢£¬Çë²Î¼û¡°Ê¹ÓÃÊÂÎñ·þÎñ¡±¡£

×¢²á JDBC ×ÊÔ´

Äú¿ÉÒÔʹÓùÜÀí½çÃæ»òÃüÁîÐнçÃ潫 JDBC ×ÊÔ´×¢²áµ½ Sun ONE Application Server¡£

±¾½Ú°üÀ¨ÒÔÏÂÖ÷Ì⣺

ʹÓÃÃüÁîÐÐ×¢²á×ÊÔ´

ҪʹÓÃÃüÁîÐнçÃæ½Ó¿Ú×¢²á JDBC ×ÊÔ´£¬ÔËÐÐÒÔÏÂÃüÁ

./asadmin create-jdbc-resource

ÓÃÓÚ×¢²á JDBC ×ÊÔ´µÄ XML Ƭ¶ÎÓ¦Ö¸¶¨ÒÔϵļ¸¸öÊôÐÔ£¨Õª×Ô sun-server_7_0.dtd£©¡£

<!-- JDBC javax.sql.DataSource resource definition -->

<!ELEMENT jdbc-resource (description?, property*)>

<!ATTLIST jdbc-resource jndi-name CDATA #REQUIRED

pool-name CDATA #REQUIRED

enabled %boolean; 'true'>

×¢Ò⣬´ËƬ¶ÎËùÖ¸¶¨µÄ²»¹ýÊÇÓ¦ÓóÌÐòÓÃÀ´ÒýÓÃÆäËù´ú±íµÄÊý¾ÝÔ´£¨´Ó J2EE ÄÚ²¿£©µÄ·ûºÅÃû¡£pool-name ÊôÐÔÖ¸ÏòÃüÃû³Ø¶¨Ò壬¸Ã¶¨Ò彫ָ¶¨Êý¾Ý¿âÁ¬½ÓµÄ¸÷¸ö·½Ãæ¡£¹ÜÀíÔ±¿ÉÒÔʹÓÃÒÑÆôÓÃÊôÐԹرÕһЩ×ÊÔ´¡£

ʹÓùÜÀí½çÃæ×¢²á×ÊÔ´

ʹÓùÜÀí½çÃæ×¢²á×ÊÔ´µÄ²½Ö裺

  1. ÔÚ¹ÜÀí½çÃæµÄ×ó²à´°¸ñÖУ¬´ò¿ªÒªÎªÆä×¢²á JDBC ×ÊÔ´µÄ Sun ONE Application Server ʵÀý¡£
  2. ´ò¿ª¡°JDBC¡±¡£
  3. ÔÚ¡°JDBC¡±Ï£¬µ¥»÷¡°JDBC Resource¡±¡£
  4. ÔÚÓҲര¸ñÖУ¬µ¥»÷¡°New¡±¡£ÓҲര¸ñÖгöÏÖÓÃÓÚ´´½¨Ð嵀 JDBC ×ÊÔ´µÄÒ³Ã棬Èçͼ¡°´´½¨Ð嵀 JDBC ×ÊÔ´¡±Ëùʾ¡£

   ´´½¨Ð嵀 JDBC ×ÊÔ´
´ËͼÏÔʾÁË¿ÉÓÃÓÚ´´½¨Ð嵀 JDBC ×ÊÔ´µÄ¹ÜÀí½çÃæ´°¿Ú¡£

  1. Ϊ´´½¨µÄ×ÊÔ´ÊäÈë JNDI Ãû³Æ¡£
  2. JDBC ×ÊÔ´´æ´¢ÔÚ JNDI ϵͳÐÅÏ¢¿âÖУ¬ÇÒ¿ÉÒÔͨ¹ý JNDI Ãû³Æ½øÐзÃÎÊ¡£JNDI Ãû³Æ°üº¬Ã÷È·µÄ¸ù£¨Î»ÓÚ Java:comp:env/£©£¬Òò´Ë²»ÐèÒªÖ¸¶¨¸Ã²¿·ÖÃû³Æ¡£½¨Ò齫 JDBC ×ÊÔ´£¨Êý¾ÝÔ´£©´æ´¢ÔÚ¡°jdbc¡±×ÓÉÏÏÂÎÄ֮ϣ¬Òò¶øÄúµÄ JNDI Ãû³Æ½«ÀàËÆÓÚ jdbc/EmployeeDB_DS¡£

  3. ´Ó¡°Pool Name¡±ÏÂÀ­ÁбíµÄ³ØÃûÁбíÖУ¬ÎªÐµÄÊý¾ÝÔ´Ñ¡Ôñ³ØÃû¡£ËùÓÐÒÑ×¢²áµÄÁ¬½Ó³Ø¶¼½«ÏÔʾÔÚ´ËÏÂÀ­ÁбíÖС£Ñ¡ÔñµÄ³ØÃû½«Ö¸ÏòÃüÃû³Ø¶¨Ò壬¸Ã¶¨Ò彫ָ¶¨Êý¾Ý¿âÁ¬½ÓµÄ¸÷¸ö·½Ãæ¡£¶à¸ö JDBC ×ÊÔ´¿ÉÒÔʹÓõ¥¸ö³Ø¶¨Òå¡£ÓйØÈçºÎÅäÖà JDBC Á¬½Ó³ØµÄÏêϸÐÅÏ¢£¬Çë²Î¼û¡°Ê¹ÓùÜÀí½çÃæ´´½¨Ð嵀 JDBC Á¬½Ó³Ø¡±¡£
  4. ÔÚ¡°Description¡±×Ö¶ÎÖУ¬ÊäÈëÃèÊöÊý¾ÝÔ´ÓÃ;µÄ¼ò¶Ì˵Ã÷¡£ËµÃ÷²»Äܳ¬¹ý 250 ¸ö×Ö·û¡£
  5. Ñ¡ÖС°Enabled¡±¸´Ñ¡¿ò£¬½«ÆôÓûò½ûÓÃÊý¾ÝÔ´¡£Êý¾ÝÔ´²»ÄÜÓÃÓÚÁ¬½ÓÊý¾Ý¿â£¬³ý·ÇÒѱ»ÆôÓá£
  6. µ¥»÷¡°OK¡±×¢²áÐÂÊý¾ÝÔ´£¬»òÕßµ¥»÷¡°Cancel¡±È¡ÏûÐÂÊý¾ÝÔ´¡£µ¥»÷È¡Ïûºó£¬½«·µ»Øµ½ JDBC ×ÊÔ´Ö÷Ò³Ã棬´ÓÖпÉÒÔÔٴδ´½¨ÐÂÊý¾ÝÔ´¡£

¹ØÓÚ JDBC Á¬½Ó

Connection ¶ÔÏó±íʾÓëÊý¾Ý¿âµÄÁ¬½Ó¡£Á¬½Ó»á»°°üÀ¨Ö´ÐÐµÄ SQL Óï¾äÒÔ¼°Í¨¹ý¸ÃÁ¬½Ó·µ»ØµÄ½á¹û¡£Ò»¸öÓ¦ÓóÌÐò¿ÉÒÔÓëÒ»¸öÊý¾Ý¿â¾ßÓÐÒ»¸ö»ò¶à¸öÁ¬½Ó£¬¸ÃÓ¦ÓóÌÐòÒ²¿ÉÒÔÓë¶à¸ö²»Í¬µÄÊý¾Ý¿â¾ßÓÐÁ¬½Ó¡£

Óû§¿ÉÒÔͨ¹ýµ÷Óà Connection.getMetaData ·½·¨£¬»ñµÃ¹ØÓÚ Connection ¶ÔÏóµÄÊý¾Ý¿âµÄÐÅÏ¢¡£´Ë·½·¨·µ»ØÒ»¸ö DatabaseMetaData ¶ÔÏ󣬸öÔÏó°üº¬Êý¾Ý¿âµÄ±í¡¢Êý¾Ý¿âÖ§³ÖµÄ SQL Óï·¨¡¢Êý¾Ý¿âµÄ´æ´¢¹ý³Ì¡¢´ËÁ¬½ÓµÄ¹¦Äܵȷ½ÃæµÄÐÅÏ¢¡£

Ó¦ÓóÌÐòʹÓà DataSource ¶ÔÏóÉú³ÉµÄ Connection ¶ÔÏó¡£Ó¦ÓóÌÐòͨ³£Ó¦°üÀ¨¡°finally¡±¿é£¬ÒÔÈ·±£¼´Ê¹Å׳öÒì³£Ò²ÄܹرÕÁ¬½Ó¡£Èç¹û Connection ¶ÔÏóÊǼÓÈëµÄÁ¬½Ó£¬Õâ¸üΪÖØÒª£¬ÒòΪËü¿ÉÈ·±£Ê¼ÖÕ½«ÓÐЧÁ¬½Ó·Å»Øµ½¿ÉÓÃÁ¬½Ó³ØÖ®ÖС£ÏÂÃæµÄ´úÂëƬ¶Î£¨ÆäÖÐ con Ϊ Connection ¶ÔÏó£©ÊǹرÕÓÐЧÁ¬½ÓµÄ finally ¿éµÄʾÀý¡£

finally{

if (con != null) con.close();

}

×¢Ò⣬ÈçÏÂÃæµÄʾÀýËùʾ£¬try/catch ¿éºó³öÏÖÒ»¸ö finally ¿é£¬ÆäÖÐ ds ÊÇ DataSource ¶ÔÏó¡£

try {

Connection con = ds.getConnection("user", "secret");

// . . . Ö´ÐÐÓ¦ÓóÌÐòµÄ¹¤×÷µÄ´úÂë

} catch {

// . . . ´¦Àí SQLException µÄ´úÂë

} finally {

if (con != null) con.close();

}

±¾½Ú°üÀ¨ÒÔÏÂÖ÷Ì⣺

¹ØÓÚ JDBC URL

URL£¨Í³Ò»×ÊÔ´µØÖ·£©ÌṩÁËÔÚ Internet É϶¨Î»×ÊÔ´µÄÐÅÏ¢¡£Ëü¿ÉÒÔ±»ÊÓΪһÖÖµØÖ·¡£

JDBC URL ÌṩÁËÒ»ÖÖ±êʶÊý¾ÝÔ´µÄ·½·¨£¬ÒÔ±ãÏàÓ¦µÄÇý¶¯³ÌÐòʶ±ð¸ÃÊý¾ÝÔ´²¢ÓëÆ佨Á¢Á¬½Ó¡£Çý¶¯³ÌÐò±àдÕßÊÇÈ·¶¨±êʶÌض¨Çý¶¯³ÌÐòµÄ JDBC URL ½«»áÊÇʲôµÄÈËÔ±¡£Óû§²»ÐèÒª¹ØÐÄÈçºÎ¹¹³É JDBC URL£»ËûÃÇÖ»ÐèʹÓÃËæËùÓÃÇý¶¯³ÌÐòÒ»ÆðÌṩµÄ URL¡£JDBC Ö¼ÔÚÍƼöһЩ¹ßÀý£¬ÒÔ±ãÇý¶¯³ÌÐò±àдÕßÔÚ¹¹Ôì JDBC URL ʱ½øÐÐ×ñÑ­¡£

ÓÉÓÚ JDBC URL ÓÃÓÚ¸÷ÖÖÇý¶¯³ÌÐò£¬Òò¶øÕâЩ¹ßÀýÊÇ£¨Ò²±ØÐëÊÇ£©·Ç³£Áé»îµÄ¡£µÚÒ»£¬ËüÃÇÔÊÐí²»Í¬µÄÇý¶¯³ÌÐòÔÚÃüÃûÊý¾Ý¿âʱ¿ÉÒÔʹÓò»Í¬µÄģʽ¡£ÀýÈ磬ODBC ×ÓЭÒéÔÊÐí URL °üº¬ÊôÐÔÖµ£¨µ«²¢²»ÐèÒªÊôÐÔÖµ£©¡£

µÚ¶þ£¬JDBC URL ÔÊÐíÇý¶¯³ÌÐò±àдÕ߶ÔÆäÖаüº¬µÄËùÐèµÄËùÓÐÁ¬½ÓÐÅÏ¢½øÐбàÂë¡£ÕâÑù£¬Ò»¸öÒªÓëÖ¸¶¨Êý¾Ý¿â½øÐÐͨÐŵÄС³ÌÐò¾ÍÄܹ»´ò¿ªÊý¾Ý¿âÁ¬½Ó£¬¶øÎÞÐëÓû§Ö´ÐÐÈκÎϵͳ¹ÜÀíÊÂÎñ¡£

µÚÈý£¬JDBC URL ÔÊÐíÓмä½Ó¼¶¡£Ò²¾ÍÊÇ˵£¬JDBC URL ¿ÉÄÜ»áÖ¸ÏòÓÉÍøÂçÃüÃûϵͳ¶¯Ì¬×ª»»ÎªÊµ¼ÊÃû³ÆµÄÂß¼­Ö÷»ú»òÊý¾Ý¿âÃû³Æ¡£ÕâÑù£¬ÏµÍ³¹ÜÀíÔ±ÔòÎÞÐèÖ¸¶¨ JDBC Ãû³ÆÖеÄÌض¨Ö÷»ú²¿·Ö¡£ÓжàÖÖ²»Í¬µÄÍøÂçÃû³Æ·þÎñ£¬¶øÇÒûÓÐÈκιØÓÚʹÓÃÕßµÄÏÞÖÆ¡£

ÏÂÃæÊÇ JDBC URL µÄ±ê×¼Óï·¨¡£´ËÓï·¨°üº¬Èý¸ö²¿·Ö£¬ËüÃÇÓÃðºÅ¸ô¿ª¡£

jdbc:<subprotocol>:<subname>

JDBC URL µÄÈý¸ö²¿·Ö·Ö±ð˵Ã÷ÈçÏ£º

  • jdbc - ЭÒ飺
  • JDBC URL ÖеÄЭÒéʼÖÕÊÇ jdbc¡£

  • <subprotocol>
  • Çý¶¯³ÌÐòÃû³Æ»òÊý¾Ý¿âÁ¬½Ó»úÖÆÃû³Æ£¬¿ÉÓÉÒ»¸ö»ò¶à¸öÇý¶¯³ÌÐòÖ§³Ö¡£×ÓЭÒéÃû³ÆµÄÍ»³öʾÀýÊÇ ODBC£¬ODBC ÒѾ­±»±£ÁôÓÃÓÚÖ¸¶¨ ODBC ¸ñʽµÄÊý¾ÝÔ´Ãû³ÆµÄ URL¡£ÀýÈ磬Ҫͨ¹ý JDBC-ODBC ÇÅ·ÃÎÊÊý¾Ý¿â£¬Óû§¿ÉÄÜʹÓÃÒ»¸öÏñ jdbc:odbc:fred ÕâÑùµÄ URL¡£

    ÔÚ´ËʾÀýÖУ¬×ÓЭÒéΪ ODBC£¬¶ø×ÓÃû³Æ fred ÊDZ¾µØ ODBC Êý¾ÝÔ´¡£

    Èç¹ûÏëҪʹÓÃÍøÂçÃû³Æ·þÎñ£¨ÕâÑù£¬JDBC URL ÖеÄÊý¾Ý¿âÃû³Æ¾Í²»±ØÊÇÆäʵ¼ÊÃû³Æ£©£¬Ôò¸ÃÃüÃû·þÎñ¾Í¿ÉÒÔÊÇ×ÓЭÒé¡£ÀýÈ磬ij¸öÓû§¿ÉÄÜÓÐÒ»¸öÈçÏÂËùʾµÄ URL£º

    jdbc:dcenaming:accounts-payable

    ÔÚ´ËʾÀýÖУ¬URL Ö¸¶¨±¾µØ DCE ÃüÃû·þÎñÓ¦½«Êý¾Ý¿âÃû³ÆÓ¦¸¶ÕÊ»§½âÎöΪһ¸ö¿ÉÓÃÓÚÁ¬½ÓÕæʵµÄÊý¾Ý¿âµÄ¡¢¸üΪ¾ßÌåµÄÃû³Æ¡£

  • <subname>:
  • Ò»ÖÖ±êʶÊý¾ÝÔ´µÄ·½·¨¡£¸ù¾Ý×ÓЭÒ飬×ÓÃû³Æ¿ÉÒԱ仯£¬¶øÇÒËü¿ÉÒÔ¾ßÓÐÇý¶¯³ÌÐò±àдÕßÑ¡ÔñµÄÈκÎÄÚ²¿Óï·¨£¬°üÀ¨ sub-subname¡£subname µÄºËÐÄÊǸø³öÓÃÓÚ¶¨Î»Êý¾ÝÔ´µÄ×ã¹»ÐÅÏ¢¡£ÔÚÇ°Ò»¸öʾÀýÖУ¬fred ¾ÍÒÑ×ã¹»£¬ÒòΪ ODBC ÌṩÁËÆäÓàµÄÐÅÏ¢¡£µ«ÊÇ£¬Ô¶³Ì·þÎñÆ÷ÉϵÄÊý¾ÝÔ´ÐèÒª¸ü¶àÐÅÏ¢¡£ÀýÈ磬Èç¹ûͨ¹ý Internet ·ÃÎÊÊý¾ÝÔ´£¬¾ÍÓ¦°ÑÍøÂçµØÖ·×÷Ϊ subname µÄ×é³É²¿·Ö°üÀ¨ÔÚ JDBC URL Ö®ÖУ¬²¢Ó¦×ñÊØÒÔϱê×¼ URL ÃüÃû¹ßÀý£º

    //hostname:port/subsubname

    ¼ÙÈç dbnet ÊÇÒ»¸öÁ¬½Óµ½ Internet ÉÏij¸öÖ÷»úµÄЭÒ飬Ôò JDBC URL ¿ÉÄÜ¿´ÆðÀ´ÏñÏÂÃæµÄÑù×Ó£º

    jdbc:dbnet://wombat:356/fred

ÅäÖà JDBC Á¬½Ó³Ø

Sun ONE Application Server ÔÊÐíÓû§´´½¨ÃüÃû JDBC Á¬½Ó³Ø¡£JDBC Á¬½Ó³Ø¶¨ÒåÓÃÓÚ´´½¨Á¬½Ó³ØµÄÊôÐÔ¡£³Ø¶¨ÒåÊÇÃüÃûµÄ£¬²¢ÇÒÒ»¸ö¶¨Òå¿ÉÒÔÖظ´Ê¹ÓÃÀ´ÅäÖöà¸ö JDBC ×ÊÔ´¡£Ã¿¸öÃüÃûµÄ³Ø¶¨Ò嶼»áµ¼Ö·þÎñÆ÷Æô¶¯Ê±ÊµÀý»¯Ò»¸öÎïÀí³Ø¡£Èç¹ûÁ½¸ö»ò¸ü¶àµÄ JDBC ×ÊÔ´Ö¸Ïòͬһ³Ø¶¨Ò壬ÕâЩ×ÊÔ´¾Í»áÔÚÔËÐÐʱʹÓÃͬÑùµÄÁ¬½Ó³Ø¡£

Äú¿ÉÒÔʹÓùÜÀí½çÃæºÍÃüÁîÐнçÃæ´´½¨ºÍÅäÖÃÁ¬½Ó³Ø£¬ÈçÒÔϸ÷½ÚËùÊö£º

ʹÓùÜÀí½çÃæ´´½¨Ð嵀 JDBC Á¬½Ó³Ø

ʹÓùÜÀí½çÃæ´´½¨Ð嵀 JDBC Á¬½Ó³ØµÄ²½Ö裺

  1. ÔÚ¹ÜÀí½çÃæµÄ×ó²à´°¸ñÖУ¬´ò¿ªÒªÎªÆä´´½¨ JDBC Á¬½Ó³ØµÄ Sun ONE Application Server ʵÀý¡£
  2. ´Ó Sun ONE Application Server ÏÂÁгöµÄ J2EE ·þÎñÁбíÖÐÑ¡Ôñ¡°JDBC¡±£¬²¢´ò¿ªËüÏÂÃæµÄ¡°ConnectionPools¡±±êÇ©¡£Äú»áÔÚ¹ÜÀí½çÃæµÄÓҲര¸ñÖп´µ½Í¼¡°´´½¨Ð嵀 JDBC Á¬½Ó³Ø¡±¡£

   ´´½¨Ð嵀 JDBC Á¬½Ó³Ø
´ËͼÏÔʾÁË¿ÉÓÃÓÚ´´½¨Ð嵀 JDBC Á¬½Ó³ØµÄ¹ÜÀí½çÃæ´°¿Ú¡£

  1. ÔÚ¡°Name¡±×Ö¶ÎÖУ¬Îª´´½¨µÄÁ¬½Ó³ØÊäÈë JNDI Ãû³Æ¡£
  2. Ñ¡ÖС°Global Transaction Support Enabled¡±¸´Ñ¡¿ò£¬½«¶ÔеÄÁ¬½Ó³ØÆôÓÃÈ«¾ÖÊÂÎñÖ§³Ö¡£Äܹ»²Î¼ÓÈ«¾ÖÊÂÎñµÄÁ¬½Ó³Ø³ÆΪ¾ßÓÐ XA ÄÜÁ¦µÄÁ¬½Ó³Ø¡£
  3. ´Ó¡°Database Vendor¡±ÏÂÀ­ÁбíÖÐÑ¡ÔñÒ»¸öÊý¾Ý¿â¹©Ó¦ÉÌ£¬²¢µ¥»÷¡°Next¡±¡£ÄúÐèÒªÔÚËæºóÏÔʾµÄÆÁÄ»ÖÐÅäÖÃÁ¬½Ó³ØÉèÖá£

ÅäÖÃÁ¬½Ó³ØÉèÖÃ

ÒªÅäÖÃÁ¬½Ó³ØÉèÖã¬ÇëÖ´ÐС°Ê¹ÓùÜÀí½çÃæ´´½¨Ð嵀 JDBC Á¬½Ó³Ø¡±ÖеIJ½Öè 1 µ½²½Öè 5¡£µ¥»÷¡°Next¡±£¨Èç²½Öè 5ÖÐËùÊö£©ºó£¬¹ÜÀí½çÃæµÄÓҲര¸ñÖлá³öÏÖÒ»¸öеÄÒ³Ãæ¡£Ëü°üº¬ÒÔϲ¿·Ö£º

  • ³£¹æ
  • ÊôÐÔ
  • ³ØÉèÖÃ
  • Á¬½ÓÑéÖ¤
  • ÊÂÎñ¸ôÀë

ÔÚ´ËÒ³µÄ¡°General¡±²¿·ÖÖУ¬¸ù¾ÝϱíÖеÄ˵Ã÷ΪÌṩµÄ²ÎÊýÖ¸¶¨Öµ£º

   ³£¹æÉèÖÃ

²ÎÊý

˵Ã÷

Name

 

Á¬½Ó³ØµÄÃû³Æ¡£

 

DataSource ClassName

 

ʵÏÖ DataSource ºÍ/»ò XADataSource API µÄ¹©Ó¦ÉÌÌض¨ÀàÃû¡£

 

Description

 

Á¬½Ó³ØµÄ˵Ã÷¡£

 

ÔÚ´ËÒ³µÄ¡°Properties¡±²¿·ÖÖУ¬ÄúÖ¸¶¨±ê×¼ºÍרÓà JDBC Á¬½Ó³ØÊôÐÔ£»ÆäÖÐÐí¶àÊôÐÔΪ¿ÉÑ¡¡£Ä¬ÈÏÇé¿öÏ£¬ÌṩËùÓбê×¼ÊôÐÔµÄÃû³Æ¡£ÄúÐèÒª²Î¿¼Êý¾Ý¿â¹©Ó¦É̵ÄÎĵµ£¬ÒÔÈ·¶¨±ØÐèµÄ±ê×¼Ìض¨µÄÊôÐԺ͹©Ó¦ÉÌÌض¨µÄÊôÐÔ¡£

ÔÚ´Ë´°¿ÚµÄ¡°Pool Settings¡±²¿·ÖÖУ¬¸ù¾ÝϱíÖеÄ˵Ã÷ΪÌṩµÄ²ÎÊýÖ¸¶¨Öµ£º

   Á¬½Ó³ØÉèÖÃ

²ÎÊý

˵Ã÷

Steady Pool Size

 

Ö¸¶¨³ØÖбØÐëά³ÖµÄ×îСÁ¬½ÓÊýÄ¿¡£Á¬½ÓÌṩ¸øÇëÇóµÄÏß³ÌÖ®ºó£¬¸ÃÁ¬½Ó½«´Ó³ØÖÐɾ³ý£¬´Ó¶ø¼õСÁ˵±Ç°µÄ³Ø´óС¡£Îȶ¨³Ø´óС»¹Óë·þÎñÆ÷Æô¶¯Ê±Ìí¼Óµ½³ØÖеÄÌõÄ¿ÊýÄ¿Óйء£

 

Max Pool Size

 

Ö¸¶¨¸Ã³ØÔÚÈκÎÖ¸¶¨Ê±¼äÖÐÔÊÐíµÄ×î´óÁ¬½ÓÊýÄ¿¡£

 

Pool Resize Quantity

 

µ±³ØÏòÎȶ¨³Ø´óС·½ÏòÊÕËõʱ£¬½«³ÉÅúµ÷Õû´óС¡£´Ëֵȷ¶¨Åú´¦ÀíµÄ´óС¡£½«´ËÖµÉèÖùý´ó»áÑÓ³ÙÁ¬½Ó»ØÊÕ£¬¶ø½«ÖµÉèÖùýСÔò»áµ¼ÖÂЧÂÊÌ«µÍ¡£×¢Ò⣬³ØÈÝÁ¿Ã¿´ÎÖ»Ôö¼ÓÒ»¸öÁ¬½Ó£¬Òò´Ë¸Ã×ֶβ»Ó°Ïì³ØÈÝÁ¿µÄÔö¼Ó¡£

 

Idle Timeout (secs)

 

Á¬½ÓÔÚ³ØÖб£³Ö¿ÕÏеÄ×ʱ¼ä£¨ÒÔÃëΪµ¥Î»£©¡£³¬¹ý´Ëʱ¼äºó£¬³ØʵÏÖ¿ÉÒԹرմËÁ¬½Ó¡£

 

Max Wait tim

 

´ïµ½Á¬½Ó³¬Ê±Ç°ºô½ÐÕߵȴýµÄʱ¼ä¡£Ä¬Èϵĵȴýʱ¼äºÜ³¤£¬¼´ºô½ÐÕß¿ÉÒԵȴýºÜ³¤Ê±¼ä¡£

 

ÔÚ´Ë´°¿ÚµÄ¡°Connection Validation¡±ºÍ¡°Transaction Isolation¡±²¿·ÖÖУ¬¸ù¾ÝϱíÖеÄ˵Ã÷ΪÁ¬½Ó³ØÑ¡ÔñÑéÖ¤·½·¨ºÍÊÂÎñ¸ôÀë·½·¨£º

   Á¬½ÓÑéÖ¤ºÍÊÂÎñ¸ôÀë

²ÎÊý

˵Ã÷

Connection Validation Required

 

Èç¹ûÑ¡ÖдË×ֶΣ¬ÔòÁ¬½ÓÔÚ´«µÝµ½Ó¦ÓóÌÐòÇ°½«±»ÑéÖ¤¡£ÕâÑù£¬Èç¹ûÓÉÓÚÍøÂç³öÏÖ¹ÊÕÏ»òÊý¾Ý¿â·þÎñÆ÷±ÀÀ£Ôì³ÉÊý¾Ý¿â²»¿ÉÓã¬Ó¦ÓóÌÐò·þÎñÆ÷½«×Ô¶¯ÖØн¨Á¢Êý¾Ý¿âÁ¬½Ó¡£Á¬½ÓÑéÖ¤½«ÒýÆð¶îÍ⸺µ££¬²¢»áµ¼ÖÂÐÔÄÜÉÔÓÐϽµ¡£

 

Validation Method

 

ÓÐÈýÖÖÑéÖ¤Êý¾Ý¿âÁ¬½ÓµÄ·½·¨¿É¹©Ó¦ÓóÌÐò·þÎñÆ÷ʹÓã»ÄúÐèÒªÁ˽âÄúµÄÊý¾Ý¿âµÄÄÜÁ¦£¬²ÅÄÜÈ·¶¨Êʵ±µÄ·½·¨¡£ÕâÈýÖÖÑéÖ¤·½·¨Îª£º

  • ×Ô¶¯Ìá½»¡¢ÔªÊý¾Ý £­ con.getAutoCommit() ºÍ con.getMetaData() ·½·¨³£ÓÃÀ´ÑéÖ¤Á¬½Ó£¬Òź¶µÄÊÇ£¬Ðí¶à JDBC Çý¶¯³ÌÐò½«ÕâЩµ÷ÓõĽá¹û¸ßËÙ»º´æÆðÀ´£¬Òò¶ø²¢²»×ÜÊÇ¿ÉÒÔÌṩ¿É¿¿µÄÑéÖ¤¡£ÄúÓ¦Ó빩ӦÉ̽øÐкËʵ£¬ÒÔÈ·¶¨ÕâЩµ÷ÓÃÊÇ·ñ±»¸ßËÙ»º´æ¡£
  • table£º´Ë·½·¨ÒªÇóÓ¦ÓóÌÐò·þÎñÆ÷»ùÓÚÓû§Ö¸¶¨µÄ±í¸ñÖ´Ðвéѯ¡£Êµ¼ÊµÄ²éѯÊÇ¡°select (count *) from <table-name>¡±¡£±í±ØÐë´æÔÚ²¢ÇÒ¿ÉÒÔ·ÃÎÊ£¬¾¡¹Ü¸Ã±í²»ÒªÇóÊäÈëÈκÎÐеÄÄÚÈÝ¡£²»Ó¦Ê¹Óðüº¬Ðí¶àÐеÄÏÖÓбí»ò¾­³£·ÃÎÊµÄ±í¡£
 

Table Name

 

Èç¹û´Ó¡°Validation Method¡±ÏÂÀ­ÁбíÖÐÑ¡ÔñÁË×îºóÒ»ÖÖÑé֤ѡÏî¡°table¡±£¬ÔòÔÚ´Ë´¦Ö¸¶¨±íÃû¡£

 

Fail All Connections

 

Ñ¡Öд˸´Ñ¡¿ò£¬½«Ê¹³ØÖÐËùÓÐÁ¬½Ó¶¼Ê§°Ü£¬²¢ÔÚÈ·¶¨Ä³¸öÁ¬½ÓÒÑʧ°ÜʱÖØд´½¨ÕâЩÁ¬½Ó¡£Èç¹ûδѡÖд˸´Ñ¡¿ò£¬ÔòÁ¬½Ó½öÔÚ±»Ê¹ÓÃʱ²Åµ¥¶ÀÖØд´½¨¡£

 

Transaction Isolation

 

ÔÊÐíÄúΪ´ËÁ¬½ÓÑ¡ÔñÊÂÎñ¸ôÀ뼶±ð¡£Èç¹ûδѡÖиÃÏ³Ø½«Ê¹Óà JDBC Çý¶¯³ÌÐòÌṩµÄĬÈϸôÀ뼶±ð½øÐвÙ×÷¡£

 

Guarantee Isolation Level

 

¸ÃÏî½öÔÚÖ¸¶¨Á˸ôÀ뼶±ðµÄÇé¿öϲÅÊÊÓá£Õâ¿ÉÈ·±£´Ó³ØÖлñÈ¡µÄÈκÎÁ¬½Ó¶¼½«¾ßÓÐͬÑùµÄ¸ôÀ뼶±ð¡£ÀýÈ磬Èç¹ûÁ¬½ÓÔÚÉÏ´ÎʹÓÃʱ£¬ËüµÄ¸ôÀ뼶±ðͨ¹ý±à³Ì·½Ê½±»¸ü¸Ä£¨ÀýÈ磬con.setTransactionIsolation£©£¬Ôò´Ë»úÖƾͻὫ¸ÃÁ¬½ÓµÄ¸ôÀ뼶±ð¸ü¸Ä»ØÖ¸¶¨µÄ¸ôÀ뼶±ð¡£

 

ʹÓÃÃüÁîÐнçÃæ´´½¨Ð嵀 JDBC Á¬½Ó³Ø

±¾½Úͨ¹ýʾÀý½²ÊöÈçºÎʹÓÃÃüÁîÐнçÃæ´´½¨ JDBC Á¬½Ó³Ø¡£

ϱíÁгö´´½¨Á¬½Ó³ØʱÐèÒªµÄËùÓÐÑ¡ÏÀýÈç·þÎñÆ÷Ãû¡¢ÃÜÂ롣ϱíÖÐʹÓÃÁËÑùÀýÖµ¡£½¨ÒéÔÚÔËÐб¾½ÚÖнéÉܵÄÃüÁî֮ǰ£¬ÉèÖúà Sun ONE Application Server µÄ°²×°ËùÌØÓеIJÎÊý¡£

   ʹÓÃÃüÁîÐнçÃæ´´½¨ JDBC Á¬½Ó³ØʱËù±ØÐèµÄÑ¡Ïî

±ØÐèÑ¡Ïî˵Ã÷

ÑùÀýÖµ

Application server admin user name

admin

Application server admin password

 

adminadmin

 

Application server admin port

 

8888

 

Application server machine name

 

sas.sun.com

 

Application server instance name

 

server1

 

Datasource classname for the connection pool

 

oracle.jdbc.xa.client.OracleXADataSource

×¢Ò⣺ʹÓÃΪÆä´´½¨Á¬½Ó³ØµÄÊý¾Ý¿âµÄÊý¾ÝÔ´ÀàÃû¡£´ËʵÀýÖÐʹÓõÄÊý¾Ý¿âΪ Oracle¡£

 

Jdbc resource description Sample

 

Jdbc Resource

 

Connection pool description Sample

 

Jdbc Connection Pool

 

Jdbc resource name

 

jdbc/SampleJdbcResource

 

Connection pool name

 

SampleJdbcConnectionPool

 

Database user name

 

oracle

 

Database password

 

oracle

 

Jdbc connection URL

 

jdbc:oracle:thin:@oracleserver.sun.com:1521:ORA

 

ÒÔÏÂʾÀýʹÓÃÁË±í¡°Ê¹ÓÃÃüÁîÐнçÃæ´´½¨ JDBC Á¬½Ó³ØʱËù±ØÐèµÄÑ¡ÏÖÐÁгöµÄ±äÁ¿¡£

ʾÀý 1£º

´ËʾÀý´´½¨ÁËÒ»¸ö³Æ×÷ SampleJdbcConnectionPool µÄ JDBC Á¬½Ó³Ø¡£´ËʾÀýÖÐʹÓÃÁËÒ»¸öÁ½²½½ø³Ì´´½¨ JDBC Á¬½Ó³Ø£¬ÈçÏÂËùʾ£º

²½Öè 1 £­ ´´½¨Á¬½Ó³Ø

ÏÂÃæÊÇÓÃÓÚ´´½¨ JDBC Á¬½Ó³ØµÄÃüÁîÐнçÃæÓï·¨£º

asadmin create-jdbc-connection-pool --user admin_user [--password admin_password] [--host localhost] [--port 4848] [--secure | -s] [--instance instancename] --datasourceclassname classname [--restype res_type] [--steadypoolsize 8] [--maxpoolsize 32] [--maxwait 60000] [--poolresize 2] [--idletimeout 300] [--isolationlevel isolation_level] [--isisolationguaranteed] [--isconnectvalidatereq=false] [--validationmethod auto-commit] [--validationtable tablename] [--failconnection=false] [--description text] [--property (name=value)[:name=value]*] connectionpool_id

ÀýÈ磬ÒÔÏÂÃüÁ´´½¨Ò»¸ö³Æ×÷ SampleJdbcConnectionPool µÄÁ¬½Ó³Ø¡£

asadmin create-jdbc-connection-pool --user admin --password adminadmin --host sas.sun.com --port 8888 --instance server1 --restype javax.sql.XADataSource --datasourceclassname oracle.jdbc.xa.client.OracleXADataSource --description "Sample Jdbc Connection Pool" --property User="oracle":Password="oracle":URL="jdbc\:oracle\:thin\:@oracleserver.sun.com\:1 521\:ORA" SampleJdbcConnectionPool



×¢Òâ

Èç¹ûҪΪеÄÁ¬½Ó³ØÆôÓá°Global Transaction Support¡±£¬ÉèÖà --restype javax.sql.XADataSource¡£ÔÚ URL ÊôÐÔÖУ¬Óà (\:) Ì滻ðºÅ (:)



³É¹¦´´½¨ JDBC Á¬½Ó³Øºó£¬Äú»á¿´µ½ÒÔÏÂÏûÏ¢£º

Created the JDBC connection pool resource with id = SampleJdbcConnectionPool

²½Öè 2 £­ ½«¸ü¸ÄÓ¦Óõ½ÊµÀý

¼ÈÈ»Òѳɹ¦´´½¨ÁË JDBC Á¬½Ó³Ø£¬¾ÍÐèÒª½«¸ü¸ÄÓ¦Óõ½ Sun ONE Application Server µÄµ±Ç°ÊµÀý¡£

ÏÂÃæÊǽ«¸ü¸ÄÓ¦Óõ½ Sun ONE Application Server µÄʵÀýµÄÓï·¨¡£

asadmin reconfig --user admin_user [--password admin_password] [--host localhost] [--port adminport] [--secure | -s] [--discardmanualchanges=false|--keepmanualchanges=false] instancename

ÀýÈ磬ÒÔÏÂÃüÁ¸ü¸ÄÓ¦Óõ½ server1£¬¼´ Sun ONE Application Server µÄʵÀý¡£

asadmin reconfig --user admin --password adminadmin --host sas.sun.com --port 8888 server1

½«¸ü¸ÄÓ¦Óõ½ Sun ONE Application Server µÄʵÀýÖ®ºó£¬Äú¾Í»á¿´µ½ÒÔÏÂÏûÏ¢¡£

Successfully reconfigured

ʹÓÃÃüÁîÐнçÃæ¹ÜÀí JDBC Á¬½Ó³Ø

¿ÉÒÔʹÓÃÃüÁîÐнçÃæÀ´¹ÜÀí JDBC Á¬½Ó³Ø¼°ÆäÊôÐÔ£¬Èç±¾½ÚÖÐËùÊö£º

ÁгöÁ¬½Ó³Ø¡£ÒÔÏÂÃüÁîÁгöΪ server1£¨¼´£¬²½Öè 2 ÖÐʹÓÃµÄ Sun ONE Application Server µÄʵÀý£©´´½¨µÄËùÓÐÁ¬½Ó³Ø¡£

asadmin list-jdbc-connection-pools --user admin --password adminadmin --host sas.sun.com --port 8888 server1

¸ü¸Ä JDBC Á¬½Ó³ØÊôÐÔ¡£ Äú¿ÉÒÔ¸ü¸Ä JDBC Á¬½Ó³ØµÄÊôÐÔ£¨ÀýÈ磬maxPoolSize ÊôÐÔ£©£¬²½ÖèÈçÏ£º

  1. ÔËÐÐÒÔÏÂÃüÁ»ñȡΪ JDBC Á¬½Ó³ØÊôÐÔ maxPoolSize Ö¸¶¨µÄÖµ¡£
  2. asadmin get -u admin -w adminadmin -H sas.sun.com -p 8888 server1.jdbc-connection-pool.SampleJdbcConnectionPool.maxPoolSize

    ÔËÐдËÃüÁîʱ£¬Äú»á¿´µ½ÒÔϽá¹û£º

    server1.jdbc-connection-pool.SampleJdbcConnectionPool.maxPoolSize = 32

    ͨ¹ýÔËÐÐÒÔÏÂÃüÁ MaxPoolSize µÄÖµ¸ü¸ÄΪ 80£º

    asadmin set -u admin -w adminadmin -H sas.sun.com -p 8888 server1.jdbc-connection-pool.SampleJdbcConnectionPool.maxPoolSize="80"

    °´ÕÕ˵Ã÷µÄ·½·¨Ö¸¶¨ÁËÖµÖ®ºó£¬Äú¾Í»á¿´µ½ÒÔÏÂÏûÏ¢£º

    Attribute maxPoolSize set to 80

  3. ʹÓÃÒÔÏÂÃüÁ¸ü¸ÄÓ¦Óõ½ Sun ONE Application Server µÄʵÀý£º
  4. asadmin reconfig --user admin --password adminadmin --host sas.sun.com --port 8888 server1

¸ü¸ÄÓû§ÊôÐÔ£ºÔÚÏÂÃæµÄ´úÂëÑùÀýƬ¶ÎÖУ¬Äú¿ÉÒÔ½«ÊôÐÔ¡°User¡±´Ó oracle ¸ü¸ÄΪ System¡£

asadmin create-jdbc-connection-pool --user admin --password adminadmin --host sas.sun.com --port 8888 --instance server1 --restype javax.sql.XADataSource --datasourceclassname oracle.jdbc.xa.client.OracleXADataSource --description "Sample Jdbc Connection Pool" --property User="oracle":Password="oracle":URL="jdbc\:oracle\:thin\:@oracleserver.sun.com\:1 521\:ORA" SampleJdbcConnectionPool

  1. ÔËÐÐÒÔÏÂÃüÁî¸ü¸Ä User ÊôÐÔ¡£
  2. asadmin set -u admin -w adminadmin -H sas.sun.com -p 8888 server1.jdbc-connection-pool.SampleJdbcConnectionPool.property.User="System"

    Óû§Ãû³ÆÒÑ´Ó Oracle ¸ü¸ÄΪ System¡£

  3. ¸ü¸ÄÓû§ÃûÖ®ºó£¬ÔËÐÐÒÔÏÂÃüÁîÀ´Ó¦ÓÃÄúµÄ¸ü¸Ä£º
  4. asadmin reconfig --user admin --password adminadmin --host sas.sun.com --port 8888 server1

´´½¨Ò»¸ö³Æ×÷ SampleJdbcResource µÄ JDBC ×ÊÔ´¡£Äú¿ÉÒÔ´´½¨ JDBC ×ÊÔ´£¬Ïêϸ˵Ã÷ÈçÏ¡£ÏÂÃæÊÇ´´½¨ JDBC ×ÊÔ´µÄÓï·¨£º

asadmin create-jdbc-resource --user admin_user [--password admin_password] [--host localhost] [--port 4848] [--secure | -s] [--instance instancename] --connectionpoolid id [--enabled=true] [--description text] [--property (name=value)[:name=value]*] jndiname

  1. ÔËÐÐÒÔÏÂÃüÁ½«´´½¨Ò»¸ö³Æ×÷ SampleJdbcResource µÄ JDBC ×ÊÔ´¡£
  2. asadmin create-jdbc-resource --user admin --password adminadmin --host sas.sun.com --port 8888 --instance server1 --description "Sample Jdbc Resource" --connectionpoolid SampleJdbcConnectionPool jdbc/SampleJdbcResource

    ÔËÐдËÃüÁîʱ£¬½«´´½¨ JDBC ×ÊÔ´£¬¶øÇÒÄú»á¿´µ½ÒÔÏÂÏûÏ¢£º

    Created the external JDBC resource with jndiname = jdbc/SampleJdbcResource

  3. ÏÂÃ棬ÄúÐèÒªÔËÐÐÒÔÏÂÃüÁ¸ü¸ÄÓ¦Óõ½ Sun ONE Application Server µÄʵÀý¡£
  4. asadmin reconfig --user admin --password adminadmin --host sas.sun.com --port 8888 server1

  5. ÔËÐÐÒÔÏÂÃüÁ½«ÔÚʵÀý server1 ÖÐÁгöËùÓÐµÄ JDBC ×ÊÔ´¡£
  6. asadmin list-jdbc-resources --user admin --password adminadmin --host sas.sun.com --port 8888 server1

¹ØÓÚÁ¬½Ó¼ÓÈë

Ó¦ÓóÌÐò¿ÉÒÔͨ¹ýʹÓà JNDI ²éÕÒÊý¾ÝÔ´À´»ñÈ¡Á¬½Ó¡£ÒÔϵĴúÂëÑùÀýƬ¶Î¿ÉÓÃÓÚÍê³É¸ÃÈÎÎñ£º

InitialContext ctx = new InitialContext();

DataSource ds = (DataSource) ctx.lookup("java:comp/env/jdbc/employee_ds");

»ñµÃ DataSource Ö®ºó£¬Ó¦ÓóÌÐò×é¼þ¿É¸ù¾Ý J2EE ²¿ÊðÃèÊö·ûµÄ <res-auth> ÔªËØÖÐÉèÖõÄÖµ£¬ÓÃÁ½ÖÖ·½·¨»ñµÃÁ¬½Ó¡£Èç¹û´ËÔªËصÄֵΪ Container£¬ÔòÓ¦ÓóÌÐò¿ÉÒÔʹÓà ds.getConnection() ·½·¨»ñµÃÁ¬½Ó£¨¼´ÎÞÐèÖ¸¶¨ÈκεǼÐÅÏ¢£©¡£·ñÔò£¬Ó¦ÓóÌÐò±ØÐëÌṩµÇ¼ÐÅÏ¢£¬²ÅÄÜ´ÓÏñ ds.getConnecion.(userName, password) ÕâÑùµÄ×ÊÔ´¹ÜÀíÆ÷ÖлñµÃÁ¬½Ó¡£

getConnection() µÄËùÓÐÇëÇ󶼽«´ÓÒ»¸ö³ØÖлñµÃÂú×ã¡£JDBC Á¬½Ó³Ø½«¸ù¾Ý server.xml ÖÐÃèÊöµÄÒ»×é²ÎÊý½øÐд´½¨¡£¸ÃÁ¬½Ó³Ø´´½¨Ê±£¬³ØÖаüº¬ÁË×î³õ¿ÉÓõÄÁ¬½ÓÊýÄ¿¡£Òò´Ë£¬³ØÖеĵ±Ç°¿ÉÓõÄÁ¬½Ó¿ÉÒÔÂú×ã ds.getConnection() ÇëÇóµÄÐèÒª¡£ÏÂÒ»¸öÇëÇó£¨Èç¹ûÈκÎÒÔÇ°µÄÁ¬½Ó¶¼Ã»Óб»·µ»Øµ½³Ø£©½«»á·¢ÏÖ³ØÊǿյģ¬²¢»áµ¼Ö´´½¨ÐµÄÁ¬½Ó£¬µ«²»»á³¬³ö¸Ã³ØÖ¸¶¨µÄ×î´óÁ¬½ÓÊýÄ¿µÄÏÞÖÆ¡£³ØʵÏÖ½«¸ú×Ù´´½¨µÄÁ¬½ÓµÄÊýÄ¿¡£Èç¹û getConnection() ÇëÇó·¢ÏÖ³ØÊǿյģ¬»òÕßÒÑ´´½¨µÄÁ¬½ÓµÄÊýÄ¿µÈÓÚ³ØÖÐ×î´óÁ¬½ÓÊýÄ¿£¬Ôòµ±Ç°ÇëÇ󽫲»ÓèÂú×ã¡£´ËÀàÇé¿ö½ö»áÔÚ²»¿ÉÄܽøÐÐÁ¬½Ó¹²Ïíʱ·¢Éú£¬¶øÇÒÕâÖÖ×´¿ö»áÒ»Ö±±£³ÖÏÂÈ¥£¬Ö±µ½Ò»¸öÁ¬½Ó·µ»Øµ½³ØÖС£

µ±·þÎñÆ÷ÈÔÈ»ÔËÐÐʱ£¬¼´Ê¹Êý¾Ý¿â±ÀÀ£²¢ÓÖ»Ö¸´£¬Á¬½Ó³ØÒ²½«¼ÌÐøÕý³£¹¤×÷¡£Ö»ÓÐÔÚÆôÓÃÁ¬½ÓÑéÖ¤µÄÇé¿öÏ£¬²ÅÄÜʵÏÖÕâÒ»µã£¬Èç¡°ÅäÖÃÁ¬½Ó³ØÉèÖá±ËùÊö¡£

¸ù¾ÝÄú´Ó¡°Validation Type¡±ÏÂÀ­ÁбíÖÐÑ¡ÔñµÄÖµ£¬³ØʵÏÖ³ÌÐòÖ´ÐÐÒÔϲÎÊý£º

  • Èç¹ûÑ¡Ôñ×Ô¶¯Ìá½»×÷ΪÁ¬½ÓÑéÖ¤ÀàÐÍ£¬ÏµÍ³½«Í¨¹ýÖ´ÐÐ conn.getAutoCommit() ·½·¨¼ì²éÁ¬½ÓÊÇ·ñÓÐЧ¡£Èç¹û¸Ã·½·¨²»Å׳ö SQLException£¬Ôò¸ÃÁ¬½Ó±»ÊÓΪ´¦ÓÚÓÐЧ״̬¡£×Ô¶¯Ìá½»ÊǴ˲ÎÊýµÄĬÈÏÑ¡Ïî¡£
  • Èç¹ûÑ¡ÔñÁËÔªÊý¾Ý×÷ΪÁ¬½ÓÑéÖ¤ÀàÐÍ£¬ÏµÍ³½«Ö´ÐÐ conn.getMetaData() ·½·¨£¬¼ì²éÁ¬½ÓÉÏÊÇ·ñ´æÔÚÔªÊý¾Ý£¬¶øÇÒÈç¹û¸Ã·½·¨Ã»ÓÐÅ׳ö SQLException£¬Ôòϵͳ½«ÈÏΪ¸ÃÁ¬½ÓÓÐЧ¡£
  • Èç¹ûÑ¡Ôñ±í×÷ΪÁ¬½ÓÑéÖ¤ÀàÐÍ£¬ÏµÍ³½«Ö´Ðвéѯ¡°Select * From <table-name>¡±¡£Èç¹û´Ëµ÷Óò»Å׳ö SQLException£¬ÏµÍ³½«ÈÏΪ¸ÃÁ¬½ÓÓÐЧ¡£

Èç¹ûÆôÓà fail-all-connections ÊôÐÔ£¬Ôò³ØÖеÄÈκÎÁ¬½Ó¶¼½«±»·¢ÏÖ´¦ÓÚÎÞЧ״̬£¬´Ó¶øËùÓÐÁ¬½Ó¶¼½«¹Ø±Õ²¢ÖØн¨Á¢¡£·ñÔò£¬Ê§Ð§ºÍÖØн¨Á¢½«²»»áÇáÒ×·¢Éú£¬¶ø½öÔÚʹÓõ¥¸öÁ¬½Óʱ·¢Éú¡£

³ØʵÏÖ»¹¿ÉÒÔ»ØÊÕ³ØÖÐËùÓпÉÓõÄÁ¬½Ó¡£Òò´Ë£¬Èç¹ûÁ¬½Ó´¦ÓÚ¿ÕÏÐ״̬µÄʱ¼ä³¬³öÁËÖ¸¶¨µÄ¿ÕÏÐʱ¼ä£¬ËüÃǽ«»á¹Ø±Õ£¬´Ó¶øʹ³Ø´óС´ïµ½Îȶ¨³Ø´óС¡£Èç¹û³Ø¼«Îª¿ÕÏУ¬Ôò¿ÉÄܵ¼ÖÂÈÝÆ÷²»µÃ²»ÖØн¨Á¢ÎÞЧÁ¬½Ó£¬²¢Ê¼ÖÕʹ³ØÖоßÓÐÎȶ¨µÄ¿ÉÓÃÁ¬½ÓÊýÄ¿¡£ÄúÔÚÈ·¶¨ÊÇ·ñÏà¶ÔÓÚ×î´ó³Ø´óСÉèÖÃÎȶ¨³Ø´óСʱ£¬±ØÐ뽫ÕâÒ»µãÀμÇÔÚÐÄ¡£

¼àÊÓ JDBC Á¬½Ó¼ÓÈë

Äú¿ÉÄÜÐèÒª¶¨ÆÚ¼àÊӳزÙ×÷£¬ÒÔÈ·¶¨³Ø´óСÅäÖÃÊÇ·ñÓÐЧµØ¹¤×÷¡£Ï±íÁгöÁËËùÓпɼàÊ JDBC Á¬½Ó¼ÓÈë²ÎÊý¡£

×¢Ò⣬¿ÉÄÜ»áÔÚδÀ´µÄ°æ±¾ÖиĽøÆôÓüàÊӵŤ×÷·½Ê½ÒÔ¼°¿ÉÒÔ¼àÊÓµÄÊôÐÔ¡£

   ÓÃÓÚ¼àÊ JDBC Á¬½Ó³Ø²ÎÊý

ÊôÐÔÃû³Æ

Êý¾ÝÀàÐÍ

˵Ã÷

total-threads-waiting

 

ÕûÊý

 

µÈ´ý JDBC Á¬½ÓµÄÏ̵߳Ä×ÜÊý¡£

 

total-outbound-connections

 

ÕûÊý

 

JDBC Á¬½ÓÑé֤ʧ°ÜµÄ×ÜÊý

 

total-connections-timed-out

 

ÕûÊý

 

ÇëÇó³¬Ê±µÄÁ¬½ÓµÄ×ÜÊý¡£

 

¹ØÓÚÁ¬½Ó¹²Ïí

µ±Ä³¸ö J2EE Ó¦ÓóÌÐò»ñµÃµÄ¶à¸öÁ¬½ÓʹÓÃͬһ×ÊÔ´¹ÜÀíÆ÷ʱ£¬³ØʵÏÖ½«ÔÚͬһÊÂÎñ·¶Î§ÄÚÌṩÁ¬½Ó¹²Ïí¡£¿Éͨ¹ýÒÔÏÂʾÀýÀí½âÊõÓï¡°ÊÂÎñ·¶Î§¡±£º

Bean_A Æô¶¯ÊÂÎñ (Tx1) ²¢»ñµÃÁ¬½Ó¡£È»ºó£¬Bean_A µ÷ÓÃͬһÊÂÎñ (Tx1) ÖÐµÄ Bean_B ÖеÄÒ»¸ö·½·¨¡£ÏÖÔÚ£¬Èç¹û Bean_B ʹÓÃͬÑùµÄµÇ¼ÐÅÏ¢´Óͬһ DataSource »ñÈ¡Á¬½Ó£¬ÔòºÜÃ÷ÏÔ£¬Í¬Ò»Á¬½Ó¿ÉÒÔ±»¹²Ïí£¬ÒòΪֻÓÐ Bean_A ½«Íê³ÉÊÂÎñ¡£ÁíÍ⣬Çë×¢ÒâÖ»ÓÐÔÚ J2EE ²¿ÊðÃèÊö·ûÖаÑ×ÊÔ´¹²Ïí·¶Î§ÉèÖÃΪ Shareable µÄÇé¿öÏ£¬¸ÃÁ¬½Ó²ÅÄܹ²Ïí¡£Èç¹û²»Ï£ÍûÁ¬½Ó¹²Ïí£¬Ôò±ØÐëÔÚ²¿ÊðÃèÊö·ûÖн«×ÊÔ´¹²Ïí·¶Î§ÉèÖÃΪ Unshareable¡£Sun ONE Application Server ÌṩÁËÁ¬½Ó¹²Ïí£¬ÒòΪÕâÑù¿ÉÒÔÌá¸ßÐÔÄÜ¡£

¹ØÓÚ JDBC ÊÂÎñ

Ò»¸öÊÂÎñ°üº¬Ò»¸ö»ò¶à¸öÒÑÖ´ÐС¢Íê³ÉÈ»ºóÌá½»»ò»Ø¹öµÄÓï¾ä¡£·½·¨ commit »ò rollback ±»µ÷ÓÃʱ£¬µ±Ç°ÊÂÎñ½«½áÊøÇÒÁíÒ»¸öÊÂÎñ¿ªÊ¼Æô¶¯¡£

ĬÈÏÇé¿öÏ£¬Ð嵀 Connection ¶ÔÏóͨ³£´¦ÓÚ×Ô¶¯Ìύģʽ£¬¼´Óï¾äÍê³Éʱ£¬½«×Ô¶¯¶Ô¸ÃÓï¾äµ÷Ó÷½·¨ commit¡£ÔÚ´ËÇé¿öÏ£¬ÓÉÓÚÿ¸öÓï¾ä·Ö±ð½øÐÐÌá½»£¬Òò¶øÒ»¸öÊÂÎñ½ö°üº¬Ò»¸öÓï¾ä¡£Èç¹ûÒѽûÓÃ×Ô¶¯Ìύģʽ£¬ÔòÔÚÃ÷È·µ÷Óà commit »ò rollback ·½·¨Ö®Ç°£¬ÊÂÎñ²»»áÖÕÖ¹£¬Òò´Ë£¬¸ÃÊÂÎñ½«°üÀ¨Éϴε÷Óà commit »ò rollback ÒÔÀ´ÒѾ­Ö´ÐеÄËùÓÐÓï¾ä¡£ÔÚµÚ¶þ¸öʾÀýÖУ¬¸ÃÊÂÎñÖеÄËùÓÐÓï¾ä½«×÷Ϊһ¸ö×é½øÐÐÌá½»»ò»Ø¹ö¡£

·½·¨ commit ʹ SQL Óï¾ä¶ÔÊý¾Ý¿âËù×öµÄÈκθü¸Ä¶¼³ÉΪÓÀ¾Ã¸ü¸Ä£¬¶øÇҸ÷½·¨Í¬Ê±ÊͷŸÃÊÂÎñ±£³ÖµÄÈκÎËø¶¨¡£·½·¨ rollback ½«·ÅÆúÕâЩ¸ü¸Ä¡£

Èç¹ûÒ»¸öÊÂÎñÖÐÓÐÁ½¸ö¸üУ¬ÓÐʱÄú¿ÉÄܲ»Ï£ÍûÒ»¸ö¸ü¸ÄÔÚij¸ö¸üÐÂÖÐÉúЧ£¬³ý·ÇÁíÒ»¸ö¸üÐÂÒ²Êܵ½Ó°Ïì¡£Õâ¿Éͨ¹ý½ûÓÃ×Ô¶¯Ìá½»²¢½«Á½¸ö¸üÐÂ×éºÏµ½Ò»¸öÊÂÎñÖÐÀ´ÊµÏÖ¡£Èç¹ûÁ½¸ö¸üоù³É¹¦£¬Ôò commit ·½·¨½«±»µ÷Óã¬ÕâÑùÁ½¸ö¸üеÄЧ¹û½«³¤¾Ã±£³Ö£»Èç¹ûÒ»¸ö¸üÐÂʧ°Ü»òÁ½¸ö¸üж¼Ê§°Ü£¬Ôò rollback ·½·¨½«±»µ÷Ó㬴Ӷø»¹Ô­ÎªÖ´ÐиüÐÂÇ°µÄÖµ¡£¶àÊý JDBC Çý¶¯³ÌÐòÖ§³ÖÊÂÎñ¡£

javax.sql Èí¼þ°üÖеÄÀàºÍ½Ó¿Ú¿ÉÒÔʹ Connection ¶ÔÏó³ÉΪ·Ö²¼Ê½ÊÂÎñ£¨¼´£¬Ò»ÖÖÉæ¼°Óë¶à¸ö DBMS ·þÎñÆ÷µÄÁ¬½ÓµÄÊÂÎñ£©µÄ×é³É²¿·Ö¡£±ØÐëÓÉÒѾ­ÊµÏÖµÄ DataSource ¶ÔÏóÉú³É Connection ¶ÔÏ󣬲ÅÄÜʹÓÃÖмä²ã·þÎñÆ÷µÄ·Ö²¼Ê½ÊÂÎñ»ù´¡½á¹¹¡£Óë DriverManager Éú³ÉµÄ Connection ¶ÔÏó²»Í¬µÄÊÇ£¬Ä¬ÈÏÇé¿öÏ£¬ÓÉÕâÑùÒ»¸ö DataSource ¶ÔÏóÉú³ÉµÄ Connection ¶ÔÏóµÄ×Ô¶¯Ìύģʽ½«±»½ûÓá£ÁíÒ»·½Ã棬DataSource ¶ÔÏóµÄ±ê׼ʵÏÖ½«Éú³ÉÓë DriverManager ÀàÉú³ÉµÄ Connection ¶ÔÏóÍêÈ«ÏàͬµÄ¶ÔÏó¡£

µ± Connection ¶ÔÏóÊÇ·Ö²¼Ê½ÊÂÎñµÄ×é³É²¿·Öʱ£¬ÊÂÎñ¹ÜÀíÆ÷È·¶¨ºÎʱ¶Ô Connection ¶ÔÏóµ÷Óà commit »ò rollback ·½·¨¡£Òò´Ë£¬Connection ¶ÔÏó¼ÓÈë·Ö²¼Ê½ÊÂÎñʱ£¬Ó¦ÓóÌÐò²»Ó¦½øÐÐÈκÎÓ°ÏìÁ¬½Ó¿ªÊ¼»ò½áÊøµÄʱ¼äµÄ²Ù×÷£¬ÀýÈ磬µ÷Ó÷½·¨ Connection.commit »ò Connection.rollback£¬»òÕ߹رոÃÁ¬½ÓµÄ×Ô¶¯Ìύģʽ¡£ÕâЩ²Ù×÷»á¸ÉÈÅÊÂÎñ¹ÜÀíÆ÷¶Ô·Ö²¼Ê½ÊÂÎñµÄ´¦Àí¡£

¹ØÓÚ Java Óʼþ×ÊÔ´

JavaMail API ÔÊÐí·ÃÎÊÏûÏ¢´æ´¢¿âÖаüº¬µÄµç×ÓÓʼþÏûÏ¢£¬²¢ÔÊÐíʹÓÃÏûÏ¢´«Êä´´½¨ºÍ·¢Ë͵ç×ÓÓʼþÏûÏ¢¡£JavaMail API Öаüº¬ÁË¶Ô Internet ±ê×¼ MIME ÏûÏ¢µÄÌض¨Ö§³Ö¡£·ÃÎÊÏûÏ¢´æ´¢¿âºÍ´«ÊäÊÇͨ¹ýÖ§³ÖÌض¨´æ´¢¿âºÍ´«ÊäЭÒéµÄЭÒéÌṩÕß½øÐеġ£JavaMail API ¹æ·¶²»ÒªÇóÈκÎÌض¨µÄЭÒéÌṩÕߣ¬µ« JavaMail °üÀ¨Ò»¸ö IMAP ÏûÏ¢´æ´¢¿âÌṩÕߺÍÒ»¸ö SMTP ÏûÏ¢´«ÊäÌṩÕß¡£

JavaMail API ÌṩÁËÒ»×鶨Òå¹¹³ÉÓʼþϵͳµÄ¶ÔÏóµÄ³éÏóÀà¡£API ¶¨ÒåÏñ Message¡¢Store ºÍ Transport ÕâÑùµÄÀà¡£¿ÉÒÔÀ©Õ¹ API£¬²¢¿É½«Æä½øÒ»²½·ÖÀ࣬ÒÔÌṩеÄЭÒé²¢ÔÚ±ØҪʱÌí¼Ó¹¦ÄÜ¡£ÁíÍ⣬API Ìṩ³éÏóÀàµÄ¾ßÌå×ÓÀà¡£ÕâЩ×ÓÀࣨ°üÀ¨ MimeMessage ºÍ MimeBodyPart£©ÊµÏÖÁ˹㷺ʹÓÃµÄ Internet ÓʼþЭÒé¡£

JavaMail API ºÜ´ó³Ì¶ÈÉϼ³È¡ÁË IMAP¡¢MAPI¡¢CMC¡¢c-client ºÍÆäËüÓʼþÏûÏ¢´«ËÍϵͳ API µÄ¹¦ÄÜ¡£JavaMail API Ö§³ÖÐí¶à²»Í¬µÄÏûÏ¢´«ËÍϵͳʵÏÖ£¬ÀýÈ磬²»Í¬µÄÏûÏ¢´æ´¢¿â¡¢²»Í¬µÄÏûÏ¢¸ñʽÒÔ¼°²»Í¬µÄÏûÏ¢´«Êä¡£JavaMail API ÌṩÁËÒ»×鶨Òå¿Í»§»úÓ¦ÓóÌÐòµÄ API µÄ»ùÀàºÍ½Ó¿Ú¡£¿ª·¢Õß¿ÉÒÔ½« JavaMail Àà½øÒ»²½·ÖÀ࣬ÒÔ±ãÌṩÌض¨ÏûÏ¢´«ËÍϵͳµÄʵÏÖ£¬ÀýÈç IMAP¡¢POP3 ºÍ SMTP¡£

±¾½Ú°üÀ¨ÒÔÏÂÖ÷Ì⣺

¹ØÓÚ JavaMail ÏûÏ¢´¦Àí½ø³Ì

JavaMail API Ö´ÐÐÒÔϹ¦ÄÜ£¬ÕâЩ¹¦Äܹ¹³ÉÁ˵äÐÍ¿Í»§»úÓ¦ÓóÌÐòµÄ±ê×¼Óʼþ´¦Àí½ø³Ì£º

  • ´´½¨Ò»¸öÓʼþÏûÏ¢£¬ÆäÖаüº¬±êÌâÊôÐÔ¼¯ºÍ¾ßÓÐ Content-Type ±êÌâ×Ö¶ÎÖÐÖ¸¶¨µÄijÖÖÒÑÖªÊý¾ÝÀàÐ͵ÄÊý¾Ý¿é¡£JavaMail ʹÓà Part ½Ó¿ÚºÍ Message ÀඨÒåÓʼþÏûÏ¢¡£ËüʹÓà JAF ¶¨ÒåµÄ DataHandler ¶ÔÏóÒÔ°üº¬¸ÃÏûÏ¢ÖеÄÊý¾Ý¡£
  • ´´½¨ Session ¶ÔÏó£¬ËüÑéÖ¤Óû§²¢¿ØÖƶÔÏûÏ¢´æ´¢¿âºÍ´«ÊäµÄ·ÃÎÊ¡£
  • ½«ÏûÏ¢·¢Ë͵½ÆäÊÕ¼þÈËÁÐ±í¡£
  • ´ÓÏûÏ¢´æ´¢¿â¼ìË÷ÏûÏ¢¡£
  • ¶Ô¼ìË÷µ½µÄÏûÏ¢Ö´Ðи߼¶ÃüÁî¡£Ïñ²é¿´ºÍ´òÓ¡ÕâÑùµÄ¸ß¼¶ÃüÁî¿Éͨ¹ý JAF-Aware JavaBean ʵÏÖ¡£


  • ×¢Òâ

    Ä¿Ç°£¬JavaMail ¿ò¼ÜûÓж¨ÒåÖ§³ÖÏûÏ¢´«ËÍ¡¢°²È«ÐÔ¡¢¶Ï¿ªÁ¬½Ó²Ù×÷¡¢Ä¿Â¼·þÎñ»ò¹ýÂËÆ÷¹¦ÄܵĻúÖÆ¡£



ÏÂͼ˵Ã÷ÁË JavaMail API ÈçºÎ´¦ÀíÏûÏ¢´¦Àí½ø³Ì£º

  
´ËͼÏÔʾÁË Java Mail API µÄÏûÏ¢´¦Àí½ø³Ì
Java Mail API µÄÏûÏ¢´¦Àí½ø³Ì

JavaMail API ÊÇͨ¹ýʹÓþ²Ì¬¹¤³§·½·¨´´½¨ javax.mail.Session ½øÐÐÅäÖõġ£Sun ONE Application Server ʹÓà JNDI ÇëÇó Session ¶ÔÏ󣬲¢Ê¹Óà resource-ref ÔªËØÔÚÆ䲿ÊðÃèÊö·ûÖÐÁгö¶Ô Session ¶ÔÏóµÄÐèÒª¡£JavaMail API Session ¶ÔÏó±»ÊÓΪ×ÊÔ´¹¤³§¡£

JavaMail API ÖÐÌṩÁËÏûÏ¢´«Ê䣬Ëü¿ÉÒÔ´¦ÀíÀàÐÍΪ javax.mail.internet.InternetAddress µÄµØÖ·ÒÔ¼°ÀàÐÍΪ javax.mail.internet.MimeMessage µÄÏûÏ¢¡£±ØÐëÕýÈ·ÅäÖÃĬÈÏÏûÏ¢´«Ê䣬²ÅÄÜʹÓà javax.mail.Transport ÀàµÄ send ·½·¨·¢ËÍÕâÑùµÄÏûÏ¢¡£

JavaMail API µÄ³éÏó²ãÉùÃ÷ÁËÖ¼ÔÚÖ§³ÖËùÓÐÓʼþϵͳ֧³ÖµÄÓʼþ´¦Àí¹¦ÄܵÄÀà¡¢½Ó¿ÚºÍ³éÏó·½·¨¡£°üº¬³éÏó²ãµÄ API ÔªËØÖ¼ÔÚ¸ù¾ÝÐèÒª½øÐнøÒ»²½·ÖÀàÒÔ¼°À©Õ¹£¬ÒÔ±ãÖ§³Ö±ê×¼Êý¾ÝÀàÐÍ£¬²¢ÇÒÖ¼ÔÚ¸ù¾ÝÐèÒªÓëÏûÏ¢·ÃÎʺÍÏûÏ¢´«ÊäЭÒé½øÐÐÁ¬½Ó¡£

Internet ʵÏÖ²ãʹÓà Internet ±ê×¼£¨RFC822 ºÍ MIME£©ÊµÏÖ²¿·Ö³éÏó²ã¡£

¹ØÓÚ JavaMail Ìåϵ½á¹¹×é¼þ

±¾½Ú½éÉÜÁË°üº¬ JavaMail Ìåϵ½á¹¹µÄÖ÷Òª×é¼þ£¬ÆäÖаüÀ¨ÒÔÏÂÖ÷Ì⣺

Message Àà

Message ÀàÊÇÒ»ÖÖ¶¨ÒåÒ»×éÊôÐÔºÍÓʼþÏûÏ¢ÄÚÈݵijéÏóÀà¡£Message ÀàµÄÊôÐÔÖ¸¶¨Ñ°Ö·ÐÅÏ¢£¬²¢¶¨ÒåÄÚÈݵĽṹ£¬ÆäÖаüÀ¨ÄÚÈÝÀàÐÍ¡£ÄÚÈݱ»±íʾΪ·âװʵ¼ÊÊý¾ÝµÄ DataHandler ¶ÔÏó¡£

Message ÀàʵÏÖ Part ½Ó¿Ú¡£Part ½Ó¿Ú¶¨ÒåÁËÒª¶¨Òå²¢¸ñʽ»¯ Message ¶ÔÏó´øÓеÄÊý¾ÝÄÚÈÝʱ£¬ÒÔ¼°Òª³É¹¦µØÓëÓʼþϵͳ½øÐÐÁ¬½ÓʱËùÐèµÄÊôÐÔ¡£Message Ààͨ¹ýÏûÏ¢´«ÊäϵͳÌí¼ÓÏûϢ·ÓÉËù±ØÐèµÄ¡°From¡±¡¢¡°To¡±¡¢¡°Subject¡±¡¢¡°Reply-To¡±ÒÔ¼°ÆäËüÊôÐÔ¡£Message ¶ÔÏó°üº¬ÔÚÒ»¸öÎļþ¼Ðʱ¾ßÓÐÒ»×éÓëÆä¹ØÁªµÄ±êÖ¾¡£JavaMail Ìṩ Message ×ÓÀ࣬ËüÖ§³ÖÌض¨ÏûÏ¢´«ËÍʵÏÖ¡£

ÏûÏ¢ÄÚÈÝÊÇÒ»¸ö×Ö½Ú¼¯ºÏ£¬»òÒ»¸ö×Ö½Ú¼¯ºÏµÄÒýÓã¬ËüÃÇ·â×°ÔÚ Message ¶ÔÏóÄÚ¡£JavaMail ²»ÖªµÀÏûÏ¢ÄÚÈݵÄÊý¾ÝÀàÐͺ͸ñʽ¡£Message ¶ÔÏóͨ¹ýÖмä²ã JavaBeans Activation Framework (JAF) ÓëÆäÄÚÈݽøÐн»»¥¡£´Ë·Ö¸ô²ãʹ Message ¶ÔÏó¿ÉÒÔͨ¹ýµ÷ÓÃÏàͬµÄ API ·½·¨£¬´¦ÀíÈκÎÈÎÒâÄÚÈݲ¢Ê¹ÓÃÈκÎÊʵ±µÄ´«ÊäЭÒé´«ÊäÕâЩÄÚÈÝ¡£ÏûÏ¢ÊÕ¼þÈËͨ³£ÖªµÀÄÚÈÝÊý¾ÝÀàÐͺ͸ñʽ£¬²¢ÇÒÖªµÀÈçºÎ´¦Àí¸ÃÄÚÈÝ¡£

JavaMail API »¹Ö§³Ö¶à²¿·ÖµÄ Message ¶ÔÏó£¬ÆäÖУ¬Ã¿¸ö Bodypart ¶¨ÒåÆä×Ô¼ºµÄÊôÐÔ¼¯ºÍÄÚÈÝ¡£

ÏûÏ¢´æ´¢ºÍ¼ìË÷

ÏûÏ¢´æ´¢ÔÚ Folder ¶ÔÏóÖС£Folder ¶ÔÏó¿É°üº¬×Ó¶ÔÏóÒÔ¼°ÏûÏ¢£¬Òò¶øÌṩÁËÒ»ÖÖÊ÷×´Îļþ¼Ð·Ö²ã½á¹¹¡£Folder ÀàÉùÃ÷»ñÈ¡¡¢¸½¼Ó¡¢¸´ÖƺÍɾ³ýÏûÏ¢µÄ·½·¨¡£Folder ¶ÔÏ󻹿ÉÒÔ½«Ê¼þ·¢Ë͵½×¢²áΪʼþ¼àÌýÆ÷µÄ×é¼þ¡£

Store Àà

Store ÀඨÒåÒ»¸öÊý¾Ý¿â£¬Ëü½«Îļþ¼Ð·Ö²ã½á¹¹ÓëÆäÏûÏ¢½áºÏÔÚÒ»Æð¡£Store À໹ָ¶¨·ÃÎÊÎļþ¼ÐºÍ¼ìË÷Îļþ¼ÐÖд洢µÄÏûÏ¢µÄ·ÃÎÊЭÒé¡£Store À໹Ìṩ½¨Á¢ÓëÊý¾Ý¿âµÄÁ¬½Ó¡¢»ñÈ¡Îļþ¼ÐÒÔ¼°¹Ø±ÕÁ¬½ÓµÄ·½·¨¡£ÊµÏÖÏûÏ¢·ÃÎÊЭÒ飨IMAP¡¢POP3 µÈ£©µÄ·þÎñÌṩÕß´Ó¶Ô Store Àà½øÒ»²½·ÖÀ࿪ʼ¡£Óû§Í¨³£Í¨¹ýÁ¬½ÓÌض¨µÄ Store ʵÏÖÆô¶¯ºÍÓʼþϵͳµÄ»á»°¡£

ÏûϢ׫дºÍ´«Êä

¿Í»§»úͨ¹ýʵÀý»¯Êʵ±µÄ Message ×ÓÀà´´½¨ÐÂÏûÏ¢¡£ËüÉèÖÃÖîÈçÊÕ¼þÈ˵ØÖ·ºÍÖ÷ÌâÕâÑùµÄÊôÐÔ£¬²¢½«ÄÚÈݲåÈë Message ¶ÔÏó¡£×îºó£¬Ëüͨ¹ýµ÷Óà Transport.send ·½·¨·¢ËÍ Message¡£Transport ÀàÄ£·Â½«ÏûϢ·Óɵ½ÆäÄ¿±êµØÖ·µÄ´«Êä´úÀí¡£´ËÀàÌṩÁ˽«ÏûÏ¢·¢Ë͵½ÊÕ¼þÈËÁбíµÄ·½·¨¡£¶Ô Message ¶ÔÏóµ÷Óà Transport.send ·½·¨»á¸ù¾ÝÆäÄ¿±êµØַʶ±ðÏàÓ¦µÄ´«Êä¡£

Session Àà

Session ÀඨÒåÈ«¾ÖÊôÐÔºÍÿÓû§ÓʼþÏà¹ØÊôÐÔ£¬ÕâЩÊôÐÔ¶¨ÒåÁËÖ§³ÖÓʼþµÄ¿Í»§»úÓëÍøÂçÖ®¼äµÄ½Ó¿Ú¡£

JavaMail ϵͳ×é¼þʹÓà Session ¶ÔÏóÉèÖûò»ñÈ¡Ìض¨ÊôÐÔ¡£Session À໹ÌṩһÖÖ×ÀÃæÓ¦ÓóÌÐò¿ÉÒÔ¹²ÏíµÄĬÈϵÄÑéÖ¤»á»°¶ÔÏó¡£Session ÀàÊÇÒ»¸ö×îÖÕ¾ßÌåÀà¡£ÎÞ·¨¶Ô Session Àà½øÒ»²½·ÖÀà¡£Session À໹³äµ±ÊµÏÖÌض¨·ÃÎʺʹ«ÊäЭÒéµÄ Store ºÍ Transport ¶ÔÏóµÄÒ»¸ö¹¤³§¡£Í¨¹ý¶Ô Session ¶ÔÏóµ÷ÓÃÊʵ±µÄ¹¤³§·½·¨£¬¿Í»§»ú¿ÉÒÔ»ñÈ¡Ö§³ÖÌض¨Ð­ÒéµÄ Store ºÍ Transport ¶ÔÏó¡£

¹ØÓÚ JavaBeans Activation Framework (JAF)

JavaMail ʹÓà JavaBeans Activation Framework (JAF)£¬ÒÔ±ã·â×°ÏûÏ¢Êý¾Ý²¢´¦ÀíÓÃÓÚÓëÕâЩÊý¾Ý½øÐн»»¥µÄÃüÁî¡£ÓëÏûÏ¢Êý¾Ý½»»¥Ó¦Í¨¹ý JAF-Aware JavaBeans ½øÐУ¬¶ø JavaMail API ûÓÐÌṩÓëÏûÏ¢Êý¾Ý½»»¥¹¦ÄÜ¡£

ͨ¹ýʹÓà JavaBeans Activation Framework ±ê×¼À©Õ¹£¬Ê¹Óà Java ¼¼ÊõµÄ¿ª·¢Õß¿ÉÒÔÀûÓñê×¼·þÎñÈ·¶¨ÈÎÒâÊý¾Ý¶ÎµÄÀàÐÍ¡¢·â×°¶ÔÓÚ¸ÃÊý¾Ý¶ÎµÄ·ÃÎÊ¡¢·¢ÏÖ¸ÃÊý¾Ý¶ÎÉÏ¿ÉÓõIJÙ×÷ÒÔ¼°ÊµÀý»¯Ö´ÐÐÉÏÊö²Ù×÷µÄÊʵ± Bean¡£ÀýÈ磬Èç¹ûä¯ÀÀÆ÷»ñµÃÒ»¸ö JPEG ͼÏñ£¬Ôò´Ë¿ò¼Üʹä¯ÀÀÆ÷¿ÉÒÔ½«Êý¾ÝÁ÷ʶ±ðΪ JPEG ͼÏñ£¬¶øÇÒ¸ù¾Ý¸ÃÊý¾ÝÀàÐÍ£¬ä¯ÀÀÆ÷¿ÉÒÔ²éÕÒºÍʵÀý»¯Ò»¸ö¿ÉÒÔ²Ù×÷´Ë JPEG ͼÏñµÄ¶ÔÏ󣬻ò¿ÉÒԲ鿴¸ÃͼÏñ¡£

JavaBeans Activation Framework API Ö§³Ö¸÷ÖÖ MIME Êý¾ÝÀàÐÍ¡£JavaMail API ±ØÐëΪºÍϱíËùʾµÄ Java ±à³ÌÓïÑÔÀàÐͶÔÓ¦µÄÏÂÁÐ MIME Êý¾ÝÀàÐÍ£¬½« javax.activation.DataContentHandlers °üÀ¨ÔÚÄÚ¡£

   JavaMail API MIME Êý¾ÝÀàÐ͵½ Java ÀàÐ͵ÄÓ³Éä

MIME ÀàÐÍ

Java ÀàÐÍ

Text/Plain

 

java.lang.String

 

Multipart/

 

javax.mail.internet.MIME.Multipart

 

Message/rfc822

 

javax.mail.internet.MIME.Message

 

JavaBeans Activation Framework ½«¶Ô MIME Êý¾ÝÀàÐ͵ÄÖ§³Ö¼¯³Éµ½ Java ƽ̨֮ÖС£¿ÉÒÔʹÓà avax.activation.DataContentHandlerobjects ½« MIME ×Ö½ÚÁ÷ºÍ Java ±à³ÌÓïÑÔ¶ÔÏóÏ໥ת»»¡£¿ÉÒÔÖ¸¶¨ JavaBeans ×é¼þÔÚ MIME Êý¾ÝÉϽøÐвÙ×÷£¬ÀýÈç²é¿´»ò±à¼­Êý¾Ý¡£JavaBeans Activation Framework »¹ÌṩһÖÖ½«ÎļþÀ©Õ¹ÃûÓ³Éäµ½ MIME ÀàÐ͵ĻúÖÆ¡£JavaMail API ʹÓà JavaBeans Activation Framework ´¦Àíµç×ÓÓʼþÏûÏ¢ÖаüÀ¨µÄÊý¾Ý¡£Í¨³£Çé¿öÏ£¬J2EE Ó¦ÓóÌÐò½«²»ÐèÒªÖ±½ÓʹÓà JavaBeans Activation Framework£¬È»¶ø¸´ÔÓµØʹÓõç×ÓÓʼþµÄÓ¦ÓóÌÐò¿ÉÄÜÐèҪʹÓô˿ò¼Ü¡£

¹ØÓÚ JavaMail ÅäÖòÎÊý

ÒÔÏÂÅäÖòÎÊýÓÉ Sun ONE Application Server ÖÐµÄ JavaMail ×ÊԴʹÓá£ÕâЩÅäÖòÎÊýΪÃû³Æ¡¢Öµ¶Ô£¬ËüÃǽ«´Ó server.xml ÎļþµÄ mail-resource ÔªËØÖжÁÈ¡¡£

  • JNDI Name
  • JNDI Name Ö¸¶¨ÓÃÀ´´Ó J2EE Ó¦ÓóÌÐòÖвο¼´ËÓʼþ×ÊÔ´µÄÃû³Æ¡£

  • Enabled
  • enabled ÅäÖòÎÊýÖ¸¶¨´ËÓʼþ×ÊÔ´ÊÇ·ñ½«ÔÚ JNDI Ê÷Öз¢²¼£¬ÒÔ¼°ÊÇ·ñ¿ÉÒÔ±»²Î¿¼¡£Èç¹û J2EE Ó¦ÓóÌÐò²Î¿¼Ò»ÏîÒѽûÓõÄ×ÊÔ´£¬¸ÃÓ¦ÓóÌÐò½«»áÊÕµ½ NameNotFoundException Òì³£¡£

  • store-protocol
  • Ö¸¶¨Ä¬ÈϵÄÏûÏ¢·ÃÎÊЭÒé¡£Session.getStore() ·½·¨·µ»ØÒ»¸öʵÏÖ´ËЭÒéµÄ Store ¶ÔÏ󡣿ͻ§»ú¿ÉÒÔ¸²¸Ç´ËÊôÐÔ£¬²¢Óà Session.getStore(String protocol) ·½·¨Ã÷È·µØÖ¸¶¨¸ÃЭÒé¡£

  • store-protocol class
  • Ö¸¶¨ÊµÏÖÉÏÃæÖ¸¶¨µÄ´æ´¢Ð­ÒéµÄÀàÃû¡£´ËÀàµÄĬÈÏֵΪ com.sun.mail.imap.IMAPStore¡£

  • transport-protocol
  • Ö¸¶¨Ä¬ÈϵĴ«ÊäЭÒé¡£Session.getTransport() ·½·¨·µ»ØÒ»¸öʵÏÖ´ËЭÒéµÄ Tranport ¶ÔÏ󡣿ͻ§»ú¿ÉÒÔ¸²¸Ç´ËÊôÐÔ£¬²¢Óà Session.getTransport(String protocol) ·½·¨Ã÷È·µØÖ¸¶¨¸ÃЭÒé¡£

  • transport-protocol class
  • Ö¸¶¨ÊµÏÖÉÏÃæÖ¸¶¨µÄ´«ÊäЭÒéµÄÀàÃû¡£´ËÀàµÄĬÈÏֵΪ com.sun.mail.smtp.SMTPTransport¡£

  • host
  • Ö¸¶¨Ä¬ÈϵÄÓʼþ·þÎñÆ÷¡£Store ºÍ Transport ¶ÔÏóµÄÁ¬½Ó·½·¨Ê¹ÓôËÊôÐÔÀ´¶¨Î»Ä¿±êÖ÷»ú£¨Èç¹ûЭÒéרÓõÄÖ÷»úÊôÐÔ²»´æÔÚ£©¡£

  • user
  • Ö¸¶¨Á¬½Óµ½Óʼþ·þÎñÆ÷ʱҪÌṩµÄÓû§Ãû¡£Store ºÍ Transport ¶ÔÏóµÄÁ¬½Ó·½·¨Ê¹ÓôËÊôÐÔÀ´»ñÈ¡Óû§Ãû£¨Èç¹ûЭÒéרÓõÄÓû§Ãû²»´æÔÚ£©¡£

  • from
  • Ö¸¶¨µ±Ç°Óû§µÄ·µ»ØµØÖ·¡£ÓÉ InternetAddress.getLocalAddress ·½·¨ÓÃÀ´Ö¸¶¨µ±Ç°Óû§µÄµç×ÓÓʼþµØÖ·¡£

  • debug
  • Ö¸¶¨³õʼµ÷ÊÔģʽ¡£½«´ËÊôÐÔÉèÖÃΪ True ½«»á´ò¿ªµ÷ÊÔģʽ£¬¶ø½«´ËÆäÉèÖÃΪ False Ôò»á¹Ø±Õµ÷ÊÔģʽ¡£

  • mail-<protocol>-host
  • Ö¸¶¨Ð­ÒéרÓõÄĬÈÏÓʼþ·þÎñÆ÷¡£Õâ»á¸²¸Ç mail.host ÊôÐÔ¡£´ËÊôÐÔ¿ÉÒÔ¸ù¾Ý store-protocol ÊôÐÔµÄÖµ½øÐÐÉèÖá£Èç¹û store-protocol µÄֵΪ imap »ò POP£¬ÄúÐèÒª·Ö±ðÌí¼ÓÃû³ÆΪ mail.imap.host »ò mail.pop3.host µÄÊôÐÔ¡£Ìض¨ÊôÐÔµÄÖµÓ¦ÉèÖÃΪÊʺÏÓʼþϵͳÅäÖõÄÖµ¡£ÀýÈ磬Èç¹û½« store-protocol ÉèÖÃΪ IMAP£¬property name:mail-imap-host »á´øÓÐÒÔÏÂÖµ£ºspaceduck.acme.com¡£

  • mail-<protocol>-user
  • Ö¸¶¨ÓÃÀ´Á¬½Óµ½Óʼþ·þÎñÆ÷µÄ¡¢Ð­ÒéרÓõÄĬÈÏÓû§Ãû¡£Õâ»á¸²¸Ç mail.user ÊôÐÔ¡£Òò´Ë£¬´ËÊôÐÔ¸ù¾Ý store-protocol ÊôÐÔµÄÖµ£¬¿ÉÄÜÊÇ mail.imap.user »ò mail.pop3.user¡£ÀýÈ磬Èç¹û½« store-protocol ÉèÖÃΪ IMAP£¬property name:mail-imap-user »á´øÓÐÖµ fredbloggs¡£

JavaMail »á»°²Î¿¼µÄ J2EE ²¿ÊðÃèÊö·û

JavaMail ×ÊԴʹÓ÷þÎñÆ÷×¢²áºó£¬ÈκΠJ2EE Ó¦ÓóÌÐò×é¼þ¶¼¿ÉÒÔʹÓà JNDI ²éÕÒ¶ÔÆä½øÐвο¼¡£ÎªÁ˲¿ÊðÒ»¸ö²Î¿¼×ÊÔ´¹ÜÀíÆ÷Á¬½Ó¹¤³§µÄÓ¦ÓóÌÐò£¬×é¼þÌṩÕß±ØÐëÔÚ±ê×¼ J2EE 1.3 ²¿ÊðÃèÊö·ûÖÐÉùÃ÷ËùÓеÄ×ÊÔ´¹ÜÀíÆ÷Á¬½Ó¹¤³§²Î¿¼¡£

JavaMail ²Î¿¼µÄÍêÕû J2EE1.3 ÃèÊö·ûÔªËØÈçÏÂËùʾ£º

<resource-ref>

<description>

JavaMail resource used for sending my mail

</description>

<res-ref-name>mail/MyMailSession</res-ref-name>

<res-type>javax.mail.Session</res-type>

<res-auth>Container</res-auth>

<res-sharing-scope>Shareable</res-sharing-scope>

</resource-ref>

Sun ONE Application Server ²¿ÊðÃèÊö·ûÖеÄÏî

¶ÔÓÚÿ¸ö²Î¿¼Óʼþ×ÊÔ´µÄÒѲ¿ÊðµÄ×é¼þ£¬²¿ÊðÕß±ØÐ뽫×é¼þÖÐʹÓõÄ×ÊÔ´Ãû³ÆÓ³ÉäΪ DataSource ʹÓÃÃüÃû·þÎñ×¢²áµÄʵ¼Ê jndi Ãû³Æ¡£²¿Ê𹤾ßÓÐÖúÓÚ²¿ÊðÕßÈÝÒ׵ؽøÐдËÓ³Éä¡£´ËÓ³Éä×¢²áµ½ Sun ONE Application Server Ìض¨µÄ xml ÖС£ÏÂÃæµÄʾÀýƬ¶ÎÏÔʾÁË°üº¬´ËÓ³ÉäµÄ Sun ONE Application Server Ìض¨µÄ XML£º

<resource-ref>

<res-ref-name>mail/MyMailSession</res-ref-name>

<jndi-name>mail/Session</jndi-name>

</resource-ref>

´´½¨Ð嵀 JavaMail »á»°

Äú¿ÉÒÔʹÓùÜÀí½çÃæÅäÖà JavaMail »á»°¡£´´½¨ºÍÅäÖÃÐ嵀 JavaMail »á»°µÄ²½Ö裺

  1. ÔÚ¹ÜÀí½çÃæµÄ×ó²à´°¸ñÖУ¬Õ¹¿ªÒªÎªÆä´´½¨Ð嵀 JavaMail »á»°µÄ Sun ONE Application Server ʵÀý¡£
  2. µ¥»÷¡°JavaMail Sessions¡±¡£ Äú»áÔÚ¹ÜÀí½çÃæµÄÓҲര¸ñÖп´µ½ÒÔÏ´°¿Ú£¬Èçͼ¡°ÅäÖà JavaMail »á»°¡±Ëùʾ£º

   ÅäÖà JavaMail »á»°
´ËͼÏÔʾÁËÈçºÎÅäÖà JavaMail »á»°¡£

  1. ÔÚ¡°JNDI Name¡±Îı¾×Ö¶ÎÖУ¬Îª´´½¨µÄ JavaMail »á»°ÊäÈë JNDI Ãû³Æ¡£Java Óʼþ×ÊԴʹÓ÷þÎñÆ÷×¢²áºó£¬ÈκΠJ2EE Ó¦ÓóÌÐò×é¼þ¶¼¿ÉÒÔʹÓà JNDI ²éÕÒ¶ÔÆä½øÐвο¼¡£
  2. ÔÚ¡°Mail Host¡±Îı¾×Ö¶ÎÖУ¬Ö¸¶¨Ä¬ÈÏÓʼþ·þÎñÆ÷µÄ DNS Ãû³Æ¡£Store ºÍ Transport ¶ÔÏóµÄÁ¬½Ó·½·¨Ê¹ÓôËÊôÐÔÀ´¶¨Î»Ä¿±êÖ÷»ú£¨Èç¹ûÌض¨Ð­ÒéµÄÖ÷»úÌØÐÔ²»´æÔÚ£©¡£
  3. ÔÚ¡°Default User¡±Îı¾×Ö¶ÎÖУ¬Ö¸¶¨Á¬½ÓÓʼþ·þÎñÆ÷ʱҪÌṩµÄÓû§Ãû¡£Store ºÍ Transport ¶ÔÏóµÄÁ¬½Ó·½·¨Ê¹ÓôËÊôÐÔ»ñÈ¡Óû§Ãû£¨Èç¹ûЭÒéרÓõÄÓû§Ãû²»´æÔÚ£©¡£
  4. ÔÚ¡°Default Return Address¡±×Ö¶ÎÖУ¬Ö¸¶¨µ±Ç°Óû§µÄĬÈÏ·µ»ØµØÖ·¡£Ä¬ÈϵØַӦΪÒÔϸñʽ£ºusername@host¡£
  5. ÔÚ¡°Description¡±×Ö¶ÎÖУ¬Îª´Ë Java Óʼþ»á»°ÊäÈë˵Ã÷¡£
  6. Ñ¡ÖС°Java Mail Session Enabled¡±¸´Ñ¡¿ò£¬½«ÆôÓÃËù´´½¨µÄ Java Óʼþ»á»°¡£
  7. µ¥»÷¡°OK¡±±£´æÒÑÅäÖõÄÐ嵀 JavaMail »á»°¡£

ÅäÖø߼¶×ÊÔ´ÊôÐÔ

Äú¿ÉÒÔʹÓùÜÀí½çÃæΪÐ嵀 JavaMail »á»°ÅäÖöà¸öÆäËüÊôÐÔ¡£ÊôÐÔÃûºÍÖµ¶ÔÈ¡¾öÓÚËùÓõÄÓʼþЭÒé¡£ÄúÒ²¿ÉÒÔÔÚ server.xml ÎļþÖÐÖ±½ÓÖ¸¶¨ÕâЩÊôÐÔ¡£

ÅäÖÃÆäËüÊôÐԵIJ½Ö裺

  1. ÔÚ¹ÜÀí½çÃæµÄ×ó²à´°¸ñÖУ¬Õ¹¿ªÒªÐÞ¸ÄÆä JavaMail »á»°ÅäÖÃµÄ Sun ONE Application Server ʵÀý¡£
  2. µ¥»÷¡°JavaMail Sessions¡±¡£Äú»áÔÚ¹ÜÀí½çÃæµÄÓҲര¸ñ£¨ÔÚ¡°´´½¨Ð嵀 JavaMail »á»°¡±ÖнâÊ͵ÄÖ÷ÅäÖò¿·ÖÏÂÃ棩Öп´µ½ÒÔÏ´°¿Ú£¬Èçͼ¡°Îª JavaMail »á»°ÅäÖÃÆäËü×ÊÔ´¡±Ëùʾ£º

   Ϊ JavaMail »á»°ÅäÖÃÆäËü×ÊÔ´
´ËͼÏÔʾÁËÈçºÎΪ JavaMail »á»°ÅäÖÃÆäËü×ÊÔ´¡£

  1. ÔÚ¡°Store Protocol¡±Îı¾×Ö¶ÎÖУ¬Ö¸¶¨ÒªÓÃÓÚ´Ë JavaMail »á»°µÄ´æ´¢Ð­Ò飬ÀýÈ磬POP3 »ò IMAP¡£
  2. ÔÚ¡°Store Protocol Class¡±Îı¾×Ö¶ÎÖУ¬Ö¸¶¨ÒÑÖ¸¶¨µÄ´æ´¢Ð­ÒéµÄÀàÃû£¬ÈçÉÏÀýËùʾ¡£
  3. ÔÚ¡°Transport Protocol¡±Îı¾×Ö¶ÎÖУ¬Ö¸¶¨ÒªÓÃÓÚ´Ë JavaMail »á»°µÄ´«ÊäЭÒ飬ÀýÈ磬SMTP¡£
  4. ÔÚ¡°Transport Protocol Class¡±Îı¾×Ö¶ÎÖУ¬Ö¸¶¨ÒÑΪ´Ë»á»°Ö¸¶¨µÄ´«ÊäЭÒéµÄÀàÃû£¬ÈçÉÏÀýËùʾ¡£
  5. Ñ¡ÖС°Debug Enabled¡±¸´Ñ¡¿ò£¬½«ÆôÓÃ´Ë JavaMail »á»°µÄµ÷ÊÔ¡£ÆôÓô˸´Ñ¡¿ò½«´ò¿ªµ÷ÊÔģʽ¡£
  6. µ¥»÷¡°OK¡±±£´æÆäËüÊôÐÔÅäÖá£

ÏÂÃæ´úÂë¶ÎÊÇÒ»¸öÍêÕûµÄÓʼþ×ÊÔ´ÅäÖÃʾÀý£º

<mail-resource

jndi-name = "mail/Session"

enabled = "true"

store-protocol = "imap"

store-protocol-class = "com.sun.mail.imap.IMAPStore"

transport-protocol = "smtp"

transport-protocol-class = "com.sun.mail.smtp.SMTPTransport"

host = "gopostal.acme.com"

user = "kingkong"

from = "kingkong@acme.com"

debug = "false">

<property name = "mail-imap-host" value = "spaceduck.acme.com"/>

<property name = "mail-imap-user" value = "fredbloggs"/>

</mail-resource>


ÉÏÒ»¸ö      Ŀ¼      Ë÷Òý      ÏÂÒ»¸ö     
Copyright 2003 Sun Microsystems, Inc. All rights reserved.