锘??xml version="1.0" encoding="utf-8" standalone="yes"?> 聽
聽 鐢辨柤鏄竴鍊嬮姺鍞殑鍏徃錛屾湁浜嗛姺鍞侀噰璩箋佸夊韓灝卞樊涓嶅浜嗐傞欎簺紼嬪簭鎴戝戦兘鏈夛紝浣嗘槸鐐轟簡閭i倞鐨勭▼搴忋佹祦紼嬭兘闋嗘殺鐨勯亱琛岋紝浠誨嫏閭勬湁濂藉錛屽埌8鏈?5浠誨嫏灝辮瀹屾垚錛屼篃宸笉澶氫簡錛屽懙錛岀湅浜嗕笅鐝懼湪鐨勬儏娉侊紝閭勫熀鏈笂鍙互錛屼笉閬庨倓鏈夌▼搴忔矑鏈夌祫鍚堣搗渚嗐?br />聽 寰為欏叐鍊嬫湀鐨勪換鍕欎腑錛屾垜鎰熻鍒扮▼搴忕殑闁嬬櫦瑕佸仛鍒伴噸鐢ㄣ佹摯灞曪紝涓︿笉鏄緢瀹規槗鐨勪簨銆?br />棣栧厛寰炴暩鎿氬堡渚嗚錛屼笉鍚岀殑鍦版柟鏈夊彲鑳戒嬌鐢ㄤ笉鍚岀殑鏁告摎琛紝鍦╦ava涓枊鐧煎埌鏄瘮杓冨鏄撹檿鐞嗭紝浣嗘槸濡傛灉鏄敤C/S鐨刣elphi闁嬬櫦鐨勫ぇ閮ㄥ垎閮芥槸鐩存帴浣跨敤sql鐨勶紝寰堥洠瀵︾従閫欎竴榛?br />涔熻ū浣犳渻瑾紝鐐轟粈楹間笉浣跨敤鍚屼竴鍊嬫暩鎿氳〃?鎯呮硜寰堝錛屾垜鍊戝叕鍙告槸閫欐ǎ鐨勶紝璩d簡涓濂桬RP錛堜笉瀹屾暣鐗堟湰錛?鑷繁闁嬬櫦浜嗗叾浣欓儴鍒嗭紝閫欏叐鍊嬬▼搴?br />瑕佸悓鏅傞亱琛岋紝鍙湁鎴戝戞柊闁嬬櫦鐨勭▼搴忚浣跨敤涓嶅悓琛ㄧ殑鎯呮硜銆傚悓妯f垜鍊戠殑鍚堜綔鍏徃錛屾湁鍙兘鏈変粬鑷繁鐨勭郴緄憋紝濡傛灉鑳藉仛鍒頒笉渚濊炒鏂煎熀琛?br />灝辨洿瀹規槗閲嶇敤錛屾暩鎿氬叡浜?
鎺ヤ笅渚嗗氨鏄?妤嫏鍔熻兘鐨勯噸鐢?
鍍忓夊韓鐨勯茶波銆佸嚭璨紝鍙敤鏂糚O,SO,鐢熺敘絳夛紝閮芥槸涓妯g殑鎰忕京銆傜偤浜嗚兘浣夸笉鍚屽湴鏂圭殑妤嫏鍔熻兘鑳介噸鐢紝鎴戝戜嬌鐢⊿OA鐨勬濇兂
鍒╃敤WebServices銆丒SB鐨勬妧琛撲締瀵︾従錛屾キ鍕欑殑鏈嶅嫏鍖?
鍐嶅氨鏄?鎿村睍
涓嶅悓鐨勫湴鏂規湁鍙兘闇姹傛湁涓嶅悓錛岄欐槸寰堝悎涔庢儏鐞嗙殑錛屽鐝懼湪鑻卞湅瑕佺湅鍒版垜鍊戣波鐗╁湪閫旈噺錛屾湰渚嗗夊韓娌掓湁閫欏嬪姛鑳界殑.
鎴戞兂瑕佸仛鍒拌粺浠剁殑鍙董璀楓佸彲閲嶇敤涓嶆槸綈″柈鐨勭煡閬撲嬌鐢ㄨ獮璦錛岄欏嬬洿鎺ヨ伎鍊嬩漢鐨勭繏鎱f湁寰堝ぇ鐨勯棞淇?br />鍏朵粬闁嬬櫦杌熶歡錛屽氨鏄枊鐧間漢鍝¤檿鐞嗛欏嬶紝絳夋柤鐢熸椿鐨勪腑鐨勭叜椋竴妯o紝鏈夌殑浜哄緢杓曟澗灝卞畬鎴愶紝鏈夌殑浜哄氨寮勭殑涓鍦樼碂
澶氶崨鐓夌⿳绱稉椹椾篃鏄噸瑕侊紝鏈寰屾彁閱掕嚜宸憋紝鍋氫換浣曚簨鎯呴兘涓嶈兘棣檸錛岃浠旂窗鑰冩叜銆傚悓鏅傚笇鏈?.15鑳藉畬鎴愪換鍕?/p>
娑堟伅鍌抽仦緋葷當閫氬父琚垚鐐篗OM(Message Oriented MiddleWare),浣滅偤娑堟伅鏈嶅嫏鍣紝MOM闇瑕佸鎴剁鐢ㄧ當涓鐨勬鍑嗚í鍟忔湇鍕欏櫒錛孞MS妯欏噯鏄嬌鐢?br />鏈寤f硾鐨勬秷鎭帴鍙f鍑?
JMS娑堟伅鍒嗛粸灝嶉粸銆佸熀鏂間富欏岀殑娑堟伅鍏╃ó
榛炲皪榛炴柟寮?鏄叐鍊嬪鎴剁寤虹珛娑堟伅闅婂垪錛屾秷鎭櫦閫佽?sender)鎶婃秷鎭?Message)緄︽秷鎭湇鍕欏櫒涓殑涓鍊嬮殜鍒?Queue),娑堟伅鎺ュ彈鑰?receiver)寰炴湇鍕欏櫒涓欏嬮殜鍒椾腑
鐛插彇娑堟伅.
涓婚娑堟伅:娑堟伅鐧奸佽呴熆鍚戞秷鎭湇鍕欏櫒涓殑涓鍊嬩富欏岀櫦閫佹秷鎭?Message),灝嶉欏嬫秷鎭湁璦傞柋鐨勬帴鍙楄呴兘鏈冩帴鍙楀埌閫欏嬫秷鎭?
JMS涓殑涓昏鍚嶈:
1)鐩殑鍦?Desination)
聽鏄櫦閫佽呭拰鎺ュ彈鑰呯殑涓鍊嬪叡鍚岀殑鍦伴粸錛岀櫦閫佽呮妸娑堟伅鐧奸佸埌閫欒!錛屾帴鍙楄呭緸閫欒!鐛插彇娑堟伅,鏄垜鍊戝湪鏈嶅嫏鍣ㄤ腑鍓靛緩鐨勪竴鍊嬮殜鍒楋紝鏈嶅嫏鍣ㄦ渻灝嶉欏嬪湴鏂圭殑鎵鏈夋秷鎭董璀楓?br />2)鏈冭┍
聽娑堟伅鐧奸佽呭拰鎺ュ彈錛岄兘瑕侀氶亷JNDI鐛插彇娑堟伅鏈嶅嫏鍣ㄧ殑涓婁笅鏂囷紝session灝辨槸閫欐ǎ鐨勪竴鍊嬩笂涓嬫枃灝嶈薄錛屽畠鍙互鍓靛緩娑堟伅鐢熺敘鑰呫佹秷璨昏咃紝鍙互鍓靛緩榛炲皪榛炴秷鎭佷富欏屾秷鎭?br />鎵鏈夌殑娑堟伅鎿嶄綔閮藉湇綣為欏嬫渻瑭卞睍闁?
娑堟伅緄愭鐨勪粙绱?br />鐢ㄩ亷web services(SOAP)鎳夎┎鐭ラ亾娑堟伅鍖呮嫭淇″皝銆佹秷鎭牠銆佷富楂斻侀檮浠?鍚屾ǎJMS娑堟伅緄愭涔熸槸宸笉澶氬寘鎷秷鎭牠銆佹秷鎭爆鎬с佹秷鎭珨.
浠MS銆丼OAP鐐哄熀紺庡彲浠ュ鐝鵑潰鍚戞秷鎭ā鍨?MOM Message Oriented Model)銆?br />JMS娑堟伅妯e紡:
SpyTextMessage {
聽聽聽聽 Header {
聽聽聽聽聽聽聽 jmsDestination聽 : QUEUE.mytestjms
聽聽聽聽聽聽聽 jmsDeliveryMode : 2
聽聽聽聽聽聽聽 jmsExpiration聽聽 : 0
聽聽聽聽聽聽聽 jmsPriority聽聽聽聽 : 4
聽聽聽聽聽聽聽 jmsMessageID聽聽聽 : ID:6-11454947326091
聽聽聽聽聽聽聽 jmsTimeStamp聽聽聽 : 1145494732609
聽聽聽聽聽聽聽 jmsCorrelationID: null
聽聽聽聽聽聽聽 jmsReplyTo聽聽聽聽聽 : null
聽聽聽聽聽聽聽 jmsType聽聽聽聽聽聽聽聽 : null
聽聽聽聽聽聽聽 jmsRedelivered聽 : false
聽聽聽聽聽聽聽 jmsProperties聽聽 : {}
聽聽聽聽聽聽聽 jmsPropReadWrite: false
聽聽聽聽聽聽聽 msgReadOnly聽聽聽聽 : true
聽聽聽聽聽聽聽 producerClientId: ID:6
聽聽聽聽 }
聽聽聽聽 Body {
聽聽聽聽聽聽聽 text聽聽聽聽聽聽聽聽聽聽聽 :sender message from liao test
聽聽聽聽 }
JMS綈″柈綬ㄧ▼瀵︾従榛炲皪榛炵殑娑堟伅銆鏈嶅嫏鍣ㄧ敤jboss-4.0.3SP1
1)棣栧厛鍦↗BOSS涓儴灞竴鍊嬮粸灝嶉粸鐨勬秷鎭殜鍒?br />閰嶇疆鏂囦歡鏀懼湪JBOSS_Home\server\default\deploy\jms
閰嶇疆鏂囦歡鐨勫収瀹圭偤:
<?xml version="1.0" encoding="UTF-8"?>
<server>
聽<!--鏄竴鍊嬮粸灝嶉粸鐨勭敤org.jboss.mq.server.jmx.Queue(Topic),desination鐨勫悕紼辯偤mytestjms聽
聽 鏇村鐨勯厤緗鏄庡彲浠ョ湅鍘熶締jboss鑷付鐨凧ms閰嶇疆鏂囦歡錛屾枃浠跺悕瑕佺敤*-service.xml
聽-->
聽 <mbean code="org.jboss.mq.server.jmx.Queue" name="jboss.mq.destination:service=Queue,name=mytestjms">
聽聽聽 <depends optional-attribute-name="DestinationManager">jboss.mq:service=DestinationManager</depends>
聽 </mbean>
</server>
2)瀵︾従娑堟伅鐧奸佽?br />import java.util.Hashtable;
import javax.jms.*;
import javax.naming.*;
public class JMSSender {
聽聽聽 QueueSession session;
聽聽聽 QueueConnection conn;
聽聽聽 QueueSender sender;
聽聽聽 QueueReceiver receiver;
聽聽聽 public void clientconnect()throws Exception
聽聽聽 {
聽聽聽聽聽聽聽 聽聽聽聽聽聽聽 env.put(Context.PROVIDER_URL,"localhost");
聽聽聽聽聽聽聽 Context iniCtx = new InitialContext(env)聽 ;
聽聽聽聽聽聽聽聽 鍓靛緩JMS閫f帴鐨勫伐寤犻
聽聽聽聽聽聽聽 Object tmp = iniCtx.lookup("ConnectionFactory");
聽聽聽聽聽聽聽 QueueConnectionFactory qcf = (QueueConnectionFactory)tmp;
聽聽聽聽聽聽聽聽
聽聽聽聽聽聽聽 聽聽聽聽聽聽聽 //鍓?/a>寤篔MS鏈冭┍
聽聽聽聽聽聽聽聽 session = conn.createQueueSession(false,QueueSession.AUTO_ACKNOWLEDGE);
聽聽聽聽聽聽聽聽 聽聽聽聽聽聽聽聽聽聽聽 clientconnect();
聽聽聽聽聽聽聽聽聽聽聽 TextMessage textmsg = this.session.createTextMessage();
聽聽聽聽聽聽聽聽聽聽聽 textmsg.setText("sender message from liao test");
聽聽聽聽聽聽聽聽聽聽聽 聽聽聽聽聽聽聽 }catch(Exception e)
聽聽聽聽聽聽聽 {
聽聽聽聽聽聽聽聽聽聽聽 e.printStackTrace();
聽聽聽聽聽聽聽 }
聽聽聽 }
聽聽聽 /**
聽聽聽聽 * 鍋滄鍜岄棞闁塉MS閫f帴
聽聽聽聽 * @throws JMSException
聽聽聽聽 */
聽聽聽 public void disConnect() throws JMSException
聽聽聽 {
聽聽聽聽聽聽聽 conn.stop();
聽聽聽聽聽聽聽 session.close();
聽聽聽聽聽聽聽 conn.close();
聽聽聽 }
聽聽聽 public Message receiver() throws JMSException
聽聽聽 {
聽聽聽聽聽聽聽 return receiver.receive(1000);
聽聽聽 }
聽聽聽 public static void main(String[] args)throws Exception
聽聽聽 {
聽聽聽聽聽聽聽聽 new JMSSender();
聽聽聽 }
}
3)瀵︾従娑堟伅鎺ュ彈鑰?br />import java.util.Hashtable;
import javax.jms.*;
import javax.naming.*;
public class JMSReceiver {
聽聽聽 QueueSession session;
聽聽聽 QueueConnection conn;
聽聽聽 QueueReceiver receiver;
聽聽聽
聽聽聽 public void clientconnect()throws Exception
聽聽聽 {
聽聽聽聽聽聽聽 Hashtable env =聽 new Hashtable();
聽聽聽聽聽聽聽 env.put(Context.INITIAL_CONTEXT_FACTORY,"org.jnp.interfaces.NamingContextFactory");
聽聽聽聽聽聽聽 env.put(Context.PROVIDER_URL,"localhost");
聽聽聽聽聽聽聽 Context iniCtx = new InitialContext(env)聽 ;
聽聽聽聽聽聽聽 Object tmp = iniCtx.lookup("ConnectionFactory");
聽聽聽聽聽聽聽 QueueConnectionFactory qcf = (QueueConnectionFactory)tmp;
聽聽聽聽聽聽聽 Queue queue = (Queue)iniCtx.lookup("queue/mytestjms");
聽聽聽聽聽聽聽 conn = qcf.createQueueConnection();
聽聽聽聽聽聽聽聽 session = conn.createQueueSession(false,QueueSession.AUTO_ACKNOWLEDGE);
聽聽聽聽聽聽聽 conn.start();
聽聽聽聽聽聽聽 receiver = session.createReceiver(queue);
聽聽聽 }
聽聽聽 public void disConnect() throws JMSException
聽聽 {
聽聽聽聽聽聽 conn.stop();
聽聽聽聽聽聽 session.close();
聽聽聽聽聽聽 conn.close();
聽聽 }
聽聽 public Message receiver() throws JMSException
聽聽 {
聽聽聽聽聽聽 return receiver.receive(1000);
聽聽 }
聽聽 public JMSReceiver()throws Exception
聽聽 {
聽聽聽聽聽聽聽 clientconnect();
聽聽聽聽聽聽聽聽 Message msg = receiver();
聽聽聽聽聽聽聽聽 System.out.println(msg);
聽聽聽聽聽聽聽聽 if (msg instanceof TextMessage)
聽聽聽聽聽聽聽聽 {
聽聽聽聽聽聽聽聽聽聽聽聽 TextMessage tmsg = (TextMessage)msg;
聽聽聽聽聽聽聽聽聽聽聽聽 聽聽聽聽聽聽聽聽 disConnect();
聽
聽聽 }
聽
聽聽聽 public static void main(String[] args)throws Exception
聽聽聽 {
聽聽聽聽聽聽聽 new JMSReceiver();
聽聽聽 }
}
涓婚娑堟伅鐢ㄥ埌Topic,鎬濊礬鍩烘湰鐩稿悓錛屾帴鍙楀繀闇鍏堣▊闁辨秷鎭富欏岋紝鐣舵湁鐧奸佽呮妸娑堟伅鐧肩鄲閫欏嬩富欏岀殑鏅傚?br />鍏堝墠璦傞柋鐨勬帴鍙楀氨鏈冩敹鍒伴欏嬫秷鎭?br />SOA涓璊MS涔熸槸涓鍊嬬啽闁錛屽鎴剁閫氬父鐢↗MS鐧奸佹秷鎭啀ESB涓鐢ㄥ叿楂旂殑鏈嶅嫏銆?/p>
1)聽聽聽聽聽聽 鎻愪緵瀹㈡埗绔鐢ㄧ殑鎺ュ彛(web services)
2)聽聽聽聽聽聽 綬ㄥ铏曠悊铏曠悊娑堟伅鐨勯錛屾秷鎭従鍦ㄥ寘鎷?/span> , 鐧婚櫢娑堟伅銆佺櫥鍑烘秷鎭佹秷鎭櫦閫?娑堟伅鐙鎱嬬殑淇敼
鐧婚櫢娑堟伅鍖呮嫭
:
瀹㈡埗绔殑鐢ㄦ埗鍚嶃?/span>
ip
銆佺鍙?/span>
;
鐧誨嚭娑堟伅鍖呮嫭
:
瀹㈡埗绔殑鐢ㄦ埗鍚嶏紝鏈嶅嫏鍣ㄥ皣娉ㄩ姺瀹㈡埗绔櫥闄告檪鐧奸亷渚嗙殑娑堟伅
鐧奸佺殑娑堟伅鍖呮嫭
:
鐧奸佷漢錛屾帴鍙椾漢錛岀櫦閫佷簨浠訛紝鐧奸佺殑鍏у
.
淇敼鐙鎱?鍖呮嫭娑堟伅鐨勯棞閸靛瓧ID
3)聽聽聽聽聽聽
鍦ㄥ鎴剁鐧婚櫢鐨勬檪鍊欑洠娓槸鍚︽槸鍚︽湁鏂版秷鎭紝鏈夊墖鐧奸佺鄲瀹㈡埗绔?br />
4)鐧奸佺殑娑堟伅濡傛灉鎺ュ彈鐢ㄦ埗涓嶅湪綬氾紝鍓囦繚瀛樿┎娑堟伅錛岀瓑鎺ュ彈鑰呯櫥闄哥殑鏅傚欏啀鐧奸佺鄲鎺ュ彈鑰呫?br />
娑堟伅鏈変竴鍊嬬媭鎱婲琛ㄧず鏂扮殑娑堟伅錛孫琛ㄧず宸茬稉紕鴻獚鐨勬秷鎭?
娑堟伅鍌崇鄲鐢ㄦ埗錛岀敤鎴剁⒑瑾嶅湪鍥炲娑堟伅鐙鎱?br />瀹㈡埗绔鐢ㄧ殑鎺ュ彛鍙互鏄疛MS,Http鐢辨柤鐝懼湪鍙湁delphi瀹㈡埗绔紝鐝懼湪鎻愪緵web services璦晱
嫻佺▼鍦?