锘??xml version="1.0" encoding="utf-8" standalone="yes"?> • BPEL(Business Process Execution Language)鍙堝彨BPEL4WS(Business Process Execution Language For Web Service)錛岄潰鍚?/span>Web鏈嶅嫏鐨勬キ鍕欐祦紼嬪煼琛岃獮璦銆傛槸涓紼嬌鐢?/span>Web鏈嶅嫏瀹氱京鍜屽煼琛屾キ鍕欐祦紼嬬殑瑾炶█銆?/span>BPEL鎻愪緵浜?jiǎn)涓紼浉灝嶇啊鍠槗鎳傜殑鏂規(guī)硶錛屽彲灝囧鍊?/span>WEB鏈嶅嫏緄勫悎鍒頒竴鍊嬫柊鐨勫京鍚堟湇鍕?/span>(紼變綔妤嫏嫻佺▼)涓?/span> • BPEL鏈韓鏄竴鍊?/span>Web鏈嶅嫏錛屽彲浠ヤ綔鐐烘湇鍕欑殑鎻愪緵鑰呫?/span> • BPEL鏄熀鏂?/span>Web鏈嶅嫏鐨勶紝娌掓湁Web鏈嶅嫏灝辨矑鏈?/span>BPEL銆?br />
• 涓鍊嬩互bpel鐐哄緦綞寸殑鏂囦歡(渚嬪MyFlow.bpel) • 涓鍊?/span>WSDL鏂囦歡 • 涓鍊嬮儴緗?/span>XML鏂囦歡錛屾ǎ瀛愬艦浼?/span>bpel.xml • 闇瑕佺啛鎮(zhèn)夊柈鍊嬬殑Web Service鐨勪嬌鐢ㄦ柟娉?/span> • 闇瑕佷簡(jiǎn)瑙e叿楂旂殑妤嫏嫻佺▼ • 闇瑕佷竴鍊嬮亱琛?/span>BPEL鐨勮檿鐞嗗櫒 • 闇瑕佷竴鍊嬫祦紼嬭ō璦堝櫒 • 鐣剁劧闇瑕佸皪BPEL瑾炴硶妯欑敖鐨勬帉鎻$瓑 BPEL鐨勪竴鑸祼妲?/span> • <process> • <partnerLinks> • <partnerLink> • </partnerLink> • </partnerLinks> • <variables> • <variable/> • </variables> • <faultHandlers> • </faultHandlers> • <sequence> • Activities • </sequence> • </process> <process>鐨勫爆鎬?/span> <process name="ncname" targetNamespace="uri" queryLanguage="anyURI"? expressionLanguage="anyURI"? suppressJoinFailure="yes|no"? enableInstanceCompensation="yes|no"? abstractProcess="yes|no"? xmlns="http://schemas.xmlsoap.org/ws/2003/03/business-process/"> . . </process> <partnerLinks>妯e紡 <partnerLinks> <!– 娉ㄦ剰:鑷沖皯瑕佹寚瀹氫竴鍊嬭鑹?/span>. --> <partnerLink name="ncname" partnerLinkType="qname" myRole="ncname“ partnerRole="ncname"> </partnerLink> </partnerLinks> <variables>妯e紡 <variables> <variable name="ncname" messageType="qname“/> </variables> <faultHandlers>妯e紡 <faultHandlers> <catch faultName="qname“ faultVariable="ncname"> activity </catch> <catchAll> activity </catchAll> </faultHandlers> Activities鍖呭惈鍏烽珨濡備笅 • <receive> • <reply> • <invoke> • <assign> • <throw> • <terminate> • <wait> • <empty> • <sequence> • <switch> • <while> • <pick> • <flow> • <scope> • <compensate> 鍩烘湰媧誨嫊涓 • <invoke> – 瑾跨敤鏌愬?/span> Web 鏈嶅嫏涓婄殑鎿嶄綔 • <receive> – 絳夊緟涓姊濇秷鎭締鍥炴噳鐢辨煇浜哄緸澶栭儴閫茶瑾跨敤鐨勬湇鍕欎粙闈㈢殑鎿嶄綔 • <reply> – 鐢熸垚杓稿叆錛忚幾鍑烘搷浣滅殑鍥炴噳 • <wait> – 絳夊緟涓孌墊檪闁?/span> 鍩烘湰媧誨嫊浜?/span> • <assign> – 鎶婅硣鏂欏緸涓鍊嬪湴鏂硅瑁藉埌鍙︿竴鍊嬪湴鏂?/span> • <throw> – 鎸囨槑鏌愬嬪湴鏂瑰嚭閷簡(jiǎn) • <terminate> – 緄傛鏁村嬫湇鍕欏渚?/span> • <empty> – 浠楹戒篃涓嶅仛 緄愭鍖栨椿鍕?/span> • <sequence> – 瀹氱京涓緄勬椹熺殑鏈夊簭搴忓垪 • <switch> – 浣跨敤鐝懼湪甯歌鐨?/span>“case-statement”杈︽硶渚嗙敚鐢熷垎鏀?/span> • <while> – 瀹氱京涓鍊嬭看鍦?/span> • <pick> – 鍩瘋騫炬鍙伕璺緫涓殑涓姊?/span> • <flow> – 浠ュ強(qiáng)鎸囨槑涓緄勬椹熸噳瑭蹭甫琛屽湴鍩瘋 涓鍊嬪畬鏁寸殑綈″柈紺轟緥 <process name="test" targetNamespace="http://acm.org/samples" suppressJoinFailure="yes" xmlns:tns="http://acm.org/samples" xmlns="http://schemas.xmlsoap.org/ws/2003/03/business-process/" xmlns:bpelx="http://schemas.oracle.com/bpel/extension" xmlns:ora="http://schemas.oracle.com/xpath/extension" xmlns:bpws="http://schemas.xmlsoap.org/ws/2003/03/business-process/"> <partnerLinks> <!-- The 'client' role represents the requester of this service. --> <partnerLink name="client" partnerLinkType="tns:test" myRole="testProvider"/> </partnerLinks> <variables> <variable name="input" messageType="tns:testRequestMessage"/> <variable name="output" messageType="tns:testResponseMessage"/> </variables> <sequence name="main"> <receive name="receiveInput" partnerLink="client" portType="tns:test" operation="process" variable="input" createInstance="yes"/> <assign name="creatReturnStr"> <copy> <from expression="concat("Hello", bpws:getVariableData('input','payload','/tns:testRequest/tns:input'))"></from> <to variable="output" part="payload" query="/tns:testResponse/tns:result"/> </copy> </assign> <reply name="replyOutput" partnerLink="client" portType="tns:test" operation="process" variable="output"/> </sequence> </process>
BPEL鐨勯亱浣滄柟寮?/span>
BPEL鐨勪竴鑸鎴?/span>
BPEL鐨勫鐝鵑渶姹?/span>
8.6 BPEL鐨勭祼妲?/span>
紼嬪簭鍚嶇ū
|
JBoss ESB |
|
鏁告摎搴礬寰戝拰鍚嶇ū
|
222.118.20.108\jbossesb |
|
紼嬪簭鐨勬枃浠舵鎴愯鏄?/span>
|
||
1)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)
Jboss
2)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)
jbossesb-4.0Beta1MP1聽(tīng)聽(tīng)聽(tīng)聽(tīng)
2.1 jbossesb-appl.ear
2.2 jbossEsb.properties
2.3
JBossESB-ds.xml
2.4 properties-service.xml
2.5 ObjStore.xml
閰嶇疆姝ラ濡備笅
:
|
||
閬嬭姊濅歡鍜岄厤緗鏄?/span>
|
||
|
Windows
Linux |
|
|
1)鏁告摎婧愰厤緗湪JBossESB-ds.xml鏂囦歡閰嶇疆錛岃┏绱頒俊鎭涓?/span>: <datasources> 聽(tīng) <local-tx-datasource> 聽(tīng)聽(tīng)聽(tīng) <jndi-name>JBossESBDS</jndi-name>
聽(tīng)聽(tīng)聽(tīng) <connection-url>jdbc:jtds:sqlserver://222.118.20.108;DatabaseName=jbossesb</connection-url> 聽(tīng)聽(tīng)聽(tīng) <driver-class>net.sourceforge.jtds.jdbc.Driver</driver-class> 聽(tīng)聽(tīng)聽(tīng) <user-name>dbname</user-name> 聽(tīng)聽(tīng)聽(tīng) <password>access</password>
聽(tīng)聽(tīng)聽(tīng) <min-pool-size>10</min-pool-size> 聽(tīng)聽(tīng)聽(tīng) <max-pool-size>100</max-pool-size> 聽(tīng)聽(tīng)聽(tīng) <blocking-timeout-millis>1000</blocking-timeout-millis> 聽(tīng)聽(tīng)聽(tīng) <idle-timeout-minutes>5</idle-timeout-minutes>
聽(tīng) </local-tx-datasource>
</datasources> 2.淇敼jbossEsb.properties鏂囦歡: org.jboss.soa.esb.mail.smtp.host=www.163.com org.jboss.soa.esb.mail.smtp.port=23 org.jboss.soa.esb.mail.smtp.user=ejinmy org.jboss.soa.esb.mail.smtp.password=123456789abc
# # Object Store Settings # org.jboss.soa.esb.objStore.configfile=file:/e:/temp/ObjStore.xml |
|
|
蹇呴渶鏄?/span>
JBoss .
閬嬭
JBoss App Server
灝卞暉鍕曚簡(jiǎn)
JBoss ESB. |
|
|
鏁告摎搴〃(script) CREATE TABLE batches ( 聽(tīng)聽(tīng)聽(tīng) batch_num int NOT NULL, 聽(tīng)聽(tīng)聽(tīng) seq integer NOT NULL, 聽(tīng)聽(tīng)聽(tīng) data varchar, 聽(tīng)聽(tīng)聽(tīng) CONSTRAINT batches_pk PRIMARY KEY (batch_num,seq) );
CREATE TABLE object_snap ( 聽(tīng)聽(tīng)聽(tīng) uid int NOT NULL, 聽(tīng)聽(tīng)聽(tīng) stamp int, 聽(tīng)聽(tīng)聽(tīng) snap_type varchar, 聽(tīng)聽(tīng)聽(tīng) object_uid int, 聽(tīng)聽(tīng)聽(tīng) batch_num int, 聽(tīng)聽(tīng)聽(tīng) xml_data varchar, 聽(tīng)聽(tīng)聽(tīng) CONSTRAINT object_snap_pk PRIMARY KEY (uid) );
CREATE TABLE people_index ( 聽(tīng) 聽(tīng)聽(tīng)uid bigint NOT NULL, 聽(tīng)聽(tīng)聽(tīng) stamp int, 聽(tīng)聽(tīng)聽(tīng) latest_snap_uid int, 聽(tīng)聽(tīng)聽(tīng) latest_snap_date varchar, 聽(tīng)聽(tīng)聽(tīng) name varchar, 聽(tīng)聽(tīng)聽(tīng) phone varchar, 聽(tīng)聽(tīng)聽(tīng) address varchar, 聽(tīng)聽(tīng)聽(tīng) CONSTRAINT people_index_pk PRIMARY KEY (uid) );
CREATE TABLE uid_table ( 聽(tīng)聽(tīng)聽(tīng) uid integer NOT NULL, 聽(tīng)聽(tīng)聽(tīng) sequence_name varchar NOT NULL, 聽(tīng)聽(tīng)聽(tīng) last_used_uid bigint NOT NULL, 聽(tīng)聽(tīng)聽(tīng) CONSTRAINT uid_table_pk PRIMARY KEY (uid) );
INSERT INTO uid_table (uid, sequence_name, last_used_uid) VALUES (1, 'jbossEsb_objuid', 10500000); INSERT INTO uid_table (uid, sequence_name, last_used_uid) VALUES (2, 'jbossEsb_batchuid', 251000); |
|
鍌?/span>
聽(tīng)聽(tīng)聽(tīng)
娉?/span>
|
||
姝ゆ枃妾旀槸閰嶇疆瀹夎JBOSS ESB鐨勬椹熻鏄庢浉. |
||
銆銆銆
聽(tīng)聽(tīng)
聽(tīng)聽(tīng)jinmy
聽(tīng)聽(tīng)聽(tīng)聽(tīng)
|
||
聽(tīng)
浜?JBI(Java Business Integration)
JBI鏄疭OA鐨勮В姹哄拰闆嗘垚鐨勫熀紺?br />JBI鎻愪緵浜?jiǎn)绲勪欢涔嬮枔浜や簰鐨勬秷鎭熀绀庡Q?br />聽(tīng)1)NormalizedMessage(NM) 鎵鏈夊熀浜庢秷鎭殑鏁告摎鐗囨鈥斺擲OAP鐗囨銆丮OM娑堟伅銆丠TTP鏁告摎鎴栧叾瀹冧俊鎭斺旇鑱氬悎銆侀泦涓?br />聽(tīng)鎳夌敤鍒版キ鍕欓倧杓佸偝杓革紝濡傛灉鏈夊繀瑕佸墖杞夋彌鎴愬叾浠栨牸寮忛毃寰岃鍒嗘淳鍒版渶緄傜洰鐨勫湴
聽(tīng)2)JBI machine (SE)
聽(tīng)聽(tīng) 緄勪歡鎻愪緵鎴栬呮秷璨繪湇鍕欐槸鍩烘柤鏈湴鐨?br />聽(tīng)3)JBI binding (BC)
聽(tīng)聽(tīng) 緄勪歡 鎻愪緵鎴栬呮秷璨繪湇鍕欐槸閫氶亷涓浜涢氫俊鍗旇鎴栬呮槸鍏朵粬閬犵▼鎶琛?br />聽(tīng)緄勪歡涔嬮枔鐨勪氦浜掗氶亷娑堟伅浜ゆ彌錛屾秷鎭槸鏈嶅嫏鎻愪緵鑰呯櫦浣堢殑WSDL聽(tīng)
鏈嶅嫏鍏冧歡(Service Unit)
聽(tīng)涓鍊嬫湇鍕欏厓浠剁湅浣滄槸涓鍊嬮粦鐩掑瓙,瀹冩彁渚涗簡(jiǎn)涓鍊嬮潨鎱嬬殑鏈嶅嫏錛?br />聽(tīng)鏈嶅嫏鍏冧歡涓寘鍚湁錛屾彁渚涚殑鏈嶅嫏鍜屾湇鍕欐秷璨昏呫傚畠鍊戦兘寰炲爆鏈嶅嫏鍏冧歡錛屼竴鍊嬫湇鍕欏厓浠跺彲浠ユ湁0鍊嬫垨鑰呭鍊嬫湇鍕?/p>
聽(tīng)鏈嶅嫏闆嗗悎(service Assembly)
聽(tīng)緄勫悎鏈嶅嫏鍏冧歡鏄ぇ鐨勬噳鐢ㄧ▼搴忔垨鑰呮柊鐨勬湇鍕欏艦寮忓嚭鐝?A Service Assembly:涓緄凧BI 鏈嶅嫏鍏冧歡閫e悓鎻忚堪瀹冨戠殑闂滀總鍜岀洰妯欑祫浠?br />綹界祼:
JBI鏄疭OA緄愭鐨勫熀紺庯紝瀹冩妸鍘熶締鐨勬キ鍕欏嚱鏁擱泦鎴愮偤涓鍊嬫湇鍕欙紝浣挎湇鍕欐彁渚涜呭拰鏈嶅嫏娑堣不鑰呬箣闁撶殑浜や簰鏄澗鑰﹀悎鐨勶紝閫氶亷service assembly(鏈嶅嫏闆嗗悎錛?br />鍙互緄勫悎涓嶅悓鐨勭▼搴忥紝鏋舵鍦?
servicemix
娑堟伅緄愭鐨勪粙绱?br />鐢ㄩ亷web services(SOAP)鎳夎┎鐭ラ亾娑堟伅鍖呮嫭淇″皝銆佹秷鎭牠銆佷富楂斻侀檮浠?鍚屾ǎJMS娑堟伅緄愭涔熸槸宸笉澶氬寘鎷秷鎭牠銆佹秷鎭爆鎬с佹秷鎭珨.
浠MS銆丼OAP鐐哄熀紺庡彲浠ュ鐝鵑潰鍚戞秷鎭ā鍨?MOM Message Oriented Model)銆?br />JMS娑堟伅妯e紡:
SpyTextMessage {
聽(tīng)聽(tīng)聽(tīng)聽(tīng) Header {
聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng) jmsDestination聽(tīng) : QUEUE.mytestjms
聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng) jmsDeliveryMode : 2
聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng) jmsExpiration聽(tīng)聽(tīng) : 0
聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng) jmsPriority聽(tīng)聽(tīng)聽(tīng)聽(tīng) : 4
聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng) jmsMessageID聽(tīng)聽(tīng)聽(tīng) : ID:6-11454947326091
聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng) jmsTimeStamp聽(tīng)聽(tīng)聽(tīng) : 1145494732609
聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng) jmsCorrelationID: null
聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng) jmsReplyTo聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng) : null
聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng) jmsType聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng) : null
聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng) jmsRedelivered聽(tīng) : false
聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng) jmsProperties聽(tīng)聽(tīng) : {}
聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng) jmsPropReadWrite: false
聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng) msgReadOnly聽(tīng)聽(tīng)聽(tīng)聽(tīng) : true
聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng) producerClientId: ID:6
聽(tīng)聽(tīng)聽(tīng)聽(tīng) }
聽(tīng)聽(tīng)聽(tīng)聽(tīng) Body {
聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng) text聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng) :sender message from liao test
聽(tīng)聽(tīng)聽(tīng)聽(tīng) }
JMS綈″柈綬ㄧ▼瀵︾従榛炲皪榛炵殑娑堟伅銆鏈嶅嫏鍣ㄧ敤jboss-4.0.3SP1
1)棣栧厛鍦↗BOSS涓儴灞竴鍊嬮粸灝嶉粸鐨勬秷鎭殜鍒?br />閰嶇疆鏂囦歡鏀懼湪JBOSS_Home\server\default\deploy\jms
閰嶇疆鏂囦歡鐨勫収瀹圭偤:
<?xml version="1.0" encoding="UTF-8"?>
<server>
聽(tīng)<!--鏄竴鍊嬮粸灝嶉粸鐨勭敤org.jboss.mq.server.jmx.Queue(Topic),desination鐨勫悕紼辯偤mytestjms聽(tīng)
聽(tīng) 鏇村鐨勯厤緗鏄庡彲浠ョ湅鍘熶締jboss鑷付鐨凧ms閰嶇疆鏂囦歡錛屾枃浠跺悕瑕佺敤*-service.xml
聽(tīng)-->
聽(tīng) <mbean code="org.jboss.mq.server.jmx.Queue" name="jboss.mq.destination:service=Queue,name=mytestjms">
聽(tīng)聽(tīng)聽(tīng) <depends optional-attribute-name="DestinationManager">jboss.mq:service=DestinationManager</depends>
聽(tīng) </mbean>
</server>
2)瀵︾従娑堟伅鐧奸佽?br />import java.util.Hashtable;
import javax.jms.*;
import javax.naming.*;
public class JMSSender {
聽(tīng)聽(tīng)聽(tīng) QueueSession session;
聽(tīng)聽(tīng)聽(tīng) QueueConnection conn;
聽(tīng)聽(tīng)聽(tīng) QueueSender sender;
聽(tīng)聽(tīng)聽(tīng) QueueReceiver receiver;
聽(tīng)聽(tīng)聽(tīng) public void clientconnect()throws Exception
聽(tīng)聽(tīng)聽(tīng) {
聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng) 聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng) env.put(Context.PROVIDER_URL,"localhost");
聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng) Context iniCtx = new InitialContext(env)聽(tīng) ;
聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng) 鍓靛緩JMS閫f帴鐨勫伐寤犻
聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng) Object tmp = iniCtx.lookup("ConnectionFactory");
聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng) QueueConnectionFactory qcf = (QueueConnectionFactory)tmp;
聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)
聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng) 聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng) //鍓?/a>寤篔MS鏈冭┍
聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng) session = conn.createQueueSession(false,QueueSession.AUTO_ACKNOWLEDGE);
聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng) 聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng) clientconnect();
聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng) TextMessage textmsg = this.session.createTextMessage();
聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng) textmsg.setText("sender message from liao test");
聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng) 聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng) }catch(Exception e)
聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng) {
聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng) e.printStackTrace();
聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng) }
聽(tīng)聽(tīng)聽(tīng) }
聽(tīng)聽(tīng)聽(tīng) /**
聽(tīng)聽(tīng)聽(tīng)聽(tīng) * 鍋滄鍜岄棞闁塉MS閫f帴
聽(tīng)聽(tīng)聽(tīng)聽(tīng) * @throws JMSException
聽(tīng)聽(tīng)聽(tīng)聽(tīng) */
聽(tīng)聽(tīng)聽(tīng) public void disConnect() throws JMSException
聽(tīng)聽(tīng)聽(tīng) {
聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng) conn.stop();
聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng) session.close();
聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng) conn.close();
聽(tīng)聽(tīng)聽(tīng) }
聽(tīng)聽(tīng)聽(tīng) public Message receiver() throws JMSException
聽(tīng)聽(tīng)聽(tīng) {
聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng) return receiver.receive(1000);
聽(tīng)聽(tīng)聽(tīng) }
聽(tīng)聽(tīng)聽(tīng) public static void main(String[] args)throws Exception
聽(tīng)聽(tīng)聽(tīng) {
聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng) new JMSSender();
聽(tīng)聽(tīng)聽(tīng) }
}
3)瀵︾従娑堟伅鎺ュ彈鑰?br />import java.util.Hashtable;
import javax.jms.*;
import javax.naming.*;
public class JMSReceiver {
聽(tīng)聽(tīng)聽(tīng) QueueSession session;
聽(tīng)聽(tīng)聽(tīng) QueueConnection conn;
聽(tīng)聽(tīng)聽(tīng) QueueReceiver receiver;
聽(tīng)聽(tīng)聽(tīng)
聽(tīng)聽(tīng)聽(tīng) public void clientconnect()throws Exception
聽(tīng)聽(tīng)聽(tīng) {
聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng) Hashtable env =聽(tīng) new Hashtable();
聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng) env.put(Context.INITIAL_CONTEXT_FACTORY,"org.jnp.interfaces.NamingContextFactory");
聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng) env.put(Context.PROVIDER_URL,"localhost");
聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng) Context iniCtx = new InitialContext(env)聽(tīng) ;
聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng) Object tmp = iniCtx.lookup("ConnectionFactory");
聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng) QueueConnectionFactory qcf = (QueueConnectionFactory)tmp;
聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng) Queue queue = (Queue)iniCtx.lookup("queue/mytestjms");
聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng) conn = qcf.createQueueConnection();
聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng) session = conn.createQueueSession(false,QueueSession.AUTO_ACKNOWLEDGE);
聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng) conn.start();
聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng) receiver = session.createReceiver(queue);
聽(tīng)聽(tīng)聽(tīng) }
聽(tīng)聽(tīng)聽(tīng) public void disConnect() throws JMSException
聽(tīng)聽(tīng) {
聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng) conn.stop();
聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng) session.close();
聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng) conn.close();
聽(tīng)聽(tīng) }
聽(tīng)聽(tīng) public Message receiver() throws JMSException
聽(tīng)聽(tīng) {
聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng) return receiver.receive(1000);
聽(tīng)聽(tīng) }
聽(tīng)聽(tīng) public JMSReceiver()throws Exception
聽(tīng)聽(tīng) {
聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng) clientconnect();
聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng) Message msg = receiver();
聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng) System.out.println(msg);
聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng) if (msg instanceof TextMessage)
聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng) {
聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng) TextMessage tmsg = (TextMessage)msg;
聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng) 聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng) disConnect();
聽(tīng)
聽(tīng)聽(tīng) }
聽(tīng)
聽(tīng)聽(tīng)聽(tīng) public static void main(String[] args)throws Exception
聽(tīng)聽(tīng)聽(tīng) {
聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng) new JMSReceiver();
聽(tīng)聽(tīng)聽(tīng) }
}
涓婚娑堟伅鐢ㄥ埌Topic,鎬濊礬鍩烘湰鐩稿悓錛屾帴鍙楀繀闇鍏堣▊闁辨秷鎭富欏岋紝鐣舵湁鐧奸佽呮妸娑堟伅鐧肩鄲閫欏嬩富欏岀殑鏅傚?br />鍏堝墠璦傞柋鐨勬帴鍙楀氨鏈冩敹鍒伴欏嬫秷鎭?br />SOA涓璊MS涔熸槸涓鍊嬬啽闁錛屽鎴剁閫氬父鐢↗MS鐧奸佹秷鎭啀ESB涓鐢ㄥ叿楂旂殑鏈嶅嫏銆?/p>
1)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng) 鎻愪緵瀹㈡埗绔鐢ㄧ殑鎺ュ彛(web services)
2)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng) 綬ㄥ铏曠悊铏曠悊娑堟伅鐨勯錛屾秷鎭従鍦ㄥ寘鎷?/span> , 鐧婚櫢娑堟伅銆佺櫥鍑烘秷鎭佹秷鎭櫦閫?娑堟伅鐙鎱嬬殑淇敼
鐧婚櫢娑堟伅鍖呮嫭
:
瀹㈡埗绔殑鐢ㄦ埗鍚嶃?/span>
ip
銆佺鍙?/span>
;
鐧誨嚭娑堟伅鍖呮嫭
:
瀹㈡埗绔殑鐢ㄦ埗鍚嶏紝鏈嶅嫏鍣ㄥ皣娉ㄩ姺瀹㈡埗绔櫥闄告檪鐧奸亷渚嗙殑娑堟伅
鐧奸佺殑娑堟伅鍖呮嫭
:
鐧奸佷漢錛屾帴鍙椾漢錛岀櫦閫佷簨浠訛紝鐧奸佺殑鍏у
.
淇敼鐙鎱?鍖呮嫭娑堟伅鐨勯棞閸靛瓧ID
3)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)
鍦ㄥ鎴剁鐧婚櫢鐨勬檪鍊欑洠娓槸鍚︽槸鍚︽湁鏂版秷鎭紝鏈夊墖鐧奸佺鄲瀹㈡埗绔?br />
4)鐧奸佺殑娑堟伅濡傛灉鎺ュ彈鐢ㄦ埗涓嶅湪綬氾紝鍓囦繚瀛樿┎娑堟伅錛岀瓑鎺ュ彈鑰呯櫥闄哥殑鏅傚欏啀鐧奸佺鄲鎺ュ彈鑰呫?br />
娑堟伅鏈変竴鍊嬬媭鎱婲琛ㄧず鏂扮殑娑堟伅錛孫琛ㄧず宸茬稉紕鴻獚鐨勬秷鎭?
娑堟伅鍌崇鄲鐢ㄦ埗錛岀敤鎴剁⒑瑾嶅湪鍥炲娑堟伅鐙鎱?br />瀹㈡埗绔鐢ㄧ殑鎺ュ彛鍙互鏄疛MS,Http鐢辨柤鐝懼湪鍙湁delphi瀹㈡埗绔紝鐝懼湪鎻愪緵web services璦晱
嫻佺▼鍦?