锘??xml version="1.0" encoding="utf-8" standalone="yes"?>亚洲日本中文字幕,亚洲视频精品在线观看,亚洲不卡影院午夜在线观看http://www.tkk7.com/EvanLiu/浼戞伅錛屼紤鎭?/description>zh-cnSat, 10 May 2025 12:17:41 GMTSat, 10 May 2025 12:17:41 GMT60WebSphere涓婰inkageError瑙e喅鍔炴硶http://www.tkk7.com/EvanLiu/archive/2009/03/14/259752.htmlEvanLiuEvanLiuSat, 14 Mar 2009 12:26:00 GMThttp://www.tkk7.com/EvanLiu/archive/2009/03/14/259752.htmlhttp://www.tkk7.com/EvanLiu/comments/259752.htmlhttp://www.tkk7.com/EvanLiu/archive/2009/03/14/259752.html#Feedback1http://www.tkk7.com/EvanLiu/comments/commentRss/259752.htmlhttp://www.tkk7.com/EvanLiu/services/trackbacks/259752.html鐜錛歐ebSphere 6.l
JRE: WebSphere 6.1 JRE
欏圭洰闇姹傦細鐢⊿UN JDK6鑷甫鐨凧AX-WS鍒涘緩Web Service銆?鍏朵腑Server绔殑Web Service鎺ュ彛宸插彂甯冿紝鎴戣繖杈圭殑欏圭洰鐩存帴鏍規嵁瀵規柟鎻愪緵鐨刉SDL鍒涘緩Client銆?br /> 紕板埌鐨勯棶棰橈細
褰撹皟鐢╦avax.xml.ws.Service鐨勬瀯閫犳柟娉?Service(URL url, QName qName)鐨勬椂鍊欙紝鎶ラ敊濡備笅錛?br />
[3/14/09 14:51:53:750 CST] 0000002c SystemErr     R Caused by: java.lang.Throwable: java.lang.LinkageError: You are loading old SAAJ from jar:file:/C:/Program%20Files/IBM/SDP70/runtimes/base_v61/lib/j2ee.jar!/javax/xml/soap/MessageFactory.class
 at com.sun.xml.ws.api.SOAPVersion.<init>(SOAPVersion.java:184)
 at com.sun.xml.ws.api.SOAPVersion.<clinit>(SOAPVersion.java:83)
 at java.lang.J9VMInternals.initializeImpl(Native Method)
 at java.lang.J9VMInternals.initialize(J9VMInternals.java:177)
 at com.sun.xml.ws.api.BindingID.<clinit>(BindingID.java:318)
 ...(浠ヤ笅鐪佺暐300瀛?
Caused by: java.lang.Throwable: java.lang.NoSuchMethodError: javax/xml/soap/MessageFactory.newInstance(Ljava/lang/String;)Ljavax/xml/soap/MessageFactory;
 at com.sun.xml.ws.api.SOAPVersion.<init>(SOAPVersion.java:178)
 ... 21 more


涔熷氨鏄錛岀▼搴忓厛鍘昏鍙栦簡WebSphere 6.1鐨刯2ee.jar鍖呴噷鐨勭浉鍏崇被錛岃屾病鍘昏鍙栨垜浠湡姝h鐢ㄧ殑涓や釜SAAJ jar鍖咃細saaj-api.jar鍜宻aaj-impl.jar. 緇撴灉灝卞嚭閿欎簡銆?br />
IBM涓婃壘鍒扮殑鍘熷洜鍙婅В鍐沖姙娉曪細

濡備綍鍦╓ebSphere涓В鍐砵ar鍖呭啿紿?/a>

 

涓昏灝辨槸鎶奀lassloader mode浠庨粯璁ょ殑Parent_First鏀規垚Parent_Last錛岃紼嬪簭鍏堣鑷繁鐨刢lass鏂囦歡浠ュ強jar鍖呫?br /> 鎴戝氨鐓ф牱鐢昏懌鑺﹁緗簡銆傞『渚胯涓涓嬶紝鍏寵仈鍏變韓搴撳埌搴旂敤紼嬪簭錛屾垜鏃犺濡備綍閮藉仛涓嶆垚鍔熴傚叧闂瑼pplication,榪涘叆Application錛屽叧鑱斿叡浜簱錛屽叧鑱斿ソ浜嗭紝淇濆瓨鎴愬姛錛岄鍒板闈紝鍐嶈繘鍘伙紝鍏變韓搴撳張娌″叧鑱斾笂銆傝緗瓹lassloader mode鐨勬椂鍊欎篃閬囧埌浜嗚繖鏍風殑闂錛屼絾鏈緇堣繕鏄揩浣垮叾璁╂垜淇濆瓨浜嗐傚叡浜簱灝變笉綆$悊錛屽弽姝f棤鎵璋擄紝鍙鍔犺澆欏哄簭鍙樹簡灝辨垚銆?br /> 浣嗕簨瀹炰笂錛屾垜鐨勬媴蹇冩垚涓轟簡浜嬪疄錛氱▼搴忓惎鍔ㄥけ璐ワ紝铏界劧璧鋒潵浜嗭紝浣嗗彧璺戜簡涓灝忛儴鍒嗕唬鐮侊紝鍚庨潰鐨勬湇鍔¢兘娌¤搗鏉ャ傛兂鎯充篃鏄紝紼嬪簭閭d箞澶э紝鐢ㄥ埌鐨刯ar鍖呴偅涔堝錛屾敼浜咰lassloader mode錛屼竴鍒囧叏閮戒貢濂椾簡...

涔嬪悗錛屾煡鐪婥onsole-->TroubleShooting-->Class Loader View錛屽彂鐜扮郴緇熸渶寮濮嬪姞杞界殑鏄疻ebSphere涓嬬殑ext鐩綍涓嬬殑jar鍖?/p>

銆?/h1>

鎵浠ュ氨鎶曟満鍙栧閥錛屾妸鎴戣鐢ㄧ殑涓や釜saaj鍖呮斁鍒頒簡ext鐩綍涓嬶紝閲嶅惎錛岀▼搴忚繍琛屾垚鍔?br /> 褰撶劧錛岃繖涓嶆槸涓涓ソ鐨勮В鍐沖姙娉曪紝闃夸笁閭i噷鑳戒笉鑳介氬緱榪囪繕鏄釜闂





EvanLiu 2009-03-14 20:26 鍙戣〃璇勮
]]>ThreadLocal瀛︿範http://www.tkk7.com/EvanLiu/archive/2009/02/18/255272.htmlEvanLiuEvanLiuWed, 18 Feb 2009 08:28:00 GMThttp://www.tkk7.com/EvanLiu/archive/2009/02/18/255272.htmlhttp://www.tkk7.com/EvanLiu/comments/255272.htmlhttp://www.tkk7.com/EvanLiu/archive/2009/02/18/255272.html#Feedback1http://www.tkk7.com/EvanLiu/comments/commentRss/255272.htmlhttp://www.tkk7.com/EvanLiu/services/trackbacks/255272.html闃呰鍏ㄦ枃

EvanLiu 2009-02-18 16:28 鍙戣〃璇勮
]]>
java.util.ConcurrentModificationExceptionhttp://www.tkk7.com/EvanLiu/archive/2008/08/31/224453.htmlEvanLiuEvanLiuSun, 31 Aug 2008 11:44:00 GMThttp://www.tkk7.com/EvanLiu/archive/2008/08/31/224453.htmlhttp://www.tkk7.com/EvanLiu/comments/224453.htmlhttp://www.tkk7.com/EvanLiu/archive/2008/08/31/224453.html#Feedback3http://www.tkk7.com/EvanLiu/comments/commentRss/224453.htmlhttp://www.tkk7.com/EvanLiu/services/trackbacks/224453.html List list = ...;
for(Iterator iter = list.iterator(); iter.hasNext();) {
    Object obj = iter.next();
    ...
    if(***) {
        list.remove(obj);
    }
}
鍦ㄦ墽琛屼簡remove鏂規硶涔嬪悗錛屽啀鍘繪墽琛屽驚鐜紝iter.next()鐨勬椂鍊欙紝鎶ava.util.ConcurrentModificationException(褰撶劧錛屽鏋渞emove鐨勬槸鏈鍚庝竴鏉★紝灝變笉浼氬啀鍘繪墽琛宯ext()鎿嶄綔浜?

涓嬮潰鏉ョ湅涓涓嬫簮鐮?br /> public interface Iterator<E> {
    boolean hasNext();
    E next();
    void remove();
}

public interface Collection<E> extends Iterable<E> {
    ...
    Iterator<E> iterator();
    boolean add(E o);
    boolean remove(Object o);
    ...
}

榪欓噷鏈変袱涓猺emove鏂規硶

鎺ヤ笅鏉ユ潵鐪嬬湅AbstractList
public abstract class AbstractList<E> extends AbstractCollection<E> implements List<E> { 
//AbstractCollection鍜孡ist閮界戶鎵夸簡Collection
    protected transient int modCount = 0;
    private class Itr implements Iterator<E> {  //鍐呴儴綾籌tr
        int cursor = 0;
        int lastRet = -1;
        int expectedModCount = modCount;

        public boolean hasNext() {
            return cursor != size();
        }

        public E next() {
            checkForComodification();  //鐗瑰埆娉ㄦ剰榪欎釜鏂規硶
            try {
                E next = get(cursor);
                lastRet = cursor++;
                return next;
            } catch(IndexOutOfBoundsException e) {
                checkForComodification();
                throw new NoSuchElementException();
            }
        }

        public void remove() {
            if (lastRet == -1)
                throw new IllegalStateException();
            checkForComodification();

            try {
                AbstractList.this.remove(lastRet);  //鎵цremove瀵硅薄鐨勬搷浣?br />                 if (lastRet < cursor)
                    cursor--;
                lastRet = -1;
                expectedModCount = modCount;  //閲嶆柊璁劇疆浜唀xpectedModCount鐨勫鹼紝閬垮厤浜咰oncurrentModificationException鐨勪駭鐢?br />             } catch(IndexOutOfBoundsException e) {
                throw new ConcurrentModificationException();
            }
        }

        final void checkForComodification() {
            if (modCount != expectedModCount)  //褰揺xpectedModCount鍜宮odCount涓嶇浉絳夋椂錛屽氨鎶涘嚭ConcurrentModificationException
                throw new ConcurrentModificationException();
        }
    }   
}


remove(Object o)鍦ˋrrayList涓疄鐜板涓嬶細
public boolean remove(Object o) {
    if (o == null) {
            for (int index = 0; index < size; index++)
        if (elementData[index] == null) {
            fastRemove(index);
            return true;
        }
    } else {
        for (int index = 0; index < size; index++)
            if (o.equals(elementData[index])) {
                fastRemove(index);
                return true;
            }
    }
    return false;
}
private void fastRemove(int index) {
    modCount++;  //鍙鍔犱簡modCount
    ....
}

鎵浠ワ紝浜х敓ConcurrentModificationException鐨勫師鍥犲氨鏄細
鎵цremove(Object o)鏂規硶涔嬪悗錛宮odCount鍜宔xpectedModCount涓嶇浉絳変簡銆傜劧鍚庡綋浠g爜鎵ц鍒皀ext()鏂規硶鏃訛紝鍒ゆ柇浜哻heckForComodification()錛屽彂鐜頒袱涓暟鍊間笉絳夛紝灝辨姏鍑轟簡璇xception銆?br /> 瑕侀伩鍏嶈繖涓狤xception錛屽氨搴旇浣跨敤remove()鏂規硶銆?/strong>

榪欓噷鎴戜滑灝變笉鐪媋dd(Object o)鏂規硶浜嗭紝涔熸槸鍚屾牱鐨勫師鍥狅紝浣嗘病鏈夊搴旂殑add()鏂規硶銆備竴鑸槢錛屽氨鍙﹀緩涓涓狶ist浜?br />

涓嬮潰鏄綉涓婄殑鍏朵粬瑙i噴錛屾洿鑳戒粠鏈川涓婅В閲婂師鍥狅細
Iterator 鏄伐浣滃湪涓涓嫭绔嬬殑綰跨▼涓紝騫朵笖鎷ユ湁涓涓?mutex 閿併?Iterator 琚垱寤轟箣鍚庝細寤虹珛涓涓寚鍚戝師鏉ュ璞$殑鍗曢摼绱㈠紩琛紝褰撳師鏉ョ殑瀵硅薄鏁伴噺鍙戠敓鍙樺寲鏃訛紝榪欎釜绱㈠紩琛ㄧ殑鍐呭涓嶄細鍚屾鏀瑰彉錛屾墍浠ュ綋绱㈠紩鎸囬拡寰鍚庣Щ鍔ㄧ殑鏃跺欏氨鎵句笉鍒拌榪唬鐨勫璞★紝鎵浠ユ寜鐓?fail-fast 鍘熷垯 Iterator 浼氶┈涓婃姏鍑?java.util.ConcurrentModificationException 寮傚父銆?br /> 鎵浠?Iterator 鍦ㄥ伐浣滅殑鏃跺欐槸涓嶅厑璁歌榪唬鐨勫璞¤鏀瑰彉鐨勩備絾浣犲彲浠ヤ嬌鐢?Iterator 鏈韓鐨勬柟娉?remove() 鏉ュ垹闄ゅ璞★紝 Iterator.remove() 鏂規硶浼氬湪鍒犻櫎褰撳墠榪唬瀵硅薄鐨勫悓鏃剁淮鎶ょ儲寮曠殑涓鑷存с?br />
http://gceclub.sun.com.cn/yuanchuang/week-14/iterator.html



EvanLiu 2008-08-31 19:44 鍙戣〃璇勮
]]>
鐗╁寲瑙嗗浘(Materialized View)鍩虹http://www.tkk7.com/EvanLiu/archive/2008/08/09/218295.htmlEvanLiuEvanLiuSat, 09 Aug 2008 07:53:00 GMThttp://www.tkk7.com/EvanLiu/archive/2008/08/09/218295.htmlhttp://www.tkk7.com/EvanLiu/comments/218295.htmlhttp://www.tkk7.com/EvanLiu/archive/2008/08/09/218295.html#Feedback0http://www.tkk7.com/EvanLiu/comments/commentRss/218295.htmlhttp://www.tkk7.com/EvanLiu/services/trackbacks/218295.html鏁版嵁鐨勭殑鏈湴鍓湰錛屾垨鑰呯敤鏉ョ敓鎴愬熀浜庢暟鎹〃姹傚拰鐨勬眹鎬昏〃銆傜墿鍖栬鍥懼瓨鍌ㄥ熀浜庤繙紼嬭〃鐨勬暟鎹紝涔熷彲浠ョО涓哄揩鐓с?br /> 鎵浠ョ墿鍖栬鍥懼拰瑙嗗浘鐨勬渶澶у尯鍒槸錛岀墿鍖栬鍥懼湪鏈湴淇濆瓨鏁版嵁錛岃岃鍥懼彧鏄竴浜汼QL璇彞鑰屽凡銆傝鍥劇殑濂藉鏄畝鍖栦嬌鐢ㄨ繃紼嬶紝鐗╁寲瑙嗗浘鐨勫ソ澶勬彁楂樻ц兘錛屽綋鐒朵篃鍙互綆鍖栦嬌鐢ㄨ繃紼嬨傛彁楂樻煡璇㈤熷害鐨勪唬浠峰氨鏄斁寮冧竴瀹氱殑鏁版嵁瀹炴椂鎬с?br /> 鐗╁寲瑙嗗浘鍙互鏌ヨ琛紝瑙嗗浘鍜屽叾瀹冪殑鐗╁寲瑙嗗浘銆?br />
鍒涘緩鐗╁寲瑙嗗浘錛屽簲鍏堝湪瀵逛簬鐨勫熀紜琛ㄤ笂鍒涘緩瀛樺偍鐨勬棩蹇楃┖闂達細
create materialized view log on tablex
tablespace mytestspace           -- 鏃ュ織絀洪棿
with rowid;

鐒跺悗鍐嶅垱寤虹墿鍖栬鍥撅細
create materialized vew myfirstmv
on prebuild tabley                   -- 灝嗙墿鍖栬鍥懼緩绔嬪湪涓涓凡緇忓瓨鍦ㄧ殑琛ㄤ笂錛屼篃鍙笉鍔犺繖鍙?br /> tablespace mytestspace
build deffered                         -- buld clause瀛愬彞錛宒effered琛ㄧず鍒涘緩鏃朵笉鐢熸垚鏁版嵁錛岄粯璁や負build immediate
refresh fast                             -- refresh 瀛愬彞銆俧ast琛ㄧず鍙埛鏂頒笂嬈″埛鏂頒箣鍚庢墍浣滅殑淇敼銆傜浉瀵逛負complete銆傞粯璁や負force
           on commit                   -- 瀵瑰熀琛ㄧ殑DML鎿嶄綔鎻愪氦鐨勫悓鏃惰繘琛屽埛鏂般傞粯璁や負on demand
           start with to_date('2008-08-08 20:00:00', 'yyyy-mm-dd hh24:mi:ss')             --絎竴嬈″埛鏂版椂闂?br />            next TRUNC(SYSDATE+1)+18/24          --鍒鋒柊鏃墮棿闂撮殧銆傛瘡涓ゅぉ鍒鋒柊涓嬈★紝鏃墮棿涓轟笅鍗?鐐?br /> as
        select x1, x2, x3 from tablex

          
鍒犻櫎鏃訛紝鍒犻櫎鐗╁寲瑙嗗浘鍜岀墿鍖栬鍥炬棩蹇楁棤欏哄簭瑕佹眰錛屼笉榪囧厛鍒犻櫎鏃ュ織錛屼細浣垮垹闄ょ墿鍖栬鍥劇殑閫熷害鍔犲揩寰堝銆?br /> 濡傛灉鐗╁寲瑙嗗浘鏃ュ織瀛樺湪鐨勮瘽錛岀墿鍖栬鍥懼湪鍒犻櫎鐨勬椂鍊欙紝闇瑕佸皢鐗╁寲瑙嗗浘鏃ュ織涓墍鏈夊綋鍓嶇墿鍖栬鍥鵑渶瑕佸埛鏂扮殑璁板綍鍒犻櫎鎺夈傝繖鎰忓懗鐫涓涓狣DL鐨勮鍙ヤ腑鍖呭惈鐫DML鐨勯儴鍒嗐?br />
浠ヤ笂閮芥病緇忚繃瀹為檯鎿嶄綔錛屼互鍚庢湁鏃墮棿鍐嶈


http://xznsoft.javaeye.com/blog/124000



EvanLiu 2008-08-09 15:53 鍙戣〃璇勮
]]>
JMS綆鍗曚笉瀹屽叏瀹炵幇http://www.tkk7.com/EvanLiu/archive/2008/08/03/219721.htmlEvanLiuEvanLiuSun, 03 Aug 2008 10:04:00 GMThttp://www.tkk7.com/EvanLiu/archive/2008/08/03/219721.htmlhttp://www.tkk7.com/EvanLiu/comments/219721.htmlhttp://www.tkk7.com/EvanLiu/archive/2008/08/03/219721.html#Feedback0http://www.tkk7.com/EvanLiu/comments/commentRss/219721.htmlhttp://www.tkk7.com/EvanLiu/services/trackbacks/219721.html
涓昏鐨勫嚑涓璞★細ConnectionFactory銆丆onnection銆丏estination銆丼ession銆丮essageProducer銆丮essageConsumer
鍏剁浉浜掑叧緋誨涓嬪浘錛?br />
1.PTP:
綆鍗曞洖欏?涓璞★細QueueConnectionFactory銆丵uequeConnection銆丵ueue銆丵ueueSession銆丵ueueSender銆丵ueueReceiver銆丵ueueBrowser
    1) Sender
    try {
        //鍏蜂綋鎬庝箞寰楀埌灝變笉鍐欎簡錛屽悇涓郴緇熻偗瀹氶兘涓嶄竴鏍鳳紝浣嗙粓絀墮兘鏄氳繃jdni鏉ヨ幏寰?br />         Context jndiContext = new InitialContext();
        QueueConnectionFactory factory = jndiContext.lookup("**Factory");
        Queue queue = jndiContext.lookup("**Queue");
        QueueConnection connection = factory.createQueueConnection();
        boolean transaction = true;
        QueueSession session = connection.createQueueSession(transaction , Session.AUTO_ACKNOWLEDGE);
        Message objMessage = session.createObjectMessage();  //鎴杝ession.createTextMessage("...");
        objMessage.setObject((Serializable)obj); //obj涓鴻浼犺緭鐨勫璞?br />         QueueSender sender = session.createSender(queue);
        publisher.setTimeToLive(timeout); //long timeout = ...
        connection.start();
        sender.send(objMessage);
        //or
        /**
        sender = session.createSender(null);
        sender.send(queue, message);
        */
        //濡傛灉涓嶇敤浜嗭紝灝辨敹鎷懼共鍑
        publisher.close();
        session.close();
        connection.close();
    } catch (JMSException e) {
        //TODO
    } finally {
        publisher = null;
        session = null;
        connection = null;
    }

    2) Receiver/Browser
        a.涓誨姩鎺ユ敹錛宻ynchronously
        try {
            QueueReceiver receiver = session.createReceiver(queue);
            receiver.receiveNoWait();
            /**
            QueueBrowser browser = session.createBrowser(queue); //QueueBrowser鍙細鍙栨秷鎭紝浣嗕笉浼氬彇璧版秷鎭?br />             Enumeration elements = browser.getEnumeration();
            while(elements.hasMoreElements) {
                Message message = elements.nextElement();
                ...
            }
            */
        } catch (JMSException e) {
            ...
        }

        b.娑堟伅渚﹀惉錛屼篃鏄渶涓昏鐨勫簲鐢紝asynchronously
        try {
            MessageListener myListener = new MyListener();
            QueueReceiver receiver = session.createReceiver(queue);
            receiver.setMessageListener(myListener);
            connection.start();
        } catch (JMSException e) {
            ...    
        }

        public class MyListener impelments MessageListner {
            public void onMessage(Message message) {
                if(message instanceof TextMessage) {
                    ...
                } else if (message instanceof ObjectMessage) {
                    ...
                } else {
                    ...
                }    
            }
        }


2.Pub/Sub:
綆鍗曞洖欏?涓璞★細TopicConnectionFactory銆乀opicConnection銆乀opic銆乀opicSession銆乀opicPublisher銆乀opicSubscriber
    1) Publisher
    try {
        //鍏蜂綋鎬庝箞寰楀埌灝變笉鍐欎簡錛屽悇涓郴緇熻偗瀹氶兘涓嶄竴鏍鳳紝浣嗙粓絀墮兘鏄氳繃jdni鏉ヨ幏寰?br />         Context jndiContext = new InitialContext();
        TopicConnectionFactory factory = jndiContext.lookup("**Factory");
        Topic topic = jndiContext.lookup("**Topic");
        TopicConnection connection = factory.createTopicConnection();
        TopicSession session = connection.createTopicSession(false, Session.AUTO_ACKNOWLEDGE);  //false琛ㄧず涓嶄嬌鐢ㄤ簨鍔?br />         Message objMessage = session.createObjectMessage();
        objMessage.setObject((Serializable)obj); //obj涓鴻浼犺緭鐨勫璞?br />         TopicPublisher publisher = session.createPublisher(topic);
        publisher.setTimeToLive(100000);
        connection.start();
        publisher.publish(message);
        //or
        /**
        publisher = session.createPublisher(null);
        publiser.publish(topic, message);
        */
        publisher.close();
        session.close();
        connection.close();
    } catch (JMSException e) {
        //TODO
    }


    2) Subscriber
        a.涓誨姩鎺ユ敹錛屾瘮濡備笂闈㈠彂閫佸畬鍚庯紝鎺ユ敹鍥炲簲娑堟伅錛岀浉褰撲簬鍚屾鎺ユ敹浜?br />         try {
            TopicSubscriber subscriber = session.createSubScriber(topic);
            message = subscriber.receiver(timeout); //long timeout = ...
            subscriber.close();
        } catch (JMSException e) {
            ...    
        }


        b.娑堟伅渚﹀惉錛宎synchronously
        try {
            ...
            TopicSubscriber subscriber = session.createSubScriber(topic);
            MessageListener listener = new MyListener();
            subscriber.setMessageListener(listener); //鍏抽敭鍦ㄤ簬榪欎釜listener
            connection.start();
        } catch (JMSException e) {
            ...
        }

        MyListener瀹炵幇鍚屼笂




EvanLiu 2008-08-03 18:04 鍙戣〃璇勮
]]>
JMS鍩烘湰姒傚康錛堣漿錛?/title><link>http://www.tkk7.com/EvanLiu/archive/2008/08/03/213934.html</link><dc:creator>EvanLiu</dc:creator><author>EvanLiu</author><pubDate>Sun, 03 Aug 2008 09:51:00 GMT</pubDate><guid>http://www.tkk7.com/EvanLiu/archive/2008/08/03/213934.html</guid><wfw:comment>http://www.tkk7.com/EvanLiu/comments/213934.html</wfw:comment><comments>http://www.tkk7.com/EvanLiu/archive/2008/08/03/213934.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.tkk7.com/EvanLiu/comments/commentRss/213934.html</wfw:commentRss><trackback:ping>http://www.tkk7.com/EvanLiu/services/trackbacks/213934.html</trackback:ping><description><![CDATA[<h3><span style="color: #3064ff;">1.JMS姒傝堪</span></h3> JAVA 娑堟伅鏈嶅姟(JMS)瀹氫箟浜咼ava 涓闂秷鎭腑闂翠歡鐨勬帴鍙c侸MS鍙槸鎺ュ彛錛屽茍娌℃湁緇欎簣瀹炵幇錛屽疄鐜癑MS鎺ュ彛鐨勬秷鎭腑闂翠歡縐頒負JMS Provider<br /> <br /> 娑堟伅涓棿浠舵彁渚涗紒涓氭暟鎹殑寮傛浼犺緭錛岄氳繃娑堟伅涓棿浠訛紝涓浜涘師鏈簰鐩稿绔嬬殑涓氬姟緇勪歡鍙互緇勫悎鎴愪竴涓彲闈犵殑銆佺伒媧葷殑緋葷粺銆備篃鍙互妯℃嫙瀹炵幇鍚屾浼犺緭錛屼絾鍏跺疄璐ㄤ粛鐒舵槸寮傛鐨勩?br /> <br /> <p>JMS 鏀寔涓ょ娑堟伅綾誨瀷PTP 錛圥oint-to-Point錛夊拰Pub/Sub錛圥ublish-Subscribe錛夛紝鍒嗗埆縐頒綔錛歅TP Domain 鍜孭ub/Sub Domain銆?br /> PTP鐨勪富瑕佺壒鐐規槸錛?br /> 1錛変竴鏉℃秷鎭彧鏈変竴涓嬌鐢ㄨ?br /> 2錛変笉瀛樺湪鏃墮棿闄愬埗<br /> Pub/Sub涓昏鐗圭偣鏈夛細<br /> 1錛変竴鏉℃秷鎭彲浠ユ湁澶氫釜浣跨敤鑰?br /> 2錛夊瓨鍦ㄦ椂闂撮檺鍒躲傝闃呰呭彲浠ヤ嬌鐢ㄦ寔涔呮柟寮忔潵璁㈤槄娑堟伅錛屼絾鏄篃浼氳繃鏈熸垨鑰呭彇娑堣闃?br /> </p> <p>榪欎袱縐嶆帴鍙i兘緇ф壙緇熶竴鐨凧MS Parent 鎺ュ彛錛孞MS 涓昏鎺ュ彛濡備笅鎵紺猴細</p> <div> <table border="1"> <colgroup><col><col><col></colgroup> <tbody> <tr> <td><strong>JMS Parent </strong></td> <td><strong>PTPDomain</strong></td> <td><strong>Pub/Sub Domain </strong></td> </tr> <tr> <td>ConnectionFactory</td> <td>QueueConnectionFactory</td> <td>TopicConnectionFactory</td> </tr> <tr> <td>Connection</td> <td>QueueConnection</td> <td>TopicConnection</td> </tr> <tr> <td>Destination</td> <td>Queue</td> <td>Topic</td> </tr> <tr> <td>Session</td> <td>QueueSession</td> <td>TopicSession</td> </tr> <tr> <td>MessageProducer</td> <td>QueueSender</td> <td>TopicPublisher</td> </tr> <tr> <td>MessageConsumer</td> <td>QueueReceiver,QueueBrowser</td> <td>TopicSubscriber</td> </tr> </tbody> </table> </div> <p>浠ヤ笅鏄榪欎簺鎺ュ彛鐨勭畝鍗曟弿榪幫細</p> <p>ConnectionFactory 錛氳繛鎺ュ伐鍘傦紝JMS 鐢ㄥ畠鍒涘緩榪炴帴</p> <p>Connection 錛欽MS 瀹㈡埛绔埌JMS Provider 鐨勮繛鎺?/p> <p>Destination 錛氭秷鎭殑鐩殑鍦?/p> <p>Session錛?涓涓彂閫佹垨鎺ユ敹娑堟伅鐨勭嚎紼?/p> <p>MessageProducer錛?鐢盨ession 瀵硅薄鍒涘緩鐨勭敤鏉ュ彂閫佹秷鎭殑瀵硅薄</p> <p>MessageConsumer錛?鐢盨ession 瀵硅薄鍒涘緩鐨勭敤鏉ユ帴鏀舵秷鎭殑瀵硅薄</p> <p><br /> </p> <h3><span style="color: #3064ff;">2.JMS娑堟伅妯″瀷</span></h3> <p>JMS 娑堟伅鐢變互涓嬪嚑閮ㄥ垎緇勬垚錛氭秷鎭ご錛屽睘鎬э紝娑堟伅浣撱?/p> <p><span><strong>娑堟伅澶?Header) </strong></span>-娑堟伅澶村寘鍚秷鎭殑璇嗗埆淇℃伅鍜岃礬鐢變俊鎭紝娑堟伅澶村寘鍚竴浜涙爣鍑嗙殑灞炴у錛欽MSDestination,JMSMessageID絳夈?/p> <div> <table border="1"> <colgroup><col><col></colgroup> <tbody> <tr> <td><strong>娑堟伅澶?/strong></td> <td><strong>鐢辮皝璁劇疆</strong></td> </tr> <tr> <td>JMSDestination</td> <td>send 鎴?publish 鏂規硶</td> </tr> <tr> <td>JMSDeliveryMode</td> <td>send 鎴?publish 鏂規硶</td> </tr> <tr> <td>JMSExpiration</td> <td>send 鎴?publish 鏂規硶</td> </tr> <tr> <td>JMSPriority</td> <td>send 鎴?publish 鏂規硶</td> </tr> <tr> <td>JMSMessageID</td> <td>send 鎴?publish 鏂規硶</td> </tr> <tr> <td>JMSTimestamp</td> <td>send 鎴?publish 鏂規硶</td> </tr> <tr> <td>JMSCorrelationID</td> <td>瀹㈡埛</td> </tr> <tr> <td>JMSReplyTo</td> <td>瀹㈡埛</td> </tr> <tr> <td>JMSType</td> <td>瀹㈡埛</td> </tr> <tr> <td>JMSRedelivered</td> <td>JMS Provider</td> </tr> </tbody> </table> </div> <p><strong>灞炴?Properties)</strong> -闄や簡娑堟伅澶翠腑瀹氫箟濂界殑鏍囧噯灞炴у錛孞MS鎻愪緵涓縐嶆満鍒跺鍔犳柊灞炴у埌娑堟伅澶翠腑錛岃繖縐嶆柊灞炴у寘鍚互涓嬪嚑縐嶏細</p> <div> <ol type="1"> <li> <p>搴旂敤闇瑕佺敤鍒扮殑灞炴?</p> </li> <li> <p>娑堟伅澶翠腑鍘熸湁鐨勪竴浜涘彲閫夊睘鎬?</p> </li> <li> <p>JMS Provider 闇瑕佺敤鍒扮殑灞炴с?/p> </li> </ol> </div> <p>鏍囧噯鐨凧MS 娑堟伅澶村寘鍚互涓嬪睘鎬э細</p> <p>JMSDestination --娑堟伅鍙戦佺殑鐩殑鍦般?/p> <p>JMSDeliveryMode --浼犻掓ā寮忥紝 鏈変袱縐嶆ā寮忥細PERSISTENT鍜孨ON_PERSISTENT錛孭ERSISTENT琛ㄧず璇ユ秷鎭竴瀹氳琚佸埌鐩殑鍦幫紝鍚﹀垯浼氬鑷村簲鐢ㄩ敊璇? NON_PERSISTENT琛ㄧず鍋剁劧涓㈠け璇ユ秷鎭槸琚厑璁哥殑錛岃繖涓ょ妯″紡浣垮紑鍙戣呭彲浠ュ湪娑堟伅浼犻掔殑鍙潬鎬у拰鍚炲悙閲忎箣闂存壘鍒板鉤琛$偣銆?/p> <p>JMSMessageID 鍞竴璇嗗埆姣忎釜娑堟伅鐨勬爣璇嗭紝鐢盝MS Provider 浜х敓銆?/p> <p>JMSTimestamp 涓涓秷鎭鎻愪氦緇橨MS Provider 鍒版秷鎭鍙戝嚭鐨勬椂闂淬?/p> <p>JMSCorrelationID 鐢ㄦ潵榪炴帴鍒板彟澶栦竴涓秷鎭紝鍏稿瀷鐨勫簲鐢ㄦ槸鍦ㄥ洖澶嶆秷鎭腑榪炴帴鍒板師娑堟伅銆?/p> <p>JMSReplyTo 鎻愪緵鏈秷鎭洖澶嶆秷鎭殑鐩殑鍦板潃銆?/p> <p>JMSRedelivered濡傛灉涓涓鎴風鏀跺埌涓涓緗簡JMSRedelivered灞炴х殑娑堟伅錛屽垯琛ㄧず鍙兘璇ュ鎴風鏇劇粡鍦ㄦ棭浜涙椂鍊欐敹鍒拌繃璇ユ秷鎭紝浣嗗茍娌℃湁絳炬敹(acknowledged)銆?/p> <p>JMSType 娑堟伅綾誨瀷鐨勮瘑鍒銆?/p> <p>JMSExpiration 娑堟伅榪囨湡鏃墮棿錛岀瓑浜嶲ueueSender 鐨剆end鏂規硶涓殑timeToLive鍊兼垨TopicPublisher 鐨刾ublish 鏂規硶涓殑timeToLive鍊煎姞涓婂彂閫佹椂鍒葷殑GMT鏃墮棿鍊箋傚鏋渢imeToLive鍊肩瓑浜庨浂錛屽垯JMSExpiration琚涓洪浂錛岃〃紺鴻娑堟伅姘鎬笉榪囨湡銆傚鏋滃彂閫佸悗錛屽湪娑堟伅榪囨湡鏃墮棿涔嬪悗娑堟伅榪樻病鏈夎鍙戦佸埌鐩殑鍦幫紝鍒欒娑堟伅琚竻闄ゃ?/p> <p>JMSPriority 娑堟伅浼樺厛綰э紝浠?-9 鍗佷釜綰у埆錛?-4 鏄櫘閫氭秷鎭紝5-9 鏄姞鎬ユ秷鎭侸MS 涓嶈姹侸MS Provider涓ユ牸鎸夌収榪欏崄涓紭鍏堢駭鍙戦佹秷鎭紝浣嗗繀欏諱繚璇佸姞鎬ユ秷鎭鍏堜簬鏅氭秷鎭埌杈俱?/p> <p><strong>娑堟伅浣?Body)</strong> - JMS API瀹氫箟浜?縐嶆秷鎭綋鏍煎紡錛屼篃鍙秷鎭被鍨嬶紝浣犲彲浠ヤ嬌鐢ㄤ笉鍚屽艦寮忓彂閫佹帴鏀舵暟鎹茍鍙互鍏煎鐜版湁鐨勬秷鎭牸寮忥紝涓嬮潰鎻忚堪榪?縐嶇被鍨嬶細</p> <div> <table border="1"> <colgroup><col><col></colgroup> <tbody> <tr> <td><strong>娑堟伅綾誨瀷</strong></td> <td><strong>娑堟伅浣?/strong></td> </tr> <tr> <td>TextMessage</td> <td>java.lang.String瀵硅薄錛屽xml鏂囦歡鍐呭</td> </tr> <tr> <td>MapMessage</td> <td>鍚?鍊煎鐨勯泦鍚堬紝鍚嶆槸String瀵硅薄錛屽肩被鍨嬪彲浠ユ槸Java浠諱綍鍩烘湰綾誨瀷</td> </tr> <tr> <td>BytesMessage</td> <td>瀛楄妭嫻?/td> </tr> <tr> <td>StreamMessage</td> <td>Java涓殑杈撳叆杈撳嚭嫻?/td> </tr> <tr> <td>ObjectMessage</td> <td>Java涓殑鍙簭鍒楀寲瀵硅薄</td> </tr> <tr> <td>Message</td> <td>娌℃湁娑堟伅浣擄紝鍙湁娑堟伅澶村拰灞炴?/td> </tr> </tbody> </table> </div> <p>Message鏄互涓?綾葷殑鍩虹銆傛渶甯哥敤鐨勬槸ObjectMessage鍜孴extMessage<br /> </p> <h3><span style="color: #3064ff;">3.娑堟伅鐨勫悓姝ュ紓姝ユ帴鏀?/span></h3> <p><strong>娑堟伅鐨勫悓姝ユ帴鏀?/strong></p> <p>鍚屾鎺ユ敹鏄寚瀹㈡埛绔富鍔ㄥ幓鎺ユ敹娑堟伅錛孞MS 瀹㈡埛绔彲浠ラ噰鐢∕essageConsumer鐨剅eceive鏂規硶鍘繪帴鏀朵笅涓涓秷鎭?/p> <p><strong>娑堟伅鐨勫紓姝ユ帴鏀?/strong></p> <p>寮傛鎺ユ敹鏄寚褰撴秷鎭埌杈炬椂錛屼富鍔ㄩ氱煡瀹㈡埛绔侸MS瀹㈡埛绔彲浠ラ氳繃娉ㄥ唽涓涓疄鐜癕essageListener鎺ュ彛鐨勫璞″埌MessageConsumer錛岃繖鏍鳳紝姣忓綋娑堟伅鍒拌揪鏃訛紝JMS Provider 浼氳皟鐢∕essageListener涓殑onMessage 鏂規硶銆?/p> <h3><span style="color: #3064ff;">4.PTP妯″瀷</span></h3> <p>PTP(Point-to-Point)妯″瀷鏄熀浜庨槦鍒楃殑錛屽彂閫佹柟鍙戞秷鎭埌闃熷垪錛屾帴鏀舵柟浠庨槦鍒楁帴鏀舵秷鎭紝闃熷垪鐨勫瓨鍦ㄤ嬌寰楁秷鎭殑寮傛浼犺緭鎴愪負鍙兘銆傚拰閭歡緋葷粺涓殑閭涓鏍鳳紝闃熷垪鍙互鍖呭惈鍚勭娑堟伅錛孞MS Provider 鎻愪緵宸ュ叿綆$悊闃熷垪鐨勫垱寤恒佸垹闄ゃ侸MS PTP妯″瀷瀹氫箟浜嗗鎴風濡備綍鍚戦槦鍒楀彂閫佹秷鎭紝浠庨槦鍒楁帴鏀舵秷鎭紝嫻忚闃熷垪涓殑娑堟伅銆?/p> <p>涓嬮潰鎻忚堪JMS PTP 妯″瀷涓殑涓昏姒傚康鍜屽璞★細</p> <div> <table border="1"> <colgroup><col><col></colgroup> <tbody> <tr> <td><strong>鍚嶇О</strong></td> <td><strong>鎻忚堪</strong></td> </tr> <tr> <td>Queue</td> <td>鐢盝MS Provider 綆$悊錛岄槦鍒楃敱闃熷垪鍚嶈瘑鍒紝瀹㈡埛绔彲浠ラ氳繃JNDI鎺ュ彛鐢ㄩ槦鍒楀悕寰楀埌涓涓槦鍒楀璞°?/td> </tr> <tr> <td>TemporaryQueue</td> <td>鐢盦ueueConnection 鍒涘緩錛岃屼笖鍙兘鐢卞垱寤哄畠鐨凲ueueConnection 浣跨敤銆?/td> </tr> <tr> <td>QueueConnectionFactory</td> <td>瀹㈡埛绔敤QueueConnectionFactory 鍒涘緩QueueConnection 瀵硅薄銆?/td> </tr> <tr> <td>QueueConnection</td> <td>涓涓埌JMS PTP provider 鐨勮繛鎺ワ紝瀹㈡埛绔彲浠ョ敤QueueConnection鍒涘緩QueueSession鏉ュ彂閫佸拰鎺ユ敹娑堟伅銆?/td> </tr> <tr> <td>QueueSession</td> <td>鎻? 渚涗竴浜涙柟娉曞垱寤篞ueueReceiver銆丵ueueSender銆丵ueueBrowser鍜孴emporaryQueue銆傚鏋滃湪 QueueSession鍏抽棴鏃訛紝鏈変竴浜涙秷鎭凡緇忚鏀跺埌錛屼絾榪樻病鏈夎絳炬敹(acknowledged)錛岄偅涔堬紝褰撴帴鏀惰呬笅嬈¤繛鎺ュ埌鐩稿悓鐨勯槦鍒楁椂錛岃繖浜涙秷鎭? 榪樹細琚啀嬈℃帴鏀躲?/td> </tr> <tr> <td>QueueReceiver</td> <td>瀹㈡埛绔敤QueueReceiver鎺ユ敹闃熷垪涓殑娑堟伅錛屽鏋滅敤鎴峰湪QueueReceiver涓瀹氫簡娑堟伅閫夋嫨鏉′歡錛岄偅涔堜笉絎﹀悎鏉′歡鐨勬秷鎭細鐣欏湪闃熷垪涓紝涓嶄細琚帴鏀跺埌銆?/td> </tr> <tr> <td>QueueSender</td> <td>瀹㈡埛绔敤QueueSender 鍙戦佹秷鎭埌闃熷垪銆?/td> </tr> <tr> <td>QueueBrowser</td> <td>瀹㈡埛绔彲浠ueueBrowser 嫻忚闃熷垪涓殑娑堟伅錛屼絾涓嶄細鏀惰蛋娑堟伅銆?/td> </tr> <tr> <td>QueueRequestor</td> <td>JMS 鎻愪緵QueueRequestor綾葷畝鍖栨秷鎭殑鏀跺彂榪囩▼銆俀ueueRequestor鐨勬瀯閫犲嚱鏁版湁涓や釜鍙傛暟錛歈ueueSession鍜宷ueue錛孮ueueRequestor 閫氳繃鍒涘緩涓涓復鏃墮槦鍒楁潵瀹屾垚鏈緇堢殑鏀跺彂娑堟伅璇鋒眰銆?/td> </tr> <tr> <td>鍙潬鎬?Reliability)</td> <td>闃熷垪鍙互闀夸箙鍦頒繚瀛樻秷鎭洿鍒版帴鏀惰呮敹鍒版秷鎭傛帴鏀惰呬笉闇瑕佸洜涓烘媴蹇冩秷鎭細涓㈠け鑰屾椂鍒誨拰闃熷垪淇濇寔嬋媧葷殑榪炴帴鐘舵侊紝鍏呭垎浣撶幇浜嗗紓姝ヤ紶杈撴ā寮忕殑浼樺娍銆?/td> </tr> </tbody> </table> </div> <br /> <h3><span style="color: #3064ff;">4.Pub/Sub妯″瀷</span></h3> <p>JMS Pub/Sub 妯″瀷瀹氫箟浜嗗浣曞悜涓涓唴瀹硅妭鐐瑰彂甯冨拰璁㈤槄娑堟伅錛岃繖浜涜妭鐐硅縐頒綔涓婚(topic)銆?/p> <p>涓婚鍙互琚涓烘槸娑堟伅鐨勪紶杈撲腑浠嬶紝鍙戝竷鑰?publisher)鍙戝竷娑堟伅鍒頒富棰橈紝璁㈤槄鑰?subscribe)浠庝富棰樿闃呮秷鎭備富棰樹嬌寰楁秷鎭闃呰呭拰娑堟伅鍙戝竷鑰呬繚鎸佷簰鐩哥嫭绔嬶紝涓嶉渶瑕佹帴瑙﹀嵆鍙繚璇佹秷鎭殑浼犻併?/p> <p>涓嬮潰鎻忚堪JMS Pub/Sub 妯″瀷涓殑涓昏姒傚康鍜屽璞★細</p> <div> <table border="1"> <colgroup><col><col></colgroup> <tbody> <tr> <td><strong>鍚嶇О </strong></td> <td><strong>鎻忚堪</strong></td> </tr> <tr> <td>璁㈤槄(subscription)</td> <td>娑堟伅璁㈤槄鍒嗕負闈炴寔涔呰闃?non-durable subscription)鍜屾寔涔呰闃?durablesubscrip-tion)錛岄潪鎸佷箙璁㈤槄鍙湁褰撳鎴風澶勪簬嬋媧葷姸鎬侊紝涔熷氨鏄拰JMS Provider淇濇寔榪炴帴鐘舵佹墠鑳芥敹鍒板彂閫佸埌鏌愪釜涓婚鐨勬秷鎭紝鑰屽綋瀹㈡埛绔浜庣綰跨姸鎬侊紝榪欎釜鏃墮棿孌靛彂鍒頒富棰樼殑娑堟伅灝嗕細涓㈠け錛屾案榪滀笉浼氭敹鍒般傛寔涔呰闃呮椂錛屽鎴風鍚慗MS娉ㄥ唽涓涓瘑鍒嚜宸辮韓浠界殑ID錛屽綋榪欎釜瀹㈡埛绔浜庣綰挎椂錛孞MS Provider 浼氫負榪欎釜ID 淇濆瓨鎵鏈夊彂閫佸埌涓婚鐨勬秷鎭紝褰撳鎴峰啀嬈¤繛鎺ュ埌JMS Provider鏃訛紝浼氭牴鎹嚜宸辯殑ID寰楀埌鎵鏈夊綋鑷繁澶勪簬紱葷嚎鏃跺彂閫佸埌涓婚鐨勬秷鎭?/td> </tr> <tr> <td>Topic</td> <td>涓婚鐢盝MS Provider 綆$悊錛屼富棰樼敱涓婚鍚嶈瘑鍒紝瀹㈡埛绔彲浠ラ氳繃JNDI鎺ュ彛鐢ㄤ富棰樺悕寰楀埌涓涓富棰樺璞°侸MS娌℃湁緇欏嚭涓婚鐨勭粍緇囧拰灞傛緇撴瀯鐨勫畾涔夛紝鐢盝MS Provider 鑷繁瀹氫箟銆?/td> </tr> <tr> <td>TemporaryTopic</td> <td>涓存椂涓婚鐢盩opicConnection鍒涘緩錛岃屼笖鍙兘鐢卞垱寤哄畠鐨凾opicConnection浣跨敤銆備復鏃朵富棰樹笉鑳芥彁渚涙寔涔呰闃呭姛鑳姐?/td> </tr> <tr> <td>TopicConnectionFactory</td> <td>瀹㈡埛绔敤TopicConnectionFactory 鍒涘緩TopicConnection 瀵硅薄銆?/td> </tr> <tr> <td>TopicConnection</td> <td>TopicConnection 鏄竴涓埌JMS Pub/Sub provider鐨勮繛鎺ワ紝瀹㈡埛绔彲浠ョ敤TopicConnection鍒涘緩TopicSession鏉ュ彂甯冨拰璁㈤槄娑堟伅銆?/td> </tr> <tr> <td>TopicSession</td> <td>TopicSession鎻愪緵涓浜涙柟娉曞垱寤篢opicPublisher銆乀opicSubscriber銆乀emporaryTopic銆傚畠榪樻彁渚泆nsubscribe鏂規硶鍙栨秷娑堟伅鐨勬寔涔呰闃呫?/td> </tr> <tr> <td>TopicPublisher</td> <td>瀹㈡埛绔敤TopicPublisher 鍙戝竷娑堟伅鍒頒富棰樸?/td> </tr> <tr> <td>TopicSubscriber</td> <td>瀹㈡埛绔敤TopicSubscriber鎺ユ敹鍙戝竷鍒頒富棰樹笂鐨勬秷鎭傚彲浠ュ湪TopicSubscriber涓緗秷鎭繃婊ゅ姛鑳斤紝榪欐牱錛屼笉絎﹀悎瑕佹眰鐨勬秷鎭笉浼氳鎺ユ敹銆?/td> </tr> <tr> <td>Durable TopicSubscriber</td> <td>濡傛灉涓涓鎴風闇瑕佹寔涔呰闃呮秷鎭紝鍙互浣跨敤Durable TopicSubscriber錛孴opSession鎻愪緵涓涓柟娉昪reateDurableSubscriber鍒涘緩Durable TopicSubscriber 瀵硅薄銆?/td> </tr> <tr> <td>鎭㈠鍜岄噸鏂版淳閫?Recovery and Redelivery)</td> <td>闈炴寔涔呰闃呯姸鎬佷笅錛屼笉鑳芥仮澶嶆垨閲嶆柊媧鵑佷竴涓湭絳炬敹鐨勬秷鎭傚彧鏈夋寔涔呰闃呮墠鑳芥仮澶嶆垨閲嶆柊媧鵑佷竴涓湭絳炬敹鐨勬秷鎭?/td> </tr> <tr> <td>TopicRequestor</td> <td>JMS 鎻愪緵TopicRequestor綾葷畝鍖栨秷鎭殑鏀跺彂榪囩▼銆俆opicRequestor鐨勬瀯閫犲嚱鏁版湁涓や釜鍙傛暟錛歍opicSession鍜宼opic銆俆opicRequestor 閫氳繃鍒涘緩涓涓復鏃朵富棰樻潵瀹屾垚鏈緇堢殑鍙戝竷鍜屾帴鏀舵秷鎭姹傘?/td> </tr> <tr> <td>鍙潬鎬?Reliability)</td> <td>褰撴墍鏈夌殑娑堟伅蹇呴』琚帴鏀訛紝鍒欑敤鎸佷箙璁㈤槄妯″紡銆傚綋涓㈠け娑堟伅鑳藉琚蹇嶏紝鍒欑敤闈炴寔涔呰闃呮ā</td> </tr> </tbody> </table> </div> <p><br /> </p> <br /> <br /> <br /> <script type="text/JavaScript"> alimama_pid="mm_10891533_910884_1874773"; alimama_titlecolor="0000FF"; alimama_descolor ="000000"; alimama_bgcolor="FFFFFF"; alimama_bordercolor="E6E6E6"; alimama_linkcolor="008000"; alimama_bottomcolor="FFFFFF"; alimama_anglesize="0"; alimama_bgpic="0"; alimama_icon="0"; alimama_sizecode="15"; alimama_width=950; alimama_height=90; alimama_type=2; </script> <script src="http://a.alimama.cn/inf.js" type=text/javascript> </script> <img src ="http://www.tkk7.com/EvanLiu/aggbug/213934.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.tkk7.com/EvanLiu/" target="_blank">EvanLiu</a> 2008-08-03 17:51 <a href="http://www.tkk7.com/EvanLiu/archive/2008/08/03/213934.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>JAAS瀛︿範http://www.tkk7.com/EvanLiu/archive/2008/08/02/212749.htmlEvanLiuEvanLiuSat, 02 Aug 2008 05:52:00 GMThttp://www.tkk7.com/EvanLiu/archive/2008/08/02/212749.htmlhttp://www.tkk7.com/EvanLiu/comments/212749.htmlhttp://www.tkk7.com/EvanLiu/archive/2008/08/02/212749.html#Feedback0http://www.tkk7.com/EvanLiu/comments/commentRss/212749.htmlhttp://www.tkk7.com/EvanLiu/services/trackbacks/212749.html 鐩墠嫻佽鐨凙cegi涓篃鎻愪緵浜咼AAS
JAAS鐨勫嚑涓牳蹇冪被鍜屾帴鍙o細
  1.Subject: 瀹為檯琚璇佺殑浜烘垨鑰呮湇鍔?br />   2.Principal (interface): Subject鐨勫敮涓鏍囪瘑銆備竴涓猄ubject鍚湁涓涓垨澶氫釜Pricipal錛屾瘮濡備竴涓漢鏈夎韓浠借瘉銆佹姢鐓х瓑Pricipal
  3.LoginContext
  4.LoginModule (interface)
  5.CallbackHandler (interface)
榪樻湁涓や釜閰嶇疆鏂囦歡錛?#215;××.conf錛堟垨config錛?鍜?×××..policy
JAAS棣栧厛浣跨敤涓涓狶oginContext綾繪潵鏌ユ壘閰嶇疆鏂囦歡涓殑鍐呭錛岃繖浜涘唴瀹瑰彲浠ョ敤鏉ュLoginModules榪涜鍒濆鍖栥傛墍鏈? LoginContext娌℃湁鎸囧畾鐨勫垵濮嬪寲鍙傛暟閮戒細鍖呭惈鍦ㄩ厤緗枃浠朵腑銆侺oginContext鍚慙oginModule浼犻掍竴涓狢allbackHandler瀵硅薄鍜屼竴涓猄ubject錛屽鏋淟oginModule榪橀渶瑕佸叾浠栬璇佷俊鎭紝瀹冨氨浼氱敤CallbackHandler鍥炶皟閫傚綋鐨勫簲鐢ㄧ▼搴忥紝浠庤岃幏寰楄繖浜涗俊鎭?br />
鍦ㄥ簲鐢ㄧ▼搴忎腑錛屼竴鑸繖鏍蜂嬌鐢↙oginContext:
    try {
        LoginContext loginContext = new LoginContext("Sample", callbackHandler );  //"Sample"瀹氫箟鍦ㄧ浉鍏崇殑conf鏂囦歡涓? callbackHandler瑙佷笅闈?br />         loginContext.login();  //濡傛灉璁よ瘉澶辮觸錛屽垯鎶涘嚭寮傚父
    } catch (LoginException e) {
        //do sth.
    }

鎴戜滑瑕佷嬌鐢↗AAS錛屽氨闇瑕佸疄鐜頒笂榪版帴鍙o紝浠ュ強閰嶇疆濂芥枃浠?br /> 涓婇潰鐨勪唬鐮侊紝鍙槸鍦ㄥ簲鐢ㄦ椂錛岃繖鏍峰啓灝卞浜嗐傚綋鐒訛紝鍦ㄨ繖涔嬪墠錛岃繕闇瑕佽緗甤allbackHandler錛?br />     SampleCallbackHandler callbackHandler = new SampleCallbackHandler();
    // 璁劇疆鐢ㄦ埛鍚嶃佸瘑鐮佺瓑闇瑕侀獙璇佺殑淇℃伅鍒癱allbackHandler閲屻傚叿浣撴庝箞璁撅紝鐪嬭嚜宸辯殑SampleCallbackHandler鎬庝箞璁捐浜?br />      ......

涓句緥錛?br />     public class SampleCallbackHandler implements CallbackHandler {
        protected String username;
        protected String password;

        public void handle(Callback[] callbacks)
            throws UnsupportedCallbackException {    //榪欎釜鏂規硶鏄繀欏誨疄鐜扮殑,鐢ㄦ潵璁劇疆username鍜宲assword鍒板搴旂殑Callback鍙橀噺涓?br />                for (int index = 0; index < callbacks.length; index++) {
                   
if (callbacks[index] instanceof NameCallback) {
                    NameCallback ncb 
= (NameCallback) callbacks[index];
                    ncb.setName(username);
              } else
if (callbacks[index] instanceof PasswordCallback) {
                    PasswordCallback pcb 
= (PasswordCallback) callbacks[index];
                    pcb.setPassword(password.toCharArray());
              } else if() {  //濡傛灉榪樻湁鍏朵粬闇瑕侀獙璇佺殑淇℃伅
                       ...
              }
        }
       
        //鍏朵粬鏂規硶錛岃濡傝緗畊sername鍜宲assword
    }

    鐒跺悗鏉ヨ鍓嶉潰鐨?Sample"銆傝繖閲岀殑"Sample"瀵瑰簲涓涓猄ample.conf鏂囦歡錛岃繖涓枃浠剁殑鍏蜂綋浣嶇疆鍙互鑷繁璁劇疆銆俢onf鏂囦歡涓厤緗簡瀵瑰簲鐨凩oginModule綾伙紝鍙互鏄竴涓垨澶氫釜錛岀敤鏉ュ仛涓嶅悓鐨勯獙璇併?br />     public class SampleLoginModule implements LoginModule {
        ....
    }
LoginModule鏈?涓柟娉曢渶瑕佸疄鐜幫紝綆鍗曠偣鍐欎釜鏂規硶鍚嶅緱浜嗭細
public void initialize(Subject subject, CallbackHandler callbackHandler, Map arg2, Map arg3);
public boolean login() throws LoginException;
public boolean commit() throws LoginException;
public boolean abort() throws LoginException;
public boolean logout() throws LoginException;
涓氬姟閫昏緫涓昏鍦╨ogin()涓疄鐜幫紝姝ラ鍖呮嫭浜嗕粠callbackHandler涓鍙栫敤鎴峰悕瀵嗙爜錛岀劧鍚庤浠庢暟鎹簱楠岃瘉灝變粠鏁版嵁搴撻獙璇侊紝璇ヤ粠閰嶇疆鏂囦歡楠岃瘉灝變粠閰嶇疆鏂囦歡楠岃瘉錛岃浠庡叾浠栫郴緇熶腑楠岃瘉灝變粠鍏朵粬緋葷粺涓獙璇?..

Pricipal鐨勫疄鐜板氨涓嶅啓浜嗭紝涓嬮潰閾炬帴涓殑渚嬪瓙鍐欏緱寰堣緇嗐傛垜鐨勫彧鏄粰鑷繁鐞嗕竴涓ぇ姒傛楠わ紝浠ュ悗鍥為【璧鋒潵涔熸柟渚?br /> 涓嶈繃Subject鍜孭ricipal搴旇鏈夋洿閲嶈鐨勭敤澶勶紝姣斿鍦ˋuthorization涓紝鎶妏ricipal鍜岃鍙互鎵ц鐨勭浉鍏蟲搷浣滃搴旇搗鏉ャ傝繖涓繕娌$湅涓嬪幓錛屾帴瑙︾殑浠g爜涓篃娌$敤鍒般傛斁鍒頒互鍚庤ˉ鍏?br />
鏇村鍐呭錛屽彲鐩存帴鏌ョ湅sun鐨凧DK鏂囨。http://java.sun.com/javase/6/docs/technotes/guides/security/jaas/JAASRefGuide.html
瀹炰緥錛?a href="http://www.tkk7.com/fastunit/archive/2008/01/28/178204.html">http://www.tkk7.com/fastunit/archive/2008/01/28/178204.html






EvanLiu 2008-08-02 13:52 鍙戣〃璇勮
]]>
struts validate涔婣pplicationResources.properties鍐呭璇誨彇涔辯爜http://www.tkk7.com/EvanLiu/archive/2008/06/16/208276.htmlEvanLiuEvanLiuMon, 16 Jun 2008 04:42:00 GMThttp://www.tkk7.com/EvanLiu/archive/2008/06/16/208276.htmlhttp://www.tkk7.com/EvanLiu/comments/208276.htmlhttp://www.tkk7.com/EvanLiu/archive/2008/06/16/208276.html#Feedback0http://www.tkk7.com/EvanLiu/comments/commentRss/208276.htmlhttp://www.tkk7.com/EvanLiu/services/trackbacks/208276.html 緙栫爜榪囨護鍣ㄨ緗垚UTF-8緙栫爜
閰嶇疆閮芥紜紝鍦╦dk\bin鐩綍涓嬶紝鐢╪ative2ascii ApplicationResources.properties ApplicationResources2.properties
緇撴灉JSP欏甸潰鏄劇ず鎻愮ず淇℃伅鏃訛紝鎻愮ず淇℃伅鎴愪簡涔辯爜銆?br />
瑙e喅鍔炴硶錛歯ative2ascii -encoding UTF-8 ApplicationResources.properties ApplicationResources2.properties

鎰熻阿http://kenshinlk.javaeye.com/blog/59080



EvanLiu 2008-06-16 12:42 鍙戣〃璇勮
]]>
struts validate涔媀alidatorActionFormhttp://www.tkk7.com/EvanLiu/archive/2008/06/15/207964.htmlEvanLiuEvanLiuSat, 14 Jun 2008 16:58:00 GMThttp://www.tkk7.com/EvanLiu/archive/2008/06/15/207964.htmlhttp://www.tkk7.com/EvanLiu/comments/207964.htmlhttp://www.tkk7.com/EvanLiu/archive/2008/06/15/207964.html#Feedback0http://www.tkk7.com/EvanLiu/comments/commentRss/207964.htmlhttp://www.tkk7.com/EvanLiu/services/trackbacks/207964.html
浠g爜濡備笅錛?br /> public class UserForm extends ValidatorActionForm {
    private Integer id;
    private String name;
    private String password;
    private String confirmpwd;
    private String email;
    private Integer sex;
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    ...
}
Action綾葷暐榪?br /> validation.xml:
<formset>
        <form name="/register/register">
            <field property="name" depends="required">
                <arg0 key="user.name"/> 
            </field>
            <field property="confirmpwd" depends="required">
                <arg0 key="user.confirmpwd"/>
            </field>
        </form>
    ...

ApplicationContext.properties:
user.name = {0}\u6d93\u5d88\u5158\u6d93\u8679\u2516
    ...

緙栬瘧鍚庯紝ApplicationContext.properties鑳藉湪WEB-INF\classes涓嬫壘鍒幫紝涓攕truts-config.xml閲屼篃宸叉坊鍔?br />
JSP欏甸潰錛?br />     ...
<html:form action="/register/register" method="post" enctype="multipart/form-data">            
    <input type="hidden" name="method" value="register" />   
    <div class="reg03">
        <html:text property="name" styleId="name" style="width:245px" />
        <font color="red"><html:errors property="name"/></font>        
    </div>
    ...

緇撴灉錛氶獙璇佽搗浣滅敤錛屼絾鏄彁紺轟俊鎭墦鍗頒笉鍑烘潵銆?nbsp;
HELP錛侊紒錛?br />
宸茶В鍐?br /> 闇瑕佷慨鏀箆alidation.xml鍜孉pplicationContext.properties
validation.xml:
    ...
<field property="name" depends="required">
    <msg name="required" key="user.required"/>
    <arg0 key="user.name"/>
    ...

ApplicationContext.properties 錛堟湭杞爜鍓嶏級
    ...
user.name=濮撳悕
user.required={0}涓嶈兘涓虹┖
    ...






EvanLiu 2008-06-15 00:58 鍙戣〃璇勮
]]>
foxmail涓嬮偖浠禖SS涔變簡鐨勯棶棰?/title><link>http://www.tkk7.com/EvanLiu/archive/2008/05/13/200189.html</link><dc:creator>EvanLiu</dc:creator><author>EvanLiu</author><pubDate>Tue, 13 May 2008 05:32:00 GMT</pubDate><guid>http://www.tkk7.com/EvanLiu/archive/2008/05/13/200189.html</guid><wfw:comment>http://www.tkk7.com/EvanLiu/comments/200189.html</wfw:comment><comments>http://www.tkk7.com/EvanLiu/archive/2008/05/13/200189.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.tkk7.com/EvanLiu/comments/commentRss/200189.html</wfw:commentRss><trackback:ping>http://www.tkk7.com/EvanLiu/services/trackbacks/200189.html</trackback:ping><description><![CDATA[浠婂ぉ鍋氫竴涓偖浠剁▼搴忥紝嫻嬭瘯鏃訛紝鍙戠幇鐢╢oxmail鏀墮偖浠舵椂錛孋SS涔變簡銆傚悗鏉ョ湅婧愮爜錛屽彂鐜?lt;!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">榪欐澹版槑鍦ㄦ樉紺虹殑鏃跺欒榪囨護鎺変簡銆傚湪<!DOCTYPE 鍓嶅姞浜嗗瓧絎︼紝鐒跺悗浼氳煩榪囧瓧絎︼紝鎶?lt;!DOCTYPE 榪囨護銆傚悗鏉?span style="color: red;">鍐欎簡涓よ<!DOCTYPE 澹版槑</span>錛孋SS灝辨甯鎬簡銆傚簲璇ユ槸foxmail鐨勮鍒欐槸鍙繃婊ょ涓琛屽0鏄庛?br /> <br /> 鍙﹀錛岀敤outlook2007鏀墮偖浠剁殑鏃跺欙紝褰撳浘鐗囨槸鍐欏湪css閲岀殑鏃跺欙紝涓嶈兘涓嬭澆鍥劇墖銆傚湪“宸ュ叿-淇′換涓績-鑷姩涓嬭澆”閭i噷鍙栨秷浜嗙姝㈣嚜鍔ㄤ笅杞藉姛鑳斤紝浠嶇劧涓嶈兘鏄劇ず銆傜洰鍓嶄粛鏈В鍐?br /> <br /> <br /> <script type="text/JavaScript"> alimama_pid="mm_10891533_910884_1874773"; alimama_titlecolor="0000FF"; alimama_descolor ="000000"; alimama_bgcolor="FFFFFF"; alimama_bordercolor="E6E6E6"; alimama_linkcolor="008000"; alimama_bottomcolor="FFFFFF"; alimama_anglesize="0"; alimama_bgpic="0"; alimama_icon="0"; alimama_sizecode="15"; alimama_width=950; alimama_height=90; alimama_type=2; </script> <script src="http://a.alimama.cn/inf.js" type=text/javascript> </script> <img src ="http://www.tkk7.com/EvanLiu/aggbug/200189.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.tkk7.com/EvanLiu/" target="_blank">EvanLiu</a> 2008-05-13 13:32 <a href="http://www.tkk7.com/EvanLiu/archive/2008/05/13/200189.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item></channel></rss> <footer> <div class="friendship-link"> <p>感谢您访问我们的网站,您可能还对以下资源感兴趣:</p> <a href="http://www.tkk7.com/" title="亚洲av成人片在线观看">亚洲av成人片在线观看</a> <div class="friend-links"> </div> </div> </footer> 主站蜘蛛池模板: <a href="http://bjyaao.com" target="_blank">99国产精品免费视频观看</a>| <a href="http://znboxcdn304.com" target="_blank">一个人免费观看www视频</a>| <a href="http://hbjpxnyqckj.com" target="_blank">亚欧免费一级毛片</a>| <a href="http://uiui6.com" target="_blank">亚洲成人免费在线</a>| <a href="http://zbvip888.com" target="_blank">国产成人精品免费视频动漫</a>| <a href="http://55118885.com" target="_blank">777亚洲精品乱码久久久久久</a>| <a href="http://jpvv8.com" target="_blank">亚洲综合激情六月婷婷在线观看</a>| <a href="http://youkabaitiao.com" target="_blank">中文字幕版免费电影网站</a>| <a href="http://xmmn77.com" target="_blank">国产亚洲色视频在线</a>| <a href="http://www73234.com" target="_blank">成人免费ā片在线观看</a>| <a href="http://cdlsy.com" target="_blank">亚洲精品国产美女久久久</a>| <a href="http://bjbanjia01.com" target="_blank">你懂的在线免费观看</a>| <a href="http://vcnxa.com" target="_blank">亚洲视频2020</a>| <a href="http://haohaoshuo.com" target="_blank">69av免费视频</a>| <a href="http://gz-shunan.com" target="_blank">亚洲熟女综合一区二区三区</a>| <a href="http://wwkk3.com" target="_blank">国产亚洲精品免费</a>| <a href="http://kaixininvestment.com" target="_blank">一区免费在线观看</a>| <a href="http://732r.com" target="_blank">亚洲AV无码成人精品区天堂</a>| <a href="http://njchxf.com" target="_blank">午夜爱爱免费视频</a>| <a href="http://bcz123.com" target="_blank">国产精品观看在线亚洲人成网</a>| <a href="http://www-7607.com" target="_blank">免费国产精品视频</a>| <a href="http://www907ii.com" target="_blank">搡女人免费免费视频观看</a>| <a href="http://79909d.com" target="_blank">久久精品亚洲精品国产色婷</a>| <a href="http://xy996688.com" target="_blank">成人女人A级毛片免费软件</a>| <a href="http://v1s3u5.com" target="_blank">亚洲av午夜国产精品无码中文字</a>| <a href="http://yctbhb.com" target="_blank">亚洲免费视频一区二区三区</a>| <a href="http://1877808.com" target="_blank">99爱视频99爱在线观看免费</a>| <a href="http://zgdhuibao.com" target="_blank">亚洲综合av一区二区三区不卡 </a>| <a href="http://kdp44.com" target="_blank">亚洲日本韩国在线</a>| <a href="http://52xdc.com" target="_blank">成人免费区一区二区三区 </a>| <a href="http://6006769.com" target="_blank">国产成人免费高清在线观看</a>| <a href="http://changfafangzhi.com" target="_blank">特级毛片在线大全免费播放</a>| <a href="http://1314c.com" target="_blank">亚洲AV成人一区二区三区AV</a>| <a href="http://yw5168.com" target="_blank">97无码免费人妻超级碰碰夜夜</a>| <a href="http://hnshlt.com" target="_blank">四虎国产精品成人免费久久</a>| <a href="http://juguanghr.com" target="_blank">亚洲人成在线观看</a>| <a href="http://zddzbp.com" target="_blank">日韩免费高清视频</a>| <a href="http://mmstom.com" target="_blank">日韩在线永久免费播放</a>| <a href="http://jggbk.com" target="_blank">亚洲丁香婷婷综合久久</a>| <a href="http://bomilon.com" target="_blank">亚洲国产精品嫩草影院在线观看 </a>| <a href="http://www988555.com" target="_blank">免费在线观看黄网站</a>| <script> (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })(); </script> </body>