Õ¾ÄÚËÑË÷: ÇëÊäÈëËÑË÷¹Ø¼ü´Ê

µ±Ç°Ò³Ãæ: ¿ª·¢×ÊÁÏÊ×Ò³ ¡ú Java רÌâ ¡ú J2EEµÄÒì²½ÏûÏ¢»úÖÆ(ÉÏ)

J2EEµÄÒì²½ÏûÏ¢»úÖÆ(ÉÏ)

ÕªÒª: ÔÚ·Ö²¼Ê½ÆóÒµ¼¶Ó¦ÓóÌÐòÖУ¬Òì²½ÏûÏ¢»úÖÆÓÃÓÚÓÐЧµØÐ­µ÷¸÷¸ö²¿·ÖµÄ¹¤×÷
¡¡¡¡ÔÚ·Ö²¼Ê½ÆóÒµ¼¶Ó¦ÓóÌÐòÖУ¬Òì²½ÏûÏ¢»úÖÆÓÃÓÚÓÐЧµØÐ­µ÷¸÷¸ö²¿·ÖµÄ¹¤×÷¡£

¡¡¡¡J2EEΪÎÒÃÇÌṩÁËJMSºÍÏûÏ¢Çý¶¯¶¹£¨Message-Driven Bean£©£¬ÓÃÀ´ÊµÏÖÓ¦ÓóÌÐò¸÷¸ö²¿¼þÖ®¼äµÄÒì²½ÏûÏ¢´«µÝ¡£

¡¡¡¡Ò»£®Ê²Ã´ÊÇÏûϢϵͳ£¿

¡¡¡¡Í¨³£Ò»¸öÏûϢϵͳÔÊÐí·Ö¿ªµÄδñîºÏµÄÓ¦ÓóÌÐòÖ®¼ä¿É¿¿µØÒ첽ͨÐÅ¡£ÔÚÆóÒµÓ¦ÓÃʱ£¬ÐèÒªÒ»ÖÖÒì²½µÄ£¬·Ç×èÈûµÄÏûÏ¢´«µÝ¡£±ÈÈ磬һ¸ö¿Í»§¶Ë¿ÉÄÜÏ£Íû¸øÒ»¸ö·þÎñÆ÷·¢ËÍÒ»¸öÇëÇóºó£¬²»ÔÚºõÊÇ·ñÂíÉÏÄܵõ½»ØÓ¦¡£ÕâÑù£¬¿Í»§¶ËûÓÐÀíÓɱØÐëµÈ´ý·þÎñÆ÷´¦ÀíÇëÇ󡣿ͻ§¶ËÓ¦ÓóÌÐòÔڵݽ»Ò»¸öÇëÇóÖ®ºó£¬Ö»ÐèÈ·±£ÇëÇóµ½´ï·þÎñÆ÷¶Ëºó£¬¾Í¿ÉÒÔ´¦ÀíÆäËûÈÎÎñ¡£Í¨³££¬ÕâÊǺܸßЧµÄ¡£ÏûϢϵͳÌṩÁËÐí¶àÆäËû·Ö²¼Ê½¶ÔÏó¼ÆËãÄ£ÐÍûÓеÄÓŵ㡣Ëü¹ÄÀøÔÚÏûÏ¢²úÉúÕߺÍʹÓÃÕßÖ®¼äµÄ"ËÉñîºÏ"£¬ÔÚËüÃÇÖ®¼äÓк̶ܸ߳ȵÄÊÂÎñ´¦Àí¡£¶ÔÓÚʹÓÃÕߣ¬Ëü²»ÔÚºõË­²úÉúÁËÏûÏ¢£¬²úÉúÕßÊÇ·ñÈÔÔÚÍøÂçÉÏÒÔ¼°ÏûÏ¢ÊÇʲôʱºò²úÉúµÄ¡£Õâ¾ÍÔÊÐí½¨Á¢¶¯Ì¬µÄ£¬¿É¿¿µÄºÍÁé»îµÄϵͳ¡£Õû¸öµÄ×ÓϵͳÄܱ»Ð޸Ķø²»»áÓ°ÏìϵͳµÄÆäËû²¿·Ö¡£
¡¡¡¡ÁíÍâµÄÓŵã°üÀ¨£ºÏµÍ³µÄ¸ß¶È¿ÉÀ©Õ¹ÐÔ£¬ÈÝÒ×ÓëÆäËûϵͳ½øÐм¯³É£¬ÒÔ¼°¸ß¶ÈµÄ¿É¿¿ÐÔ¡£ÓÉÓÚ¿É¿¿ÐԺͿÉÀ©Õ¹ÐÔ£¬Ê¹µÃËüÃÇÓÃÓÚ½â¾öÐí¶àÉÌÒµºÍ¿ÆÑ§¼ÆËãÎÊÌâ¡£±ÈÈ磬ÏûϢϵͳÊÇÐí¶àÓ¦ÓóÌÐòµÄ»ù´¡£¬ÕâЩӦÓóÌÐò¿ÉÒÔÊǹ¤×÷Á÷£¬ÍøÂç¹ÜÀí£¬Í¨ÐÅ·þÎñ»ò¹©Ó¦Á´¹ÜÀí³ÌÐò¡£ÔÚJAVA¼¼ÊõÖУ¬´¦ÀíÒì²½ÏûÏ¢µÄÄÜÁ¦ÊÇͨ¹ýJMSÀ´ÊµÏֵġ£JMS×î³õÉè¼ÆÊÇΪÁ˸ø´«Í³µÄÏûÏ¢¶ÔÏóÖмä¼þÌṩһ¸ö±ê×¼µÄJAVA½Ó¿Ú¡£¶øÕâЩ²úÆ·ÊÇÔÚÒ»¸öÆóÒµ¼¶Ó¦ÓóÌÐòÖбØÐëµÄ¡£ÏÖÔÚ³öÏÖÁËÐí¶àÖ§³ÖJMSµÄ´¿JAVAµÄ²úÆ·¡£

¡¡¡¡ÏûϢϵͳÀàÐÍ

¡¡¡¡Í¨³£ÓÐÁ½ÖÖÏûÏ¢ÀàÐÍ¡£

¡¡¡¡1.·¢²¼/¶©ÔÄ£¨publish/subscribe£©

¡¡¡¡·¢²¼/¶©ÔÄÏûϢϵͳ֧³ÖÒ»¸öʼþÇý¶¯Ä£ÐÍ£¬ÏûÏ¢²úÉúÕߺÍʹÓÃÕß¶¼²ÎÓëÏûÏ¢µÄ´«µÝ¡£²úÉúÕß·¢²¼Ê¼þ£¬¶øÊ¹ÓÃÕß¶©ÔĸÐÐËȤµÄʼþ£¬²¢Ê¹ÓÃʼþ¡£²úÉúÕß½«ÏûÏ¢ºÍÒ»¸öÌØ¶¨µÄÖ÷Ì⣨Topic£©Á¬ÔÚÒ»Æð£¬ÏûϢϵͳ¸ù¾ÝʹÓÃÕß×¢²áµÄÐËȤ£¬½«ÏûÏ¢´«¸øÊ¹ÓÃÕß¡£

¡¡¡¡2.µã¶Ôµã£¨Peer to peer£©

¡¡¡¡ÔÚµã¶ÔµãµÄÏûϢϵͳÖУ¬ÏûÏ¢·Ö·¢¸øÒ»¸öµ¥¶ÀµÄʹÓÃÕß¡£Ëüά³ÖÒ»¸ö"½øÈë"ÏûÏ¢¶ÓÁС£ÏûÏ¢Ó¦ÓóÌÐò·¢ËÍÏûÏ¢µ½Ò»¸öÌØ¶¨µÄ¶ÓÁУ¬¶ø¿Í»§¶Ë´ÓÒ»¸ö¶ÓÁÐÖеõ½ÏûÏ¢¡£

¡¡¡¡¶þ£®JMS¼ò½é

¡¡¡¡JMSµÄÄ¿µÄÊÇÌṩ¸øÏûϢϵͳ¿Í»§Ò»¸ö¹Ì¶¨µÄ½Ó¿Ú£¬¶øÇÒÓëµ×²ãµÄÏûÏ¢ÌṩÕßÎ޹ء£ÕâÑù£¬¿Í»§¶ËµÄÓ¦ÓóÌÐò¿ÉÒÔÔÚ²»Í¬µÄ»úÆ÷ºÍ²Ù×÷ϵͳÖÐÒÆÖ²£¬¶ øÇÒÄÜÔÚ²»Í¬µÄÏûϢϵͳ²úÆ·Ö®¼ä×ªÒÆ¡£JMS¿Í»§¶Ë¶¼Êǽ¨Á¢ÔÚJAVA¼¼ÊõÉϵ쬴ӶøÒ²ÄÜʹÓÃÆäËûJAVAAPI£¬ÈçJDBCÊý¾Ý¿âÁ¬½Ó£¬Ê¹ÓÃJAVABEAN×é¼þÄ£ÐÍ£¬JDNIÃû×Ö·þÎñ£¬JTA¿Í»§¶ËÊÂÎñ´¦Àí¿ØÖÆÒÔ¼°J2SEºÍJ2EE APIÀ´ÊµÏÖÆóÒµ¼¶Ó¦Ó÷þÎñ³ÌÐò¡£

¡¡¡¡1.JMS¶ÔÏóÄ£ÐÍ


¡¡¡¡Í¼1ÏÔʾÁËJMS¶ÔÏó£¬ÓÃÓÚÌṩJMS¿Í»§¶ËÓëJMS·þÎñÌṩÕßÏàÁ¬µÄ¶ÔÏó¡£

¡¡¡¡ConnectionFactoryÊÇÒ»¸ö¿Í»§¶ËÓÃÀ´´´½¨Ò»¸öConnectionµÄ¹ÜÀí¶ÔÏó¡£ÓÉÓÚÔÚConnection´´½¨Ê±ÓÐÊÚȨºÍͨÐŽ¨Á¢¹ý³Ì£¬Òò´ËÕâ¸ö¶ÔÏóÊDZȽϴóµÄ¡£

¡¡¡¡Destination¶ÔÏó½«Ò»¸öÏûÏ¢µÄÄ¿µÄºÍ·þÎñÌṩÕßÓйصĵØÖ·¼°ÅäÖÃÐÅÏ¢°ü×°ÆðÀ´¡£

¡¡¡¡SessionÊÇJMSʵÌ壬ÓÃÀ´Ö§³ÖÊÂÎñ´¦ÀíºÍÒì²½ÏûÏ¢Ïû·Ñ¡£JMS²¢²»ÐèÒª¿Í»§¶ËµÄ´úÂëÓÃÓÚÒì²½ÏûÏ¢Ïû·Ñ»òÄÜ´¦Àí¶à¸ö²¢·¢ÏûÏ¢¡£Í¨³££¬ÊÂÎñµÄ¸´ÔÓÐÔ¶¼ÓÉÒ»¸öSessionÀ´·â×°¡£

¡¡¡¡Ò»¸öSessionÊÇÒ»¸öÔ­×Óµ¥Î»µÄ¹¤×÷£¬ÓëÊý¾Ý¿âµÄÊÂÎñÒ»Ñù£¬ÒªÊµÏÖ¶àÏß³ÌÊÂÎñ±È½ÏÀ§ÄÑ¡£SessionÌṩÁËÔÚÒ»¸öÏ̱߳à³ÌģʽϵIJ¢·¢µÄÓŵ㡣

¡¡¡¡MessageProducerºÍMessageConsumer¶ÔÏóÓÉSession¶ÔÏó´´½¨¡£ÓÃÓÚ·¢ËͺͽÓÊÜÏûÏ¢¡£ÎªÁËÈ·±£ÏûÏ¢µÄ´«µÝ£¬JMS·þÎñÌṩÕß´¦ÀíµÄÏûÏ¢¶¼Òª´¦ÓÚPERSISTENTģʽ¡£PERSISTENTģʽʹµÃJMSÌṩÕß³öÎÊÌâºó£¬Ò²ÄÜÈÃÏûÏ¢±£´æÏÂÀ´¡£

¡¡¡¡Session£¬MessageProducerºÍMessageConsumer¶¼²»Ö§³Ö²¢·¢£¬¶øConnectionFactory£¬DestinationºÍConnection¶¼Ö§³Ö²¢·¢¡£

¡¡¡¡2.JMSÓ¦ÓóÌÐò¿ª·¢

¡¡¡¡JMSÖеÄÏûÏ¢

¡¡¡¡ÔÚÏûϢϵͳÖУ¬Ó¦ÓóÌÐòÖ®¼äͨÐŵĹؼüÊÇÏûÏ¢¡£Òò´ËʹÓÃJMS±ØÐëÒªÏÈÀí½âÏûÏ¢¡£

¡¡¡¡ÔÚJMSÖУ¬ÏûÏ¢ÓÉÈý²¿·Ö×é³É£º

¡¡¡¡MESSAGE HEADERÓÃÓÚʶ±ðÏûÏ¢£¬±ÈÈçÓÃÓÚÅжÏÒ»¸ö¸ø¶¨µÄÏûÏ¢ÊÇ·ñÊÇÒ»¸ö"¶©ÔÄÕß"

¡¡¡¡PROPERITIESÓÃÓÚÓëÓ¦ÓóÌÐòÏà¹ØµÄ£¬ÌṩÕßÏà¹ØµÄºÍ¿ÉÑ¡ÏîµÄÐÅÏ¢

¡¡¡¡BODYÊÇÏûÏ¢µÄÄÚÈÝ£¬Ö§³Ö¼¸ÖÖ¸ñʽ£¬°üÀ¨TextMessage£¨¶ÔStringÒ»¸ö¼òµ¥µÄ·â×°£©ºÍObjectMessage£¨¶ÔÈÎÒâ¶ÔÏóµÄ·â×°£¬µ«±ØÐëÖ§³ÖÐòÁл¯£©£¬Ò²Ö§³ÖÆäËû¸ñʽ¡£

¡¡¡¡TextMessage

¡¡¡¡Ò»¸öTextMessageÊÇÒ»¸öString¶ÔÏóµÄ·â×°¡£ÔÚÖ»ÓÐÎı¾¶ÔÏó´«µÝʱ£¬ÊǺÜÓÐÓõġ£Ëü¼ÙÉèÐí¶àÏûϢϵͳÊǽ¨Á¢ÔÚXMLÉϵġ£´Ó¶øTextMessage¾Í¿ÉÒÔ³ÉΪ°ü×°ËüÃǵÄÈÝÆ÷¡£

¡¡¡¡´´½¨Ò»¸öTextMessage¶ÔÏóºÜ¼òµ¥£¬ÈçÏÂÃæµÄ´úÂ룺

¡¡¡¡TextMessage message=session.createMessage£¨£©;

¡¡¡¡message.setText£¨"Hello, world!"£©;

¡¡¡¡ObjectMessage

¡¡¡¡ÈçÃû×ÖËùʾ£¬ËüÊǶÔÒ»¸öJAVA¶ÔÏóµÄ·â×°µÄÏûÏ¢¡£ÈκοÉÐòÁл¯µÄJAVA¶ÔÏó¶¼ÄÜÓÃÓÚObjectMessage£¬Èç¹û±ØÐ뽫¶à¸ö¶ÔÏó·â×°ÔÚÒ»¸öÏûÏ¢Àï´«µÝ£¬¿ÉÒÔʹÓÃCollection¶ÔÏó£¬À´°üÀ¨¶à¸öÐòÁл¯¶ÔÏó¡£

¡¡¡¡ÏÂÃæÊÇ´´½¨Ò»¸öObjectMessage

¡¡¡¡ObjectMessage message=session.createObjectMessage£¨£©;

¡¡ ¡¡message.setObject£¨myObject£©;

¡¡¡¡´´½¨Ò»¸öJMS¿Í»§¶Ë³ÌÐò

¡¡¡¡Ò»¸öµäÐ͵ÄJMS¿Í»§¶ËÓÉÏÂÃæµÄ¼¸¸ö»ù±¾²½ÖèÀ´´´½¨£º

¡¡¡¡´´½¨Ò»¸öµ½ÏûϢϵͳÌṩÕßµÄÁ¬½Ó£¨Connection£©

¡¡¡¡´´½¨Ò»¸öSession£¬ÓÃÓÚ½ÓÊպͷ¢ËÍÏûÏ¢

¡¡¡¡´´½¨MessageProducerºÍMessageConsumerÀ´´´½¨ºÍ½ÓÊÕÏûÏ¢

¡¡¡¡µ±Íê³ÉÁËÉÏÊö²½Öèºó£¬Ò»¸öÏûÏ¢²úÉúÕ߿ͻ§¶Ë½«´´½¨²¢·¢²¼ÏûÏ¢µ½Ò»¸öÖ÷Ì⣬¶øÏûϢʹÓÃÕ߿ͻ§¶Ë»á½ÓÊÕÓëÒ»¸öÖ÷ÌâÏà¹ØµÄÏûÏ¢¡£

¡¡¡¡1.´´½¨Ò»¸öConnection

¡¡¡¡Ò»¸öConnectionÌṩ¿Í»§¶Ë¶Ôµ×²ãµÄÏûϢϵͳµÄ·ÃÎÊ¡£²¢ÊµÏÖ×ÊÔ´µÄ·ÖÅäºÍ¹ÜÀí¡£Í¨¹ýʹÓÃÒ»¸öConnectionFactoryÀ´´´½¨Ò»¸öConnection£¬Í¨³£ÓÃJDNIÀ´Ö¸¶¨£º

<table cellSpacing=0 borderColorDark=#ffffff cellPadding=1 align=center borderColorLight=#000000 border=1> <tr> <td style="FONT-SIZE: 9pt">Connection message=new initialContext£¨£©;
TopicConnectionFactory topicConnectionFactory=£¨TopicConnectionFactory£©;
topic = £¨Topic£© jndiContext.lookup£¨topicName£©;
topicConnection =topicConnectionFactory.createTopicConnection£¨£©;</td></tr></table>
¡¡¡¡2.´´½¨Ò»¸öSession

¡¡¡¡SessionÊÇÒ»¸ö±È½Ï´óµÄJMS¶ÔÏó£¬ËûÌṩÁËÉú²úºÍÏû·ÑÏûÏ¢µÄÊֶΡ£ÓÃÓÚ´´½¨ÏûϢʹÓÃÕߺÍÏûÏ¢²úÉúÕß¡£

¡¡¡¡topicSession = topicConnection.createTopicSession£¨false,Session.AUTO_ACKNOWLEDGE£©;

¡¡¡¡Á½¸ö²ÎÊýÓÃÓÚ¿ØÖÆÊÂÎñºÍÏûϢȷÈÏ¡£

¡¡¡¡3.¶¨Î»Ò»¸öTopic

¡¡¡¡ÓÃJDNIÀ´¶¨Î»Ò»¸öTopic£¬TopicÓÃÓÚʶ±ð·¢ËÍ»ò½ÓÊÕµÄÏûÏ¢£¬ÔÚ·¢²¼/¶©ÔÄϵͳÖС£¶©ÔÄÕß¶©ÔÄÒ»¸ö¸ø¶¨µÄTopic£¬¶ø·¢²¼Õß½«Ëü·¢²¼µÄÏûÏ¢ÓëÒ»¸öTopicÏàÁ¬¡£

¡¡¡¡ÏÂÃæÊÇ´´½¨Ò»¸öTopic "WeatherReport"

¡¡¡¡Topic weatherTopic=messaging.lookup£¨"WeatherReport"£©;

¡¡¡¡4.Æô¶¯Connection

¡¡¡¡ÔÚÉÏÃæµÄ³õʼ»¯²½ÖèÖ®ºó£¬ÏûÏ¢Á÷ÊǽûÖ¹µÄ£¬ÓÃÓÚ·ÀÖ¹ÔÚ³õʼ»¯Ê±·¢Éú²»¿ÉÔ¤ÁϵÄÐÐΪ¡£Ò»µ©³õʼ»¯½áÊø£¬±ØÐëÈÃConnectionÆô¶¯ÏûϢϵͳ¡£

¡¡¡¡topicConnection.start£¨£©;

¡¡¡¡5.´´½¨Ò»¸öÏûÏ¢²úÉúÕß

¡¡¡¡ÔÚ·¢²¼/¶©ÔÄÀһ¸ö²úÉúÕß·¢²¼ÏûÏ¢µ½Ò»¸öÖ¸¶¨µÄTopic¡£ÏÂÃæµÄ´úÂëÏÔʾ´´½¨Ò»¸ö²úÉúÕߣ¬ÒÔ¼°ºóÐøµÄ½¨Á¢ºÍ·¢²¼Ò»¸ö¼òµ¥Îı¾ÏûÏ¢¡£

¡¡¡¡TopicPublisher publisher=session.createPublisher£¨weatherTopic£©;

¡¡¡¡TexeMessage message=session.createMessage£¨£©;

¡¡¡¡message.setText£¨"ssss"£©;

¡¡¡¡publisher.publish£¨message£©;

¡¡¡¡ÏÂÃæÊÇÒ»¸öÏûϢʹÓÃÕߵĴúÂë

<table cellSpacing=0 borderColorDark=#ffffff cellPadding=1 align=center borderColorLight=#000000 border=1> <tr> <td style="FONT-SIZE: 9pt">topicConnection =topicConnectionFactory.createTopicConnection£¨£©;
topicSession = topicConnection.createTopicSession£¨false, Session.AUTO_ACKNOWLEDGE£©;
topicSubscriber = topicSession.createSubscriber£¨topic£©;
topicListener = new MsgListener£¨£©;
topicSubscriber.setMessageListener£¨topicListener£©;
topicConnection.start£¨£©;</td></tr></table>



¡ü·µ»ØÄ¿Â¼
ǰһƪ: ͨ¹ýJCAʵÏÖÆóÒµ¼¶Ó¦ÓóÌÐòµÄ¡°¼´²å¼´Óá±
ºóһƪ: J2EEµÄÒì²½ÏûÏ¢»úÖÆ(ÏÂ)