![]() |
Sun ONE Application Server 7, Update 1 ¹ÜÀíÔ±Ö¸ÄÏ |
ÅäÖÃÃüÃûºÍ×ÊÔ´±¾ module ½éÉÜÁË Sun ONE Application Server ʹÓÃµÄ J2EE ×ÊÔ´£¬²¢ÌÖÂÛÁËÓÃÓÚ´´½¨ºÍ¹ÜÀíÕâЩ×ÊÔ´µÄ·½·¨£º
±¾ module °üÀ¨ÒÔÏÂÖ÷Ì⣺
- ¹ØÓÚ J2EE ÃüÃû·þÎñºÍ×ÊÔ´
- ¹ØÓÚ Java ÃüÃûºÍĿ¼½Ó¿Ú (JNDI)
- ¹ØÓÚ Persistence Manager ×ÊÔ´
- ¹ØÓÚ JDBC ×ÊÔ´
- ¹ØÓÚ Java Óʼþ×ÊÔ´
¹ØÓÚ 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 Ìåϵ½á¹¹¸Å¿ö
![]()
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 ²éÕÒ¼°Æä¹ØÁª²Î¿¼¡£
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 Á¬½Ó¹¤³§×ÊÔ´£¬ÒÔ¼°ÈçºÎ·ÃÎÊÕâЩ×ÊÔ´¡£
±¾½Ú°üÀ¨ÒÔÏÂÖ÷Ì⣺
- ´´½¨×Ô¶¨Òå×ÊÔ´
- ´´½¨Íⲿ JNDI ×ÊÔ´
- ·ÃÎÊÍⲿ JNDI ϵͳÐÅÏ¢¿â
- Ó³ÉäÓ¦ÓóÌÐò×ÊÔ´²Î¿¼
- ¹ØÓÚ URL Á¬½Ó¹¤³§×ÊÔ´
- Ó³ÉäÓ¦ÓóÌÐò×ÊÔ´»·¾³²Î¿¼
- Ó³Éä EJB ²Î¿¼
´´½¨×Ô¶¨Òå×ÊÔ´
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 ½«·¢²¼ËùÓÐÓ¦ÓóÌÐòÌض¨µÄ²Î¿¼£¬²¢½«ËùÓеÄвο¼ÖØа󶨵½Ð°²×°µÄÓ¦ÓóÌÐòµÄÃüÃûÉÏÏÂÎÄÖС£
ʹÓùÜÀí½çÃæ´´½¨×Ô¶¨Òå×ÊÔ´µÄ²½Ö裺
- ÔÚ¹ÜÀí½çÃæµÄ×ó²à´°¸ñÖУ¬´ò¿ªÒªÐÞ¸ÄÆä JNDI ÅäÖÃµÄ Sun ONE Application Server ʵÀý¡£
- ´ò¿ª¡°JNDI¡±±êÇ©£¬²¢µ¥»÷¡°Custom Resources¡±¡£ÈκÎÒѾ´´½¨µÄ×Ô¶¨Òå×ÊÔ´½«»áÁбíÏÔʾÔÚÓҲര¸ñÖС£Òª´´½¨ÐµÄ×Ô¶¨Òå×ÊÔ´£¬µ¥»÷¡°New¡±¡£Äú»áÔÚ¹ÜÀí½çÃæµÄÓҲര¸ñÖп´µ½ÏÂͼ¡°JNDI Custom Resources¡±Ò³£º
   ¡°JNDI Custom Resources¡±Ò³
![]()
- ÔÚ¡°JNDI Name¡±×Ö¶ÎÖУ¬ÊäÈëÒª·ÃÎÊ×ÊÔ´µÄÃû³Æ¡£´ËÃû³Æ½«×¢²áµ½ JNDI ÃüÃû·þÎñÖС£
- ÔÚ¡°Resource Type¡±×Ö¶ÎÖУ¬ÊäÈëÈ«ÏÞ¶¨µÄÀàÐͶ¨Ò壬ÈçÉÏÃæʾÀýÖÐËùʾ¡£Ó¦×ñÕÕÒÔϸñʽÔÚ¡°Resource Type¡±ÖÐÊäÈ붨Ò壺xxx.xxx¡£
- ÔÚ¡°Factory Class¡±×Ö¶ÎÖУ¬ÎªÒª´´½¨µÄ×Ô¶¨Òå×ÊÔ´ÊäÈ빤³§ÀàÃû¡£¸Ã×Ö¶ÎÖеÄÖµÊÇÓû§Ö¸¶¨µÄ¹¤³§ÀàµÄÃû³Æ¡£´ËÀàʵÏÖÁË javax.naming.spi.ObjectFactory ½Ó¿Ú¡£
- ÔÚ¡°Description¡±×Ö¶ÎÖУ¬ÎªËù´´½¨µÄ×ÊÔ´ÊäÈë˵Ã÷¡£´Ë˵Ã÷ÊÇ×Ö·û´®Öµ£¬×î¶à¿ÉÒÔ°üº¬ 250 ¸ö×Ö·û¡£
- Ñ¡ÖС°Custom Resource Enabled¡±¸´Ñ¡¿ò£¬½«ÆôÓÃ×Ô¶¨Òå×ÊÔ´¡£
- µ¥»÷¡°OK¡±±£´æ×Ô¶¨Òå×ÊÔ´¡£
´´½¨Íⲿ JNDI ×ÊÔ´
ʹÓùÜÀí½çÃæ´´½¨Íⲿ×ÊÔ´µÄ²½Ö裺
- ÔÚ¹ÜÀí½çÃæµÄ×ó²à´°¸ñÖУ¬´ò¿ªÒªÐÞ¸ÄÆä JNDI ÅäÖÃµÄ Sun ONE Application Server ʵÀý¡£
- ´ò¿ª¡°JNDI¡±²¢Ñ¡Ôñ¡°External Resources¡±¡£ÈκÎÒѾ´´½¨µÄÍⲿ×ÊÔ´½«»áÒÔÁбíÐÎʽÏÔʾÔÚÓҲര¸ñÖС£Òª´´½¨ÐµÄÍⲿ×ÊÔ´£¬µ¥»÷¡°New¡±¡£
Äú»áÔÚ¹ÜÀí½çÃæµÄÓҲര¸ñÖп´µ½ÒÔÏ´°¿Ú£¬Èç¡°JNDI External Resources¡±Ò³ÖÐËùʾ£º
   ¡°JNDI External Resources¡±Ò³
![]()
- ÔÚ¡°JNDI Name¡±×Ö¶ÎÖУ¬ÊäÈëÒª·ÃÎÊ×ÊÔ´µÄÃû³Æ¡£´ËÃû³Æ½«×¢²áµ½ JNDI ÃüÃû·þÎñÖС£
- ÔÚ¡°Resource Type¡±×Ö¶ÎÖУ¬ÊäÈëÈ«ÏÞ¶¨µÄÀàÐͶ¨Ò壬ÈçÉÏÃæʾÀýÖÐËùʾ¡£Ó¦×ñÕÕÒÔϸñʽÔÚ¡°Resource Type¡±ÖÐÊäÈ붨Ò壺xxx.xxx¡£
- ÔÚ¡°JNDI Lookup¡±×Ö¶ÎÖУ¬ÊäÈëÒªÔÚÍⲿϵͳÐÅÏ¢¿âÖвéÕÒµÄ JNDI Öµ¡£ÀýÈ磬µ±Äú´´½¨Ò»¸öÓëÍⲿϵͳÐÅÏ¢¿âÁ¬½ÓµÄÍⲿ×ÊԴʱ£¬ÎªÁ˲âÊÔij¸ö Bean À࣬¡°JNDI Lookup¡±¿ÉÄÜ»á¶ÁÈ¡ cn=testmybean¡£
- ÔÚ¡°Factory Class¡±×Ö¶ÎÖУ¬ÊäÈë JNDI ¹¤³§ÀàÍⲿϵͳÐÅÏ¢¿â£¨ÀýÈ磬com.sun.jndi.ldap£©¡£´ËÀàʵÏÖÁË javax.naming.spi. ObjectFactory ½Ó¿Ú¡£
- ÔÚ¡°Description¡±×Ö¶ÎÖУ¬ÎªËù´´½¨µÄ×ÊÔ´ÊäÈë˵Ã÷¡£´Ë˵Ã÷ÊÇ×Ö·û´®Öµ£¬×î¶à¿ÉÒÔ°üº¬ 250 ¸ö×Ö·û¡£
- Ñ¡ÖС°External Resource Enabled¡±¸´Ñ¡¿ò£¬½«ÆôÓÃÍⲿ×ÊÔ´¡£
- µ¥»÷¡°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 ʵÀýµÄ²½Ö裺
- ´Ó¹ÜÀí½çÃæµÄ×ó²à´°¸ñÖУ¬´ò¿ªÒªÎªÆä´´½¨Ð嵀 Persistence Manager µÄ Sun ONE Application Server ʵÀý¡£´ÓÏÔʾµÄ·þÎñÆ÷×é¼þÁбíÖе¥»÷¡°Persistence Manager¡±¡£
ÈκÎÒѾΪ Sun ONE Application Server µÄ¸ÃÌض¨ÊµÀý´´½¨µÄ Persistence Manager ½«ÁбíÏÔʾÔÚ¹ÜÀí½çÃæµÄÓҲര¸ñÖС£
- Òª´´½¨Ð嵀 Persistence Manager£¬µ¥»÷¡°New¡±¡£Äú»áÔÚ¿´µ½ÒÔÏ´°¿Ú£¬Èçͼ¡°´´½¨Ð嵀 Persistence Manager¡±Ëùʾ£º
  
![]()
´´½¨Ð嵀 Persistence Manager
- ÕâÊÇÓ¦ÓóÌÐò·þÎñÆ÷ÔËÐÐʱ´ú±íÓ¦ÓóÌÐò²éÕÒÌض¨ Persistence Manager ʱËùÓÃµÄ JNDI Ãû³Æ¡£´ËÃû³Æ±ØÐëÓëÔÚ Sun Ìض¨²¿ÊðÃèÊö·ûµÄʵÌå Bean µÄ CMP ×ÊÔ´ÔªËØÖж¨ÒåµÄÃû³ÆÏàͬ¡£
- ÔÚ¡°Description¡±×Ö¶ÎÖУ¬ÎªÐ嵀 Persistence Manager ÊäÈë˵Ã÷¡£´Ë×ֶεÄÖµÊÇ×Ö·û´®£¬×î¶à¿ÉÒÔ°üº¬ 250 ¸ö×Ö·û¡£
- ÔÚ¡°Factory Class¡±×Ö¶ÎÖУ¬Îª Persistence Manager ÊäÈ빤³§ÀàÁ¬½Ó¡£setEntityContext ͨ¹ý JNDI Ãû³Æ²éÕÒ¹¦ÄܲéÕÒ´ËÁ¬½Ó¹¤³§¡£¸Ã¹¤³§ÀàÃû³ÆÊÇ´´½¨ Persistence Manager ʵÀýµÄ Persistence Manager Factory µÄÀàÃû¡£Ä¬ÈÏÇé¿öÏ£¬½«´ËÉèÖÃΪ Sun ONE Application Server µÄÄÚ²¿ Persistence Manager Factory ÀࣻÈç¹ûʹÓÃÌæ´úʵÏÖ£¬Ôò±ØÐëÈ·±£´ËÀàÔÚ·þÎñÆ÷Àà·¾¶ÖпÉÓá£
- ´Ó¡°Connection Pool¡±ÏÂÀÁбíÖУ¬Ñ¡ÔñÒª½«Ð嵀 Persistence Manager ¼ÓÈëµ½ÆäÖеÄÊý¾Ý¿âÁ¬½Ó³Ø¡£Ê¹ÓÃÁ¬½Ó¼ÓÈ룬ʵÌå Bean ¿ÉÒÔÇëÇ󵥸öÁ¬½Ó£¬²¢Ê¹ÓøÃÁ¬½ÓÖ´Ðжà¸ö¿Í»§»úÏ̵߳IJ¢·¢Óï¾ä¡£ÓëÈκÎÆäËüÊý¾Ý¿â·ÃÎÊÒ»Ñù£¬Persistence Manager ¿ÉÒÔʹÓÃÁ¬½Ó¼ÓÈëÌá¸ßÐÔÄܺͿÉËõ·ÅÐÔ¡£Ñ¡ÔñÏÖÓÐÁ¬½Ó³Ø£¬»òÕßÑ¡Ôñ¡°None Selected¡±£¨Èç¹ûÉÐδ´´½¨Á¬½Ó³Ø£©¡£
×¢Ò⣺ϵͳ½«×Ô¶¯´´½¨ JDBC ×ÊÔ´£¬ÒÔÔÊÐí PM ÔËÐÐʱʹÓà JNDI °ó¶¨µ½Á¬½Ó³Ø — Èç¹û JDBC ×ÊÔ´µÄ JNDI Ãû³ÆÇ°¼ÓÉÏÒ»¸ö¡°PM¡±Ç°×º£¬ÔòËüÓë PM JNDI Ãû³ÆÍêÈ«Ïàͬ¡£É¾³ý Persistence Manager ͬʱ½«É¾³ý¹ØÁªµÄ JDBC ×ÊÔ´¡£
- ÒªÆôÓà Persistence Manager£¬Ñ¡ÖС°Persistence Manager Enabled¡±¸´Ñ¡¿ò¡£Persistence Manager ÏÖÔÚÒÑΪָ¶¨µÄÁ¬½Ó¹¤³§ÆôÓá£
- µ¥»÷¡°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 ÊôÐÔÖ¸ÏòÃüÃû³Ø¶¨Ò壬¸Ã¶¨Ò彫ָ¶¨Êý¾Ý¿âÁ¬½ÓµÄ¸÷¸ö·½Ãæ¡£¹ÜÀíÔ±¿ÉÒÔʹÓÃÒÑÆôÓÃÊôÐԹرÕһЩ×ÊÔ´¡£
ʹÓùÜÀí½çÃæ×¢²á×ÊÔ´
ʹÓùÜÀí½çÃæ×¢²á×ÊÔ´µÄ²½Ö裺
- ÔÚ¹ÜÀí½çÃæµÄ×ó²à´°¸ñÖУ¬´ò¿ªÒªÎªÆä×¢²á JDBC ×ÊÔ´µÄ Sun ONE Application Server ʵÀý¡£
- ´ò¿ª¡°JDBC¡±¡£
- ÔÚ¡°JDBC¡±Ï£¬µ¥»÷¡°JDBC Resource¡±¡£
- ÔÚÓҲര¸ñÖУ¬µ¥»÷¡°New¡±¡£ÓҲര¸ñÖгöÏÖÓÃÓÚ´´½¨Ð嵀 JDBC ×ÊÔ´µÄÒ³Ã棬Èçͼ¡°´´½¨Ð嵀 JDBC ×ÊÔ´¡±Ëùʾ¡£
   ´´½¨Ð嵀 JDBC ×ÊÔ´
![]()
- Ϊ´´½¨µÄ×ÊÔ´ÊäÈë JNDI Ãû³Æ¡£
JDBC ×ÊÔ´´æ´¢ÔÚ JNDI ϵͳÐÅÏ¢¿âÖУ¬ÇÒ¿ÉÒÔͨ¹ý JNDI Ãû³Æ½øÐзÃÎÊ¡£JNDI Ãû³Æ°üº¬Ã÷È·µÄ¸ù£¨Î»ÓÚ Java:comp:env/£©£¬Òò´Ë²»ÐèÒªÖ¸¶¨¸Ã²¿·ÖÃû³Æ¡£½¨Ò齫 JDBC ×ÊÔ´£¨Êý¾ÝÔ´£©´æ´¢ÔÚ¡°jdbc¡±×ÓÉÏÏÂÎÄ֮ϣ¬Òò¶øÄúµÄ JNDI Ãû³Æ½«ÀàËÆÓÚ jdbc/EmployeeDB_DS¡£
- ´Ó¡°Pool Name¡±ÏÂÀÁбíµÄ³ØÃûÁбíÖУ¬ÎªÐµÄÊý¾ÝÔ´Ñ¡Ôñ³ØÃû¡£ËùÓÐÒÑ×¢²áµÄÁ¬½Ó³Ø¶¼½«ÏÔʾÔÚ´ËÏÂÀÁбíÖС£Ñ¡ÔñµÄ³ØÃû½«Ö¸ÏòÃüÃû³Ø¶¨Ò壬¸Ã¶¨Ò彫ָ¶¨Êý¾Ý¿âÁ¬½ÓµÄ¸÷¸ö·½Ãæ¡£¶à¸ö JDBC ×ÊÔ´¿ÉÒÔʹÓõ¥¸ö³Ø¶¨Òå¡£ÓйØÈçºÎÅäÖà JDBC Á¬½Ó³ØµÄÏêϸÐÅÏ¢£¬Çë²Î¼û¡°Ê¹ÓùÜÀí½çÃæ´´½¨Ð嵀 JDBC Á¬½Ó³Ø¡±¡£
- ÔÚ¡°Description¡±×Ö¶ÎÖУ¬ÊäÈëÃèÊöÊý¾ÝÔ´ÓÃ;µÄ¼ò¶Ì˵Ã÷¡£ËµÃ÷²»Äܳ¬¹ý 250 ¸ö×Ö·û¡£
- Ñ¡ÖС°Enabled¡±¸´Ñ¡¿ò£¬½«ÆôÓûò½ûÓÃÊý¾ÝÔ´¡£Êý¾ÝÔ´²»ÄÜÓÃÓÚÁ¬½ÓÊý¾Ý¿â£¬³ý·ÇÒѱ»ÆôÓá£
- µ¥»÷¡°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 Á¬½Ó³ØµÄ²½Ö裺
- ÔÚ¹ÜÀí½çÃæµÄ×ó²à´°¸ñÖУ¬´ò¿ªÒªÎªÆä´´½¨ JDBC Á¬½Ó³ØµÄ Sun ONE Application Server ʵÀý¡£
- ´Ó Sun ONE Application Server ÏÂÁгöµÄ J2EE ·þÎñÁбíÖÐÑ¡Ôñ¡°JDBC¡±£¬²¢´ò¿ªËüÏÂÃæµÄ¡°ConnectionPools¡±±êÇ©¡£Äú»áÔÚ¹ÜÀí½çÃæµÄÓҲര¸ñÖп´µ½Í¼¡°´´½¨Ð嵀 JDBC Á¬½Ó³Ø¡±¡£
   ´´½¨Ð嵀 JDBC Á¬½Ó³Ø
![]()
- ÔÚ¡°Name¡±×Ö¶ÎÖУ¬Îª´´½¨µÄÁ¬½Ó³ØÊäÈë JNDI Ãû³Æ¡£
- Ñ¡ÖС°Global Transaction Support Enabled¡±¸´Ñ¡¿ò£¬½«¶ÔеÄÁ¬½Ó³ØÆôÓÃÈ«¾ÖÊÂÎñÖ§³Ö¡£Äܹ»²Î¼ÓÈ«¾ÖÊÂÎñµÄÁ¬½Ó³Ø³ÆΪ¾ßÓÐ XA ÄÜÁ¦µÄÁ¬½Ó³Ø¡£
- ´Ó¡°Database Vendor¡±ÏÂÀÁбíÖÐÑ¡ÔñÒ»¸öÊý¾Ý¿â¹©Ó¦ÉÌ£¬²¢µ¥»÷¡°Next¡±¡£ÄúÐèÒªÔÚËæºóÏÔʾµÄÆÁÄ»ÖÐÅäÖÃÁ¬½Ó³ØÉèÖá£
ÅäÖÃÁ¬½Ó³ØÉèÖÃ
ÒªÅäÖÃÁ¬½Ó³ØÉèÖã¬ÇëÖ´ÐС°Ê¹ÓùÜÀí½çÃæ´´½¨Ð嵀 JDBC Á¬½Ó³Ø¡±ÖеIJ½Öè 1 µ½²½Öè 5¡£µ¥»÷¡°Next¡±£¨Èç²½Öè 5ÖÐËùÊö£©ºó£¬¹ÜÀí½çÃæµÄÓҲര¸ñÖлá³öÏÖÒ»¸öеÄÒ³Ãæ¡£Ëü°üº¬ÒÔϲ¿·Ö£º
- ³£¹æ
- ÊôÐÔ
- ³ØÉèÖÃ
- Á¬½ÓÑéÖ¤
- ÊÂÎñ¸ôÀë
ÔÚ´ËÒ³µÄ¡°General¡±²¿·ÖÖУ¬¸ù¾ÝϱíÖеÄ˵Ã÷ΪÌṩµÄ²ÎÊýÖ¸¶¨Öµ£º
   ³£¹æÉèÖÃ
²ÎÊý
˵Ã÷
Name
Á¬½Ó³ØµÄÃû³Æ¡£
DataSource ClassName
ʵÏÖ DataSource ºÍ/»ò XADataSource API µÄ¹©Ó¦ÉÌÌض¨ÀàÃû¡£
Description
Á¬½Ó³ØµÄ˵Ã÷¡£
ÔÚ´ËÒ³µÄ¡°Properties¡±²¿·ÖÖУ¬ÄúÖ¸¶¨±ê×¼ºÍרÓà JDBC Á¬½Ó³ØÊôÐÔ£»ÆäÖÐÐí¶àÊôÐÔΪ¿ÉÑ¡¡£Ä¬ÈÏÇé¿öÏ£¬ÌṩËùÓбê×¼ÊôÐÔµÄÃû³Æ¡£ÄúÐèÒª²Î¿¼Êý¾Ý¿â¹©Ó¦É̵ÄÎĵµ£¬ÒÔÈ·¶¨±ØÐèµÄ±ê×¼Ìض¨µÄÊôÐԺ͹©Ó¦ÉÌÌض¨µÄÊôÐÔ¡£
ÔÚ´Ë´°¿ÚµÄ¡°Pool Settings¡±²¿·ÖÖУ¬¸ù¾ÝϱíÖеÄ˵Ã÷ΪÌṩµÄ²ÎÊýÖ¸¶¨Öµ£º
ÔÚ´Ë´°¿ÚµÄ¡°Connection Validation¡±ºÍ¡°Transaction Isolation¡±²¿·ÖÖУ¬¸ù¾ÝϱíÖеÄ˵Ã÷ΪÁ¬½Ó³ØÑ¡ÔñÑéÖ¤·½·¨ºÍÊÂÎñ¸ôÀë·½·¨£º
ʹÓÃÃüÁîÐнçÃæ´´½¨Ð嵀 JDBC Á¬½Ó³Ø
±¾½Úͨ¹ýʾÀý½²ÊöÈçºÎʹÓÃÃüÁîÐнçÃæ´´½¨ JDBC Á¬½Ó³Ø¡£
ϱíÁгö´´½¨Á¬½Ó³ØʱÐèÒªµÄËùÓÐÑ¡ÏÀýÈç·þÎñÆ÷Ãû¡¢ÃÜÂ롣ϱíÖÐʹÓÃÁËÑùÀýÖµ¡£½¨ÒéÔÚÔËÐб¾½ÚÖнéÉܵÄÃüÁî֮ǰ£¬ÉèÖúà Sun ONE Application Server µÄ°²×°ËùÌØÓеIJÎÊý¡£
ÒÔÏÂʾÀýʹÓÃÁË±í¡°Ê¹ÓÃÃüÁîÐнçÃæ´´½¨ 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 ÊôÐÔ£©£¬²½ÖèÈçÏ£º
- ÔËÐÐÒÔÏÂÃüÁ»ñȡΪ JDBC Á¬½Ó³ØÊôÐÔ maxPoolSize Ö¸¶¨µÄÖµ¡£
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
- ʹÓÃÒÔÏÂÃüÁ¸ü¸ÄÓ¦Óõ½ Sun ONE Application Server µÄʵÀý£º
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
- ÔËÐÐÒÔÏÂÃüÁî¸ü¸Ä User ÊôÐÔ¡£
asadmin set -u admin -w adminadmin -H sas.sun.com -p 8888 server1.jdbc-connection-pool.SampleJdbcConnectionPool.property.User="System"
Óû§Ãû³ÆÒÑ´Ó Oracle ¸ü¸ÄΪ System¡£
- ¸ü¸ÄÓû§ÃûÖ®ºó£¬ÔËÐÐÒÔÏÂÃüÁîÀ´Ó¦ÓÃÄúµÄ¸ü¸Ä£º
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
- ÔËÐÐÒÔÏÂÃüÁ½«´´½¨Ò»¸ö³Æ×÷ SampleJdbcResource µÄ JDBC ×ÊÔ´¡£
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
- ÏÂÃ棬ÄúÐèÒªÔËÐÐÒÔÏÂÃüÁ¸ü¸ÄÓ¦Óõ½ Sun ONE Application Server µÄʵÀý¡£
asadmin reconfig --user admin --password adminadmin --host sas.sun.com --port 8888 server1
- ÔËÐÐÒÔÏÂÃüÁ½«ÔÚʵÀý server1 ÖÐÁгöËùÓÐµÄ JDBC ×ÊÔ´¡£
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 Á¬½Ó¼ÓÈë²ÎÊý¡£
×¢Ò⣬¿ÉÄÜ»áÔÚδÀ´µÄ°æ±¾ÖиĽøÆôÓüàÊӵŤ×÷·½Ê½ÒÔ¼°¿ÉÒÔ¼àÊÓµÄÊôÐÔ¡£
¹ØÓÚÁ¬½Ó¹²Ïí
µ±Ä³¸ö 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 Ìåϵ½á¹¹×é¼þ
- ¹ØÓÚ JavaBeans Activation Framework (JAF)
- ¹ØÓÚ JavaMail ÅäÖòÎÊý
- JavaMail »á»°²Î¿¼µÄ J2EE ²¿ÊðÃèÊö·û
- Sun ONE Application Server ²¿ÊðÃèÊö·ûÖеÄÏî
- ´´½¨Ð嵀 JavaMail »á»°
- ÅäÖø߼¶×ÊÔ´ÊôÐÔ
¹ØÓÚ JavaMail ÏûÏ¢´¦Àí½ø³Ì
JavaMail API Ö´ÐÐÒÔϹ¦ÄÜ£¬ÕâЩ¹¦Äܹ¹³ÉÁ˵äÐÍ¿Í»§»úÓ¦ÓóÌÐòµÄ±ê×¼Óʼþ´¦Àí½ø³Ì£º
- ´´½¨Ò»¸öÓʼþÏûÏ¢£¬ÆäÖаüº¬±êÌâÊôÐÔ¼¯ºÍ¾ßÓÐ Content-Type ±êÌâ×Ö¶ÎÖÐÖ¸¶¨µÄijÖÖÒÑÖªÊý¾ÝÀàÐ͵ÄÊý¾Ý¿é¡£JavaMail ʹÓà Part ½Ó¿ÚºÍ Message ÀඨÒåÓʼþÏûÏ¢¡£ËüʹÓà JAF ¶¨ÒåµÄ DataHandler ¶ÔÏóÒÔ°üº¬¸ÃÏûÏ¢ÖеÄÊý¾Ý¡£
- ´´½¨ Session ¶ÔÏó£¬ËüÑéÖ¤Óû§²¢¿ØÖƶÔÏûÏ¢´æ´¢¿âºÍ´«ÊäµÄ·ÃÎÊ¡£
- ½«ÏûÏ¢·¢Ë͵½ÆäÊÕ¼þÈËÁÐ±í¡£
- ´ÓÏûÏ¢´æ´¢¿â¼ìË÷ÏûÏ¢¡£
- ¶Ô¼ìË÷µ½µÄÏûÏ¢Ö´Ðи߼¶ÃüÁî¡£Ïñ²é¿´ºÍ´òÓ¡ÕâÑùµÄ¸ß¼¶ÃüÁî¿Éͨ¹ý JAF-Aware JavaBean ʵÏÖ¡£
×¢Òâ Ä¿Ç°£¬JavaMail ¿ò¼ÜûÓж¨ÒåÖ§³ÖÏûÏ¢´«ËÍ¡¢°²È«ÐÔ¡¢¶Ï¿ªÁ¬½Ó²Ù×÷¡¢Ä¿Â¼·þÎñ»ò¹ýÂËÆ÷¹¦ÄܵĻúÖÆ¡£
ÏÂͼ˵Ã÷ÁË JavaMail 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 »á»°µÄ²½Ö裺
- ÔÚ¹ÜÀí½çÃæµÄ×ó²à´°¸ñÖУ¬Õ¹¿ªÒªÎªÆä´´½¨Ð嵀 JavaMail »á»°µÄ Sun ONE Application Server ʵÀý¡£
- µ¥»÷¡°JavaMail Sessions¡±¡£ Äú»áÔÚ¹ÜÀí½çÃæµÄÓҲര¸ñÖп´µ½ÒÔÏ´°¿Ú£¬Èçͼ¡°ÅäÖà JavaMail »á»°¡±Ëùʾ£º
   ÅäÖà JavaMail »á»°
![]()
- ÔÚ¡°JNDI Name¡±Îı¾×Ö¶ÎÖУ¬Îª´´½¨µÄ JavaMail »á»°ÊäÈë JNDI Ãû³Æ¡£Java Óʼþ×ÊԴʹÓ÷þÎñÆ÷×¢²áºó£¬ÈκΠJ2EE Ó¦ÓóÌÐò×é¼þ¶¼¿ÉÒÔʹÓà JNDI ²éÕÒ¶ÔÆä½øÐвο¼¡£
- ÔÚ¡°Mail Host¡±Îı¾×Ö¶ÎÖУ¬Ö¸¶¨Ä¬ÈÏÓʼþ·þÎñÆ÷µÄ DNS Ãû³Æ¡£Store ºÍ Transport ¶ÔÏóµÄÁ¬½Ó·½·¨Ê¹ÓôËÊôÐÔÀ´¶¨Î»Ä¿±êÖ÷»ú£¨Èç¹ûÌض¨ÐÒéµÄÖ÷»úÌØÐÔ²»´æÔÚ£©¡£
- ÔÚ¡°Default User¡±Îı¾×Ö¶ÎÖУ¬Ö¸¶¨Á¬½ÓÓʼþ·þÎñÆ÷ʱҪÌṩµÄÓû§Ãû¡£Store ºÍ Transport ¶ÔÏóµÄÁ¬½Ó·½·¨Ê¹ÓôËÊôÐÔ»ñÈ¡Óû§Ãû£¨Èç¹ûÐÒéרÓõÄÓû§Ãû²»´æÔÚ£©¡£
- ÔÚ¡°Default Return Address¡±×Ö¶ÎÖУ¬Ö¸¶¨µ±Ç°Óû§µÄĬÈÏ·µ»ØµØÖ·¡£Ä¬ÈϵØַӦΪÒÔϸñʽ£ºusername@host¡£
- ÔÚ¡°Description¡±×Ö¶ÎÖУ¬Îª´Ë Java Óʼþ»á»°ÊäÈë˵Ã÷¡£
- Ñ¡ÖС°Java Mail Session Enabled¡±¸´Ñ¡¿ò£¬½«ÆôÓÃËù´´½¨µÄ Java Óʼþ»á»°¡£
- µ¥»÷¡°OK¡±±£´æÒÑÅäÖõÄÐ嵀 JavaMail »á»°¡£
ÅäÖø߼¶×ÊÔ´ÊôÐÔ
Äú¿ÉÒÔʹÓùÜÀí½çÃæΪÐ嵀 JavaMail »á»°ÅäÖöà¸öÆäËüÊôÐÔ¡£ÊôÐÔÃûºÍÖµ¶ÔÈ¡¾öÓÚËùÓõÄÓʼþÐÒé¡£ÄúÒ²¿ÉÒÔÔÚ server.xml ÎļþÖÐÖ±½ÓÖ¸¶¨ÕâЩÊôÐÔ¡£
ÅäÖÃÆäËüÊôÐԵIJ½Ö裺
- ÔÚ¹ÜÀí½çÃæµÄ×ó²à´°¸ñÖУ¬Õ¹¿ªÒªÐÞ¸ÄÆä JavaMail »á»°ÅäÖÃµÄ Sun ONE Application Server ʵÀý¡£
- µ¥»÷¡°JavaMail Sessions¡±¡£Äú»áÔÚ¹ÜÀí½çÃæµÄÓҲര¸ñ£¨ÔÚ¡°´´½¨Ð嵀 JavaMail »á»°¡±ÖнâÊ͵ÄÖ÷ÅäÖò¿·ÖÏÂÃ棩Öп´µ½ÒÔÏ´°¿Ú£¬Èçͼ¡°Îª JavaMail »á»°ÅäÖÃÆäËü×ÊÔ´¡±Ëùʾ£º
   Ϊ JavaMail »á»°ÅäÖÃÆäËü×ÊÔ´
![]()
- ÔÚ¡°Store Protocol¡±Îı¾×Ö¶ÎÖУ¬Ö¸¶¨ÒªÓÃÓÚ´Ë JavaMail »á»°µÄ´æ´¢ÐÒ飬ÀýÈ磬POP3 »ò IMAP¡£
- ÔÚ¡°Store Protocol Class¡±Îı¾×Ö¶ÎÖУ¬Ö¸¶¨ÒÑÖ¸¶¨µÄ´æ´¢ÐÒéµÄÀàÃû£¬ÈçÉÏÀýËùʾ¡£
- ÔÚ¡°Transport Protocol¡±Îı¾×Ö¶ÎÖУ¬Ö¸¶¨ÒªÓÃÓÚ´Ë JavaMail »á»°µÄ´«ÊäÐÒ飬ÀýÈ磬SMTP¡£
- ÔÚ¡°Transport Protocol Class¡±Îı¾×Ö¶ÎÖУ¬Ö¸¶¨ÒÑΪ´Ë»á»°Ö¸¶¨µÄ´«ÊäÐÒéµÄÀàÃû£¬ÈçÉÏÀýËùʾ¡£
- Ñ¡ÖС°Debug Enabled¡±¸´Ñ¡¿ò£¬½«ÆôÓÃ´Ë JavaMail »á»°µÄµ÷ÊÔ¡£ÆôÓô˸´Ñ¡¿ò½«´ò¿ªµ÷ÊÔģʽ¡£
- µ¥»÷¡°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>