浜? WebLogic JMS鐗規(guī)?/strong>
1. 娑堟伅閫氫俊妯″瀷
JMS 鏀寔涓ょ娑堟伅閫氫俊妯″瀷錛氱偣鍒扮偣錛坧oint-to-point錛夛紙PTP錛夋ā鍨嬪拰鍙戝竷/璁㈤槄錛圥ub/Sub錛夋ā鍨嬨傞櫎浜嗕笅鍒椾笉鍚屼箣澶栵紝榪欎袱縐嶆秷鎭氫俊妯″瀷闈炲父鍦扮浉浼鹼細(xì)
PTP 妯″瀷瑙勫畾浜嗕竴涓秷鎭彧鑳芥湁涓涓帴鏀惰?Pub/Sub 妯″瀷鍏佽涓涓秷鎭彲浠ユ湁澶氫釜鎺ユ敹鑰呫?br />
2. 娑堟伅緇勬垚
娑堟伅浼犻掔郴緇熺殑涓績?yōu)鏄秷鎭?br />
涓鏉?Message 鍒嗕負(fù)涓変釜緇勬垚閮ㄥ垎錛?
· 澶達(dá)紙header錛夋槸涓爣鍑嗗瓧孌甸泦錛屽鎴鋒満鍜屼緵搴斿晢閮界敤瀹冩潵鏍囪瘑鍜岃礬鐢辨秷鎭?br />
· 灞炴э紙property錛夋敮鎸佹妸鍙夊ご瀛楁娣誨姞鍒版秷鎭傚鏋滄?zhèn)ㄧ殑搴旂敤绋嬪簭闇瑕佷笉浣跨敤鏍囧噯澶村瓧孌靛娑堟伅緙栫洰鍜屽垎綾伙紝鎮(zhèn)ㄥ氨鍙互娣誨姞涓涓睘鎬у埌娑堟伅浠ュ疄鐜拌繖涓紪鐩拰鍒嗙被銆傛彁渚?set<Type>Property(...) 鍜?get<Type>Property(...) 鏂規(guī)硶浠ヨ緗拰鑾峰彇鍚勭 Java 綾誨瀷鐨勫睘鎬э紝鍖呮嫭 Object銆侸MS 瀹氫箟浜嗕竴涓緵搴斿晢閫夋嫨鎻愪緵鐨勬爣鍑嗗睘鎬ч泦銆?br />
· 娑堟伅鐨勪富浣擄紙body錛夊寘鍚鍙戦佺粰鎺ユ敹搴旂敤紼嬪簭鐨勫唴瀹廣傛瘡涓秷鎭帴鍙g壒瀹氫簬瀹冩墍鏀寔鐨勫唴瀹圭被鍨嬨?
JMS 涓轟笉鍚岀被鍨嬬殑鍐呭鎻愪緵浜嗗畠浠悇鑷殑娑堟伅綾誨瀷錛屼絾鏄墍鏈夋秷鎭兘媧劇敓鑷?Message 鎺ュ彛銆?br />
· StreamMessage錛氬寘鍚?Java 鍩烘湰鏁板兼祦錛岀敤鏍囧噯嫻佹搷浣滄潵欏哄簭鐨勫~鍏呭拰璇誨彇銆?br />
· MapMessage錛氬寘鍚竴緇勫悕/鍊煎錛涘悕縐頒負(fù) string 綾誨瀷錛岃屽間負(fù) Java 鐨勫熀鏈被鍨嬨?br />
· TextMessage錛氬寘鍚竴涓?String銆?br />
· ObjectMessage錛氬寘鍚竴涓?Serializable Java 瀵硅薄錛涜兘浣跨敤 JDK 鐨勯泦鍚堢被銆?br />
· BytesMessage錛氬寘鍚湭瑙i噴瀛楄妭嫻? 緙栫爜涓諱綋浠ュ尮閰嶇幇瀛樼殑娑堟伅鏍煎紡銆?br />
· XMLMessage: 鍖呭惈XML鍐呭銆傛墿灞昑extMessage,XMLMessage 綾誨瀷鐨勪嬌鐢紝浣垮緱娑堟伅榪囨護(hù)闈炲父渚垮埄銆?br />
3. 娑堟伅紜妯″紡
闈炰簨鍔℃т細(xì)璇濅腑錛屽簲鐢ㄧ▼搴忓垱寤虹殑浼?xì)璇濇? 縐嶇‘璁ゆā寮?鑰屽湪浜嬪姟鎬т細(xì)璇濅腑錛岀‘璁ゆā寮忚蹇界暐銆?br />
浜旂紜妯″紡璇存槑:
· AUTO_ACKNOWLEDGE錛氳嚜鍔ㄧ‘璁ゆā寮忋備竴鏃︽帴鏀舵柟搴旂敤紼嬪簭鐨勬柟娉曡皟鐢ㄤ粠澶勭悊娑堟伅澶勮繑鍥烇紝浼?xì)璇濆璞兗?xì)紜娑堟伅鐨勬帴鏀躲?br />
· CLIENT_ACKNOWLEDGE錛氬鎴風(fēng)紜妯″紡銆備細(xì)璇濆璞′緷璧栦簬搴旂敤紼嬪簭瀵硅鎺ユ敹鐨勬秷鎭皟鐢ㄤ竴涓猘cknowledge()鏂規(guī)硶銆備竴鏃﹁繖涓柟娉曡璋冪敤錛屼細(xì)璇濅細(xì)紜鏈鍚庝竴嬈$‘璁や箣鍚庢墍鏈夋帴鏀跺埌鐨勬秷鎭傝繖縐嶆ā寮忓厑璁稿簲鐢ㄧ▼搴忎互涓涓皟鐢ㄦ潵鎺ユ敹錛屽鐞嗗茍紜涓鎵規(guī)秷鎭傛敞鎰忥細(xì)鍦ㄧ鐞嗘帶鍒跺彴涓紝濡傛灉榪炴帴宸ュ巶鐨凙cknowledge Policy錛堢‘璁ゆ柟閽堬級(jí)灞炴ц璁劇疆涓?Previous"錛堟彁鍓嶏級(jí)錛屼絾鏄綘甯屾湜涓轟竴涓粰瀹氱殑浼?xì)璇澕嫯璁ゆ墍鏈夋帴鏀跺埌鐨勬秷鎭紝閭d箞灝辯敤鏈鍚庝竴鏉℃秷鎭潵璋冪敤acknowledge()鏂規(guī)硶銆?br />
· DUPS_OK_ACKNOWLEDGE錛氬厑璁稿壇鏈殑紜妯″紡銆備竴鏃︽帴鏀舵柟搴旂敤紼嬪簭鐨勬柟娉曡皟鐢ㄤ粠澶勭悊娑堟伅澶勮繑鍥烇紝浼?xì)璇濆璞兗?xì)紜娑堟伅鐨勬帴鏀訛紱鑰屼笖鍏佽閲嶅紜銆傚湪闇瑕佽冭檻璧勬簮浣跨敤鏃訛紝榪欑妯″紡闈炲父鏈夋晥銆傛敞鎰忥細(xì)濡傛灉浣犵殑搴旂敤紼嬪簭鏃犳硶澶勭悊閲嶅鐨勬秷鎭殑璇濓紝浣犲簲璇ラ伩鍏嶄嬌鐢ㄨ繖縐嶆ā寮忋傚鏋滃彂閫佹秷鎭殑鍒濆鍖栧皾璇曞け璐ワ紝閭d箞閲嶅鐨勬秷鎭彲浠ヨ閲嶆柊鍙戦併?br />
· NO_ACKNOWLEDGE錛氫笉紜妯″紡銆備笉紜鏀跺埌鐨勬秷鎭槸闇瑕佺殑銆傛秷鎭彂閫佺粰涓涓狽O_ACKNOWLEDGE 浼?xì)璇濆悗锛屽畠浠細(xì)琚玏ebLogic 鏈嶅姟鍣ㄧ珛鍗沖垹闄ゃ傚湪榪欑妯″紡涓嬶紝灝嗘棤娉曢噸鏂拌幏寰楀凡鎺ユ敹鐨勬秷鎭紝鑰屼笖鍙兘瀵艱嚧涓嬮潰鐨勭粨鏋滐細(xì)1. 娑堟伅鍙兘涓㈠け錛涘拰錛堟垨鑰咃級(jí)鍙︿竴縐嶆儏鍐碉細(xì)2. 濡傛灉鍙戦佹秷鎭殑鍒濆鍖栧皾璇曞け璐ワ紝浼?xì)鍑虹幇閲嶅娑堟伅琚彂閫佺殑鎯呭喌銆?br />
· MULTICAST_NO_ACKNOWLEDGE錛欼P緇勬挱涓嬬殑涓嶇‘璁ゆā寮忥紝鍚屾牱鏃犻渶紜銆傚彂閫佺粰涓涓狹ULTICAST_NO_ACKNOWLEDGE浼?xì)璇濈殑娑堟伅锛?浼?xì)鍏变韩涔嬪墠鎵榪扮殑NO_ACKNOWLEDGE 紜妯″紡涓鏍風(fēng)殑鐗瑰緛銆傝繖縐嶆ā寮忔敮鎸佸笇鏈涢氳繃IP 緇勬挱鏂瑰紡榪涜娑堟伅閫氫俊鐨勫簲鐢ㄧ▼搴忥紝鑰屼笖鏃犻渶渚濊禆浼?xì)璇澕嫯璁ゆ彁渚涚殑鏈嶅姟璐ㄩ噺銆傛敞鎰忥細(xì)濡傛灉浣犵殑搴旂敤紼嬪簭鏃犳硶澶勭悊娑堟伅鐨勪涪澶辨垨鑰呴噸澶嶏紝閭d箞浣犲簲璇ラ伩鍏嶄嬌鐢ㄨ繖縐嶆ā寮忋傚鏋滃彂閫佹秷鎭殑鍒濆鍖栧皾璇曞け璐ョ殑璇濓紝閲嶅鐨勬秷鎭彲鑳戒細(xì)琚啀嬈″彂閫併?br />
娉細(xì)鍦ㄤ笂琛ㄧ殑5 縐嶇‘璁ゆā寮忎腑錛孉UTO_ACKNOWLEDGE 錛孌UPS_OK_ACKNOWLEDGE 鍜?br />
CLIENT_ACKNOWLEDGE 鏄疛MS 瑙勮寖瀹氫箟鐨勶紝NO_ACKNOWLEDGE 鍜孧ULTICAST_NO_ACKNOWLEDGE鏄疻ebLogic JMS 鎻愪緵鐨勩?br />
涓? 閰嶇疆JMS
1. 鍒涘緩榪炴帴宸ュ巶
(1) 鍚姩WebLogic Server8.1,鐧誨綍鎺у埗鍙?閫変腑JMS Connection Factories鑺傜偣,鐐瑰嚮鍙寵竟鐨? Configure a new JMS Connection Factory...";

(2) 濉啓榪炴帴宸ュ巶鐨勫悕縐癝endJMSFactory鍜孞NDI鍚嶇ОSendJMSFactory,鐐瑰嚮"Create";

(3) 鍕句笂"myserver",灝哠endJMSFactory搴旂敤鍒癿yserver;

2. 瀹氫箟鍚庡瀛樺偍
(1) 閫変腑JMS Stores鑺傜偣,鐐瑰嚮鍙寵竟鐨? Configure a new JMS Connection Factory...";

(2) 濉啓鏂囦歡鍚庡瀛樺偍鐨勫悕縐癝endFileStore鍜岀洰褰旸irectionary E:\BEA\user_projects\domains\mydomain\sendfilestore,鐐瑰嚮"Create".

3. 鍒涘緩JMS鏈嶅姟鍣?br />
(1) 閫変腑JMS Servers鑺傜偣,鐐瑰嚮鍙寵竟鐨? Configure a new JMSServer...";

(2) 濉啓JMS鏈嶅姟鍣ㄧ殑鍚嶇ОSendJMSServer鍜孭aging Store璁句負(fù)" SendFileStore",鐐瑰嚮"Create";

(3) Target閫変腑"myserver",灝哠endJMSServer搴旂敤鍒癿yserver.

4. 鍒涘緩娑堟伅闃熷垪
(1) 灞曞紑"SendJMSServer"鑺傜偣,鐐瑰嚮" Configure a new JMS Queue...";

(2) 濉啓娑堟伅闃熷垪鐨勫悕縐癝endJMSQueue鍜孞NDI鍚嶇ОSendJMSQueue,鐐瑰嚮"Create";

鍥? JMS搴旂敤紼嬪簭
涓涓?JMS 搴旂敤紼嬪簭鐢變笅鍒楀厓绱犵粍鎴愶細(xì)
· JMS 瀹㈡埛鏈恒?鐢?JMS API 鍙戦佸拰鎺ユ敹娑堟伅鐨?Java 紼嬪簭銆?br />
· 闈?JMS錛圢on-JMS錛夊鎴鋒満銆?璁よ瘑鍒拌繖涓鐐瑰緢閲嶈 - 鏃х殑紼嬪簭緇忓父鎴愪負(fù)鏁翠釜 JMS 搴旂敤紼嬪簭鐨勪竴閮ㄥ垎錛岃屼笖瀹冧滑鐨勫寘鍚簲璇ュ湪璁捐鏃墮鍏堣冭檻銆?br />
· 娑堟伅銆?鍦?JMS 鍜岄潪 JMS 瀹㈡埛鏈轟箣闂翠氦鎹㈢殑娑堟伅鐨勬牸寮忓拰鍐呭鏄?JMS 搴旂敤紼嬪簭璁捐鎵蹇呴』鑰冭檻鐨勯儴鍒嗐?br />
· JMS 渚涘簲鍟嗐備緵搴斿晢蹇呴』鎻愪緵鐗瑰畾浜庡叾 MOM 浜у搧鐨勫叿浣撶殑瀹炵幇銆?br />
· 鍙楃瀵硅薄銆?娑堟伅浼犻掔郴緇熶緵搴斿晢鐨勭鐞嗗憳鍒涘緩浜嗕竴涓璞★紝瀹冪嫭绔嬩簬渚涘簲鍟嗕笓鏈夌殑鎶鏈傚寘鎷繛鎺ュ伐鍘侰onnectionFactory鍜岀洰鐨凞estination銆?br />
涓縐嶅吀鍨嬬殑 JMS 紼嬪簭闇瑕佺粡榪囦笅鍒楁楠ゆ墠鑳藉紑濮嬫秷鎭駭鐢熷拰浣跨敤:
· 閫氳繃 JNDI 鏌ユ壘 ConnectionFactory銆?br />
· 閫氳繃 JNDI 鏌ユ壘涓涓垨澶氫釜 Destination銆?
· 鐢?ConnectionFactory 鍒涘緩涓涓?Connection銆?
· 鐢?Connection 鍒涘緩涓涓垨澶氫釜 Session銆?
· 鐢?Session 鍜?Destination 鍒涘緩鎵闇鐨?MessageProducer 鍜?MessageConsumer銆?
· 鍚姩 Connection銆?
涓嬮潰鍒╃敤涓婇潰閰嶇疆鐨凧MS璧勬簮婕旂ず鐐瑰鐐規(guī)秷鎭彂閫佸拰鎺ユ敹鐨勮繃紼嬨?br />
浜? 璁捐娑堟伅鍙戦佺
1. 浣跨敤鐨凧MS璧勬簮
鏈嶅姟鍣║RL: t3://localhost:80
榪炴帴宸ュ巶: SendJMSFactory
闃熷垪: SendJMSQueue
2. 璁捐姝ラ
· 鍒濆鍖朖NDI Tree
Hashtable env = new Hashtable();
env.put(Context.INITIAL_CONTEXT_FACTORY, JNDI_FACTORY);
env.put(Context.PROVIDER_URL, PROVIDER_URL);
return new InitialContext(env);
· lookup ConnectionFactory
qconFactory = (QueueConnectionFactory) ctx.lookup(JMS_FACTORY);
· lookup Destination
queue = (Queue) ctx.lookup(queueName);
· 鐢?ConnectionFactory 鍒涘緩Connection
qcon = qconFactory.createQueueConnection();
· 鐢?Connection 鍒涘緩涓涓猄ession
qsession = qcon.createQueueSession(false, Session.AUTO_ACKNOWLEDGE);
· 鐢?Session 鍜?Destination 鍒涘緩MessageProducer
qsender = qsession.createSender(queue);
· 鍚姩 Connection銆?br />
qcon.start();
· 鍙戦佹秷鎭?br />
msg = qsession.createTextMessage();
msg.setText(message);
qsender.send(msg);
3. 婧愪唬鐮?br />
package jmssample;
import java.util.Hashtable;
import javax.jms.*;
import javax.naming.Context;
import javax.naming.InitialContext;
import javax.naming.NamingException;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
/** This example shows how to establish a connection
* and send messages to the JMS queue. The classes in this
* package operate on the same JMS queue. Run the classes together to
* witness messages being sent and received, and to browse the queue
* for messages. The class is used to send messages to the queue.
*
* @author Copyright (c) 1999-2003 by BEA Systems, Inc. All Rights Reserved.
*/
public class QueueSend
{
// Defines the JNDI context factory.
public final static String JNDI_FACTORY="weblogic.jndi.WLInitialContextFactory";
// Defines the JNDI provider url.
public final static String PROVIDER_URL=" t3://localhost:80";
// Defines the JMS connection factory for the queue.
public final static String JMS_FACTORY="SendJMSFactory";
// Defines the queue.
public final static String QUEUE="SendJMSQueue";
private QueueConnectionFactory qconFactory;
private QueueConnection qcon;
private QueueSession qsession;
private QueueSender qsender;
private Queue queue;
private TextMessage msg;
/**
* Creates all the necessary objects for sending
* messages to a JMS queue.
*
* @param ctx JNDI initial context
* @param queueName name of queue
* @exception NamingException if operation cannot be performed
* @exception JMSException if JMS fails to initialize due to internal error
*/
public void init(Context ctx, String queueName)
throws NamingException, JMSException
{
qconFactory = (QueueConnectionFactory) ctx.lookup(JMS_FACTORY);
qcon = qconFactory.createQueueConnection();
qsession = qcon.createQueueSession(false, Session.AUTO_ACKNOWLEDGE);
queue = (Queue) ctx.lookup(queueName);
qsender = qsession.createSender(queue);
msg = qsession.createTextMessage();
qcon.start();
}
/**
* Sends a message to a JMS queue.
*
* @param message message to be sent
* @exception JMSException if JMS fails to send message due to internal error
*/
public void send(String message) throws JMSException {
msg.setText(message);
qsender.send(msg);
}
/**
* Closes JMS objects.
* @exception JMSException if JMS fails to close objects due to internal error
*/
public void close() throws JMSException {
qsender.close();
qsession.close();
qcon.close();
}
/** main() method.
*
* @param args WebLogic Server URL
* @exception Exception if operation fails
*/
public static void main(String[] args) throws Exception {
InitialContext ic = getInitialContext();
QueueSend qs = new QueueSend();
qs.init(ic, QUEUE);
readAndSend(qs);
qs.close();
}
private static void readAndSend(QueueSend qs)
throws IOException, JMSException
{
BufferedReader msgStream = new BufferedReader(new InputStreamReader(System.in));
String line=null;
boolean quitNow = false;
do {
System.out.print("Enter message (\"quit\" to quit): ");
line = msgStream.readLine();
if (line != null && line.trim().length() != 0) {
qs.send(line);
System.out.println("JMS Message Sent: "+line+"\n");
quitNow = line.equalsIgnoreCase("quit");
}
} while (! quitNow);
}
private static InitialContext getInitialContext()
throws NamingException
{
Hashtable env = new Hashtable();
env.put(Context.INITIAL_CONTEXT_FACTORY, JNDI_FACTORY);
env.put(Context.PROVIDER_URL, PROVIDER_URL);
return new InitialContext(env);
}
}
鍏? 璁捐娑堟伅鎺ユ敹绔?br />
1. 浣跨敤鐨凧MS璧勬簮
鏈嶅姟鍣║RL: t3://localhost:80
榪炴帴宸ュ巶: SendJMSFactory
闃熷垪: SendJMSQueue
2. 璁捐姝ラ
· 鍒濆鍖朖NDI Tree
Hashtable env = new Hashtable();
env.put(Context.INITIAL_CONTEXT_FACTORY, JNDI_FACTORY);
env.put(Context.PROVIDER_URL, PROVIDER_URL);
return new InitialContext(env);
· lookup ConnectionFactory
qconFactory = (QueueConnectionFactory) ctx.lookup(JMS_FACTORY);
· lookup Destination
queue = (Queue) ctx.lookup(queueName);
· 鐢?ConnectionFactory 鍒涘緩Connection
qcon = qconFactory.createQueueConnection();
· 鐢?Connection 鍒涘緩涓涓猄ession
qsession = qcon.createQueueSession(false, Session.AUTO_ACKNOWLEDGE);
· 鐢?Session 鍜?Destination 鍒涘緩MessageConsumer
qreceiver = qsession.createReceiver(queue);
· 璁劇疆鐩戝惉
qreceiver.setMessageListener(this);
· 鍚姩 Connection
qcon.start();
3. 婧愪唬鐮?br />
package jmssample;
import java.util.Hashtable;
import javax.jms.*;
import javax.naming.Context;
import javax.naming.InitialContext;
import javax.naming.NamingException;
import java.util.Hashtable;
import javax.jms.*;
import javax.naming.Context;
import javax.naming.InitialContext;
import javax.naming.NamingException;
/**
* This example shows how to establish a connection to
* and receive messages from a JMS queue. The classes in this
* package operate on the same JMS queue. Run the classes together to
* witness messages being sent and received, and to browse the queue
* for messages. This class is used to receive and remove messages
* from the queue.
*
* @author Copyright (c) 1999-2003 by BEA Systems, Inc. All Rights Reserved.
*/
public class QueueReceive implements MessageListener
{
// Defines the JNDI context factory.
public final static String JNDI_FACTORY="weblogic.jndi.WLInitialContextFactory";
// Defines the JNDI provider url.
public final static String PROVIDER_URL=" t3://localhost:80";
// Defines the JMS connection factory for the queue.
public final static String JMS_FACTORY="SendJMSFactory";
// Defines the queue.
public final static String QUEUE="SendJMSQueue";
private QueueConnectionFactory qconFactory;
private QueueConnection qcon;
private QueueSession qsession;
private QueueReceiver qreceiver;
private Queue queue;
private boolean quit = false;
/**
* Message listener interface.
* @param msg message
*/
public void onMessage(Message msg)
{
try {
String msgText;
if (msg instanceof TextMessage) {
msgText = ((TextMessage)msg).getText();
} else {
msgText = msg.toString();
}
System.out.println("Message Received: "+ msgText );
if (msgText.equalsIgnoreCase("quit")) {
synchronized(this) {
quit = true;
this.notifyAll(); // Notify main thread to quit
}
}
} catch (JMSException jmse) {
jmse.printStackTrace();
}
}
/**
* Creates all the necessary objects for receiving
* messages from a JMS queue.
*
* @param ctx JNDI initial context
* @param queueName name of queue
* @exception NamingException if operation cannot be performed
* @exception JMSException if JMS fails to initialize due to internal error
*/
public void init(Context ctx, String queueName)
throws NamingException, JMSException
{
qconFactory = (QueueConnectionFactory) ctx.lookup(JMS_FACTORY);
qcon = qconFactory.createQueueConnection();
qsession = qcon.createQueueSession(false, Session.AUTO_ACKNOWLEDGE);
queue = (Queue) ctx.lookup(queueName);
qreceiver = qsession.createReceiver(queue);
qreceiver.setMessageListener(this);
qcon.start();
}
/**
* Closes JMS objects.
* @exception JMSException if JMS fails to close objects due to internal error
*/
public void close()throws JMSException
{
qreceiver.close();
qsession.close();
qcon.close();
}
/**
* main() method.
*
* @param args WebLogic Server URL
* @exception Exception if execution fails
*/
public static void main(String[] args) throws Exception {
InitialContext ic = getInitialContext();
QueueReceive qr = new QueueReceive();
qr.init(ic, QUEUE);
System.out.println("JMS Ready To Receive Messages (To quit, send a \"quit\" message).");
// Wait until a "quit" message has been received.
synchronized(qr) {
while (! qr.quit) {
try {
qr.wait();
} catch (InterruptedException ie) {}
}
}
qr.close();
}
private static InitialContext getInitialContext()
throws NamingException
{
Hashtable env = new Hashtable();
env.put(Context.INITIAL_CONTEXT_FACTORY, JNDI_FACTORY);
env.put(Context.PROVIDER_URL, PROVIDER_URL);
return new InitialContext(env);
}
}
涓? 嫻嬭瘯娑堟伅鍙戦佸拰鎺ユ敹
1. 璁劇疆WebLogic Classpath;
2. 杞埌鍙戦佹帴鏀剁▼搴忕洰褰曠紪璇戞枃浠?

3. 鎵ц鎺ュ彈紼嬪簭;
4. 鎵撳紑鍙︿竴紿楀彛,鎵ц鍙戦佺▼搴?

5. 杈撳叆鍙戦佹秷鎭?quit",鎺ユ敹紼嬪簭緇撴潫.

鎬葷粨
鏈枃鍏堢畝瑕佷粙緇嶄簡JMS鐨勪竴浜涘熀鏈蹇?緇ц屽紩鍏ヤ簡WebLogic JMS Server鐨勪綋緋葷粨鏋勫拰鐩稿叧鐗規(guī)с傚湪姝ゅ熀紜涔嬩笂,鍥炬枃騫惰寕鍦拌榪頒簡JMS鍦╓ebLogic Server 8.1涓婄殑閰嶇疆銆傛渶鍚庡湪瑙e墫JMS搴旂敤紼嬪簭妗嗘灦鐨勫悓鏃?浠ョ偣瀵圭偣涓轟緥婕旂ず浜咼MS鐨勫彂閫佹帴鏀舵秷鎭祦紼嬨?nbsp;