vista

          回顧※展望                     潛心技術&&不再擱淺

            BlogJava :: 首頁 :: 聯系 :: 聚合  :: 管理
            12 Posts :: 1 Stories :: 13 Comments :: 0 Trackbacks

          2006年12月17日 #

          ???一直在為自己找借口,找理由,卻始終不能專心一意下來,一直在為自己辯護: 找個機會重新開始!
          ???一直在為自己的QQ找個新名字,想從頭再來; 一直想為自己的游戲帳號換個新名字,想從頭再來;
          ???一直在為自己找一份滿意的工作,想從頭再來; 一直想為自己的懶惰找個理由- - 過段時間,一切從頭開始.
          ???現在,我發現,那些全部是借口;
          ???現在,我發現: 時間不能再浪費,我也沒有更多的時間去等待,去尋找一個所謂的新的機會,.
          ???all i? have is now and all i can hold is now, tomorrow is not held by myself.
          ???從現在開始, 兩個字: 專心一意!



          ???自打辭掉第一份程序員的工作, 我始終不能專心下來,認真的工作,我承認,當時是沖動,辭職那么久以來,
          一直為這件事情反省,我也盡力了,只是我沒找到明確的方向,再加上自己的性格,容易受外界影響,不夠有耐心,做事不夠堅決,導致現在的困難狀況,今天再次和以前同事的聊天,我開始認識到,有些事情,過去了,用不著再掛念,人總是在失敗和挫折中長大的,有經歷,才有沉淀,才有收獲,前世不忘,后事之師.
          ???今天暫且主要回顧下自己的弱點:
          ???1,缺乏計劃性: 不管是為人處世,還是工作學習, 都缺乏一定的計劃性和針對性,由此增長的是懶惰和懈怠,這是當前最大的憂患.
          ???2,缺乏系統性:?主要表現在工作和學習中,缺乏一條循序漸進的路線,特別在學習的時候,一時學這個,一時學那個, 基礎沒打牢,就開始學人家研究高級技術,到頭來腳跟不穩,難免跌倒.
          ???3,缺乏警惕性: 條件一穩定,就表現出懈怠的情緒, 完全忘記了"生于安樂,死于憂患"的歷史名句, 沒有貫徹不斷學習和提高的思想,路線,

          ???以上三點是總結的比較深刻的三點, 這段時間一定多花時間, 看怎么設計一條路子,才可以逐漸的扭轉這種狀況, 同時慢慢轉入正軌, 重新找回當初的自己.
          ???一直在想, 我不能流于世俗, 流于膚淺, 我應該擔當的是不同凡人的責任感和緊迫感, 今天我跌到最低谷,不要緊,沒關系, 我還年輕,?我還有很多機會, 我要緊握這種緊迫感和責任感以及這份壓力, 更精彩的活下去.
          ???打點好行裝,?該上路了.


          ????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????2006.12.27凌晨?
          ??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????diego.liu

          posted @ 2006-12-17 00:18 Vista 閱讀(623) | 評論 (1)編輯 收藏

          2006年12月15日 #

          ??????前些天,也就是6號辭職了,這些天只在中博和網信聯動面試了下,投了很多簡歷,而且簡歷也被閱覽了很多次,但很少接到電話,呆在家里不上班的日子,真是特快,心里沒什么底,有點后悔辭職的沖動,不會也沒什么,機會還是有的,況且自己還是相信自己的實力,畢竟有一年的工作經驗,不過這些天還是在努力地學習,把基礎打牢再說.
          ??????華為一般是周五面試,其實我幾乎沒去華為面試,有幾次華為打電話過來,我恰好有其他的面試,所以去不了,這次反正閑著也是閑著,所以,在上午接到電話后,下午坐公車去了.
          ??????我住的地方去華為基地比較遠,坐公車都要5元RMB,下了車,打了電話,經過電話指點,終于找到了面試地點,外面好冷,進去就不怎么冷了,沒說別的,拿起試卷就開始做題.
          ??????題目的難度在我預料之中,依我的水平也就拿個70分左右的樣子(一般的公司我可以拿80以上,^_^),
          令我意外的是,筆試完后,面試技術的考官并沒怎么看我的答案,而是直接和我聊起技術方面的東西,問的很詳細,特別是問到具體做過的項目時,問的比較仔細,要不是我真的做過,非穿幫不可,呵呵,問了項目,就開始問技術,只要我簡歷上寫的技術,他都會問的很仔細,有幾個地方,我記得不是很清楚,也就打哈哈過去,他也沒說什么,就這樣問了大概一個多鐘頭,他才說,好了,你在這等下,就走了,我好不容易許了一口氣,心里也沒什么底,等了10分鐘的樣子,來了一個領導模樣的人物,拿了本筆記本,就坐在我旁邊,和我聊起了一些看似瑣碎的東西,其實在暗里考察的問題,總體感覺還過的去,完了,他說,我考慮下,就走了,出去的時候我和面試我技術的考官一起出去,他問我感覺怎么樣,我說還行,他說過幾天會電話通知我,呵呵,當時應該問下他機會大不,可惜了,現在也只好在家等結果了,不過中博那邊如果要我馬上上班的話,我還真不好抉擇,因為中博那邊是做外包,而且要出差,雖然薪資有點誘人,但畢竟感覺沒進華為好.
          ??????失業的日子的確比較枯燥,閑著沒事就隨便寫寫 了,呵呵,很晚了,要睡了....

          posted @ 2006-12-15 01:19 Vista 閱讀(2538) | 評論 (2)編輯 收藏

          2006年12月13日 #

               摘要: 通過分析SQL語句的執行計劃優化SQL(總結) 做DBA快7年了,中間感悟很多。在DBA的日常工作中,調整個別性能較差的SQL語句時一項富有挑戰性的工作。其中的關鍵在于如何得到SQL語句的執行計劃和如何從SQL語句的執行計劃中發現問題。總是想將日常經驗的點點滴滴總結一下,但是直到最近才下定決心,總共花了3個周末時間,才將其整理成冊,便于自己日常工作。不好意思獨享,所以將其貼出...  閱讀全文
          posted @ 2006-12-13 19:32 Vista 閱讀(3457) | 評論 (0)編輯 收藏

          2006年12月9日 #

          dom4j(Version 1.6.1)快速入門

          Parsing XML

          或許你想要做的第一件事情就是解析一個某種類型的XML文檔,用dom4j很容易做到。請看下面的示范代碼:

          import java.net.URL;

          import org.dom4j.Document;
          import org.dom4j.DocumentException;
          import org.dom4j.io.SAXReader;

          public class Foo {

          public Document parse(URL url) throws DocumentException {
          SAXReader reader = new SAXReader();
          Document document = reader.read(url);
          return document;
          }
          }

          使用迭代器(Iterators)

          我們可以通過多種方法來操作XML文檔,這些方法返回java里標準的迭代器(Iterators)。例如:

          public void bar(Document document) throws DocumentException {
          Element root = document.getRootElement();
          //迭代根元素下面的所有子元素
          for ( Iterator i = root.elementIterator(); i.hasNext(); ) {
          Element element = (Element) i.next();
          //處理代碼
          }

          //迭代根元素下面名稱為"foo"的子元素
          for ( Iterator i = root.elementIterator( "foo" ); i.hasNext(); ) {
          Element foo = (Element) i.next();
          //處理代碼
          }

          // 迭代根元素的屬性attributes)元素
          for ( Iterator i = root.attributeIterator(); i.hasNext(); ) {
          Attribute attribute = (Attribute) i.next();
          // do something
          }
          }

          強大的XPath導航

          在dom4j中XPath可以表示出在XML樹狀結構中的Document或者任意的節點(Node)(例如:Attribute,Element 或者 ProcessingInstruction等)。它可以使在文檔中復雜的操作僅通過一行代碼就可以完成。例如:

          public void bar(Document document) {
          List list = document.selectNodes( "http://foo/bar" );

          Node node = document.selectSingleNode( "http://foo/bar/author" );

          String name = node.valueOf( "@name" );
          }

          如果你想得到一個XHTML文檔中的所有超文本鏈接(hypertext links)你可以使用下面的代碼:

          public void findLinks(Document document) throws DocumentException {

          List list = document.selectNodes( "http://a/@href" );

          for (Iterator iter = list.iterator(); iter.hasNext(); ) {
          Attribute attribute = (Attribute) iter.next();
          String url = attribute.getValue();
          }
          }

          如果你需要關于XPath語言的任何幫助,我們強烈推薦這個站點Zvon tutorial他會通過一個一個的例子引導你學習。

          快速遍歷(Fast Looping)


          如果你不得不遍歷一個非常大的XML文檔,然后才去執行,我們建議你使用快速遍歷方法(fast looping method),它可以避免為每一個循環的節點創建一個迭代器對象,如下所示:

          public void treeWalk(Document document) {
          treeWalk( document.getRootElement() );
          }

          public void treeWalk(Element element) {
          for ( int i = 0, size = element.nodeCount(); i < size; i++ ) {
          Node node = element.node(i);
          if ( node instanceof Element ) {
          treeWalk( (Element) node );
          }
          else {
          // do something....
          }
          }
          }

          生成一個新的XML文檔對象

          在dom4j中你可能常常希望用程序生成一個XML文檔對象,下面的程序為你進行了示范:

          import org.dom4j.Document;
          import org.dom4j.DocumentHelper;
          import org.dom4j.Element;

          public class Foo {

          public Document createDocument() {
          Document document = DocumentHelper.createDocument();
          Element root = document.addElement( "root" );

          Element author1 = root.addElement( "author" )
          .addAttribute( "name", "James" )
          .addAttribute( "location", "UK" )
          .addText( "James Strachan" );

          Element author2 = root.addElement( "author" )
          .addAttribute( "name", "Bob" )
          .addAttribute( "location", "US" )
          .addText( "Bob McWhirter" );

          return document;
          }
          }

          將一個文檔對象寫入文件中

          將一個文檔對象寫入Writer對象的一個簡單快速的途徑是通過write()方法。

          FileWriter out = new FileWriter( "foo.xml" );
          document.write( out );

          如果你想改變輸出文件的排版格式,比如你想要一個漂亮的格式或者是一個緊湊的格式,或者你想用Writer 對象或者OutputStream 對象來操作,那么你可以使用XMLWriter 類。

          import org.dom4j.Document;
          import org.dom4j.io.OutputFormat;
          import org.dom4j.io.XMLWriter;

          public class Foo {

          public void write(Document document) throws IOException {

          // 寫入文件
          XMLWriter writer = new XMLWriter(
          new FileWriter( "output.xml" )
          );
          writer.write( document );
          writer.close();


          // 以一種優雅的格式寫入System.out對象
          OutputFormat format = OutputFormat.createPrettyPrint();
          writer = new XMLWriter( System.out, format );
          writer.write( document );

          // 以一種緊湊的格式寫入System.out對象
          format = OutputFormat.createCompactFormat();
          writer = new XMLWriter( System.out, format );
          writer.write( document );
          }
          }

          轉化為字符串,或者從字符串轉化

          如果你有一個文檔(Document)對象或者任何一個節點(Node)對象的引用(reference),象屬性(Attribute)或者元素(Element),你可以通過asXML()方法把它轉化為一個默認的XML字符串:

          Document document = ...;
          String text = document.asXML();

          如果你有一些XML內容的字符串表示,你可以通過DocumentHelper.parseText()方法將它重新轉化為文檔(Document)對象:

          String text = "James";
          Document document = DocumentHelper.parseText(text);

          通過XSLT樣式化文檔(Document)


          使用Sun公司提供的JAXP API將XSLT 應用到文檔(Document)上是很簡單的。它允許你使用任何的XSLT引擎(例如:Xalan或SAXON等)來開發。下面是一個使用JAXP創建一個轉化器(transformer),然后將它應用到文檔(Document)上的例子:

          import javax.xml.transform.Transformer;
          import javax.xml.transform.TransformerFactory;

          import org.dom4j.Document;
          import org.dom4j.io.DocumentResult;
          import org.dom4j.io.DocumentSource;

          public class Foo {

          public Document styleDocument(
          Document document,
          String stylesheet
          ) throws Exception {

          // 使用 JAXP 加載轉化器
          TransformerFactory factory = TransformerFactory.newInstance();
          Transformer transformer = factory.newTransformer(
          new StreamSource( stylesheet )
          );

          // 現在來樣式化一個文檔(Document)
          DocumentSource source = new DocumentSource( document );
          DocumentResult result = new DocumentResult();
          transformer.transform( source, result );

          // 返回經過樣式化的文檔(Document)
          Document transformedDoc = result.getDocument();
          return transformedDoc;
          }
          }

          原文地址
          dom4j下載地址

          posted @ 2006-12-09 22:41 Vista 閱讀(405) | 評論 (0)編輯 收藏

          2006年12月6日 #

               摘要: 主  題: ? OR...  閱讀全文
          posted @ 2006-12-06 19:10 Vista 閱讀(419) | 評論 (0)編輯 收藏

          2006年12月5日 #

          ?
          Huihoo - Enterprise Open Source

          ?Last Modified: 2006.02.23

          JBoss 4.0.2集群指南


          (來源:http://www.javaresearch.org )


          bromon原創?請尊重版權

          ????本文主要講解JBoss?cluster的基本知識以及簡單的配置方法,其間涉及了一些jboss的補充知識。

          一、材料準備:

          1、????JBoss?4.0.2????

          JBoss各個版本之間差異比較大,即使同為jboss?4.x的版本,內部組件的版本也不一致,所以請盡量使用同一版本的server。目前已經證明可以配置cluster的版本多為jboss?3.2.6和jboss?4.0.2。

          2、????Apache?2.0.54

          3、????Apache?mod_jk-1-2-13-apache-2-0-54

          二、安裝:

          1、????jboss4.0.2與apache?2.0.54的安裝請自行搞定。假設jboss的安裝目錄為%jboss%,apache安裝目錄為%apache%。

          2、????mod_jk的安裝。

          從apache.org獲得文件mod_jk-1-2-13-apache-2-0-54.so,將該文件拷貝到%apache%\?modules。

          三、jboss?cluster入門

          ????Jboss?支持如下類型的cluster:EJB、web、JNDI、JMS,我們主要了解web?cluster。
          Web?cluster實際上可以劃分為兩個話題:負載均衡?(load?balance)?和狀態同步。它們是互相獨立的,單獨配置。

          負載均衡的概念比較簡單,重要的是負載均衡的粒度。可以選擇針對每個request的均衡,或者是針對每個用戶的均衡。選擇不同的粒度,需要不同的狀態同步方式。

          1、基于request的負載均衡

          ????該種方式下,負載均衡器?(load?balancer)會根據各個node的狀況,把每個http?request進行分發。使用這樣的均衡策略,就必須在多個node之間復制用戶的session,實時保持整個cluster的用戶狀態同步,這種操作被稱為session復制(session?replication)。Jboss的實現原理是使用攔截器(interceptor),根據用戶的同步策略攔截request,做同步處理后再交給server產生響應。

          ????該方法的優點是客戶不會被綁定都具體的node,只要還有一個node存活,用戶狀態都不會丟失,cluster都能夠繼續工作。缺點是node之間通信頻繁,響應速度有影響,多并發、高頻操作的情況下性能下降比較厲害。

          2、????基于用戶的負載均衡

          該種方式下,當用戶發出第一個request后,負載均衡器動態的把該用戶分配到某個節點,并記錄該節點的jvm路由,以后該用戶的所有request都會被綁定這個jvm路由,用戶只會與該server發生交互,這種策略被稱為粘性session(session?sticky)。

          該方法的優點是響應速度快,多個節點之間無須通信。缺點也很明顯,某個node死掉以后,它負責的所有用戶都會丟失session。

          四、實戰

          1、負載均衡

          ????Jboss的負載均衡目前有兩種方案,一是使用apache的mod_jk,二是使用jboss自帶的負載均衡模塊。下面分別講解這兩種配置。

          mod_jk的配置

          1、????請確認%apache%\modules下已經有mod_jk-1-2-13-apache-2-0-54.so文件。
          2、????修改%apache%\conf\httpd.conf????在文件末尾添加:????Include?conf/mod_jk2.conf
          3、????在%apache%\conf下新建文件????mod_jk2.conf????????文件內容如下:

          #?Load?mod_jk?module.?Specify?the?filename
          #?of?the?mod_jk?lib?you’ve?downloaded?and
          #?installed?in?the?previous?section
          LoadModule?jk_module?modules/mod_jk-1-2-13-apache-2-0-54.so
          #?Where?to?find?workers.properties
          JkWorkersFile?conf/workers2.properties
          #?Where?to?put?jk?logs
          JkLogFile?logs/mod_jk.log
          #?Set?the?jk?log?level?[debug/error/info]
          JkLogLevel?info
          #?Select?the?log?format
          JkLogStampFormat?"[%a?%b?%d?%H:%M:%S?%Y]?"
          #?JkOptions?indicate?to?send?SSL?KEY?SIZE,
          JkOptions?+ForwardKeySize?+ForwardURICompat?-ForwardDirectories
          #?JkRequestLogFormat?set?the?request?format
          JkRequestLogFormat?"%w?%V?%T"
          JkMount?/*?loadbalancer

          其中JkMount?/*?loadbalancer的意思是,把所有的請求都發給loadbalancer處理。可以通過修改url來控制發送某些request。
          4、在%apache%\conf下新建文件????workers2.properties????????其內容為:

          worker.list=loadbalancer,server1,server2

          #?Define?the?first?node...
          worker.server1.port=8009
          worker.server1.host=172.16.0.116
          worker.server1.type=ajp13
          worker.server1.lbfactor=1
          worker.server1.local_worker=1
          worker.server1.cachesize=10

          #?Define?the?first?node...
          worker.server2.port=8009
          worker.server2.host=172.16.32.88
          worker.server2.type=ajp13
          worker.server2.lbfactor=1
          worker.server2.local_worker=1
          worker.server2.cachesize=10

          #?Now?we?define?the?load-balancing?behaviour
          worker.loadbalancer.type=lb
          worker.loadbalancer.balanced_workers=server1,server2
          worker.loadbalancer.sticky_session=1

          其中對于node的命名規則是worker.節點名.xxxx。所以上述文件定義了兩個節點:server1和server2。8009端口是jboss默認的ajp端口,另外需要注意的是worker.server2.lbfactor參數,它是節點的負載加權,它的值越大,獲得負載的機會就越大。可以根據node的硬件性能進行調整。worker.loadbalancer.sticky_session參數是指定是否使用粘性session。

          所有需要負載均衡的節點,都必須在worker.loadbalancer.balanced_workers參數中列舉出來。

          請記住所有node的名稱和它對應著哪臺機器,后面的配置中會使用。

          嘗試啟動apache:%apache\bin\apache.exe,正常情況下沒有任何提示。如果你使用的jk是2.0的,那么配置文件的寫法完全不同,由于mod_jk2已經停止開發,所以apache并沒有提供任何講解,對于配置文件的編寫也沒有任何指導。

          Jboss自帶均衡器的配置

          ????將文件夾%jboss%\docs\examples\varia\loadbalancer\loadbalancer.sar拷貝到%jboss%\server\all\deploy下,并且修改loadbalancer.sar\loadbalancer.sar\META-INF\jboss-service.xml,在<host>標簽中類出所有節點,在<sticky-session>標簽中指定是否使用粘性session。配置完成。

          ????該均衡器的缺點是負載能力相對不高,配置參數太少,比如無法指定不同節點的負載加權,所以后面都以mod_jk為例,不再講解jboss自帶的負載均衡器的內容。
          ?

          ????負載均衡的配置基本完成,啟動jboss,其中過程中會列出DefaultPatition中所有的節點:
          run.bat?-c?all

          ?

          任何節點的關閉與啟動都會在cluster中廣播,比如加如一個新節點后,其他節點會得到以下提示:
          ?


          2、session?sticky配置

          ????apache應該會以粘性session的方式分發請求。部署一個應用測試一下,你會發現粘性session沒有起作用。因為我們還沒有給jboss配置jvm路由(?jvmRoute),apache就無法知道究竟哪些session是屬于哪個節點的。我們繼續往下:

          ????修改server1機器上的jboss的配置文件:%jboss%\server\all\deploy\jbossweb-tomcat55.sar\?META-INF\?jboss-service.xml

          ????在110行有:<attribute?name="UseJK">false</attribute>,將它改為true。值得注意的是在這行標簽上面有一段注釋,要求你在server.xml中必須有:
          Engine?name="jboss.web"?jmvRoute="Node1"?defaultHost="localhost"

          ????請注意這里有一個氣死人不償命的小bug,jboss的官方文檔把?jvmRoute寫成了jmvRoute,就是v和m兩個字母的顛倒讓我郁悶了三天,翻遍了jboss.com和theserverside.com。都是直接拷貝的錯,吐血吐到脫水啊。

          ????下面需要修改server1上的%jboss%\server\all\deploy\jbossweb-tomcat55.sar\?server.xml,在32行左右有:

          <Engine?name="jboss.web"?defaultHost="localhost">

          給它增加一個jvmRoute屬性:

          <Engine?jvmRoute="server1"?name="jboss.web"?defaultHost="localhost">

          請注意,jvmRoute的值必須和mod_jk中的節點名字正確對應,否則無法正確路由。Cluster中的所有節點都應該做相應的配置。

          Jboss的配置完成了,下面需要在你的web應用中修改配置文件,讓它支持集群。

          在WEB-INF\web.xml中加入屬性:????<distributable/>

          Ok,基于用戶的cluster完成了,每個用戶會綁定都某個節點上進行交互。這種綁定是如何完成的呢?原來apache把客戶分發到節點后,該節點會在用戶的session?id后面加上此節點的路由名稱,變成這個樣子:

          Efdfxxd98daja87daj76da2dka**,server1

          ????有了這個標志,就能分辨該session屬于哪個節點。

          3、session?replication配置

          ????下面要做的是基于request的cluster,也就讓各個節點之間互相復制session狀態。有兩種復制模式,同步與異步。使用同步的方式,jboss會把session復制的操作和對request的響應放到一個應用事務(application?transaction),session復制完成后才去處理request。異步復制則發送session復制的消息后馬上處理request,session復制則會稍有延遲。但是在多框架的web頁面中,這樣的集群方式會有問題。由于frame在同一時間發出多個request,會造成一些混亂,這也是采用基于用戶的集群方式的原因之一。

          ????JBoss?4.0.2中采用了Jboss?cache來實現session復制,實際上就是一個分布式緩存,由于session?id中包含了jvm?route,所以能夠分辨session屬于哪個節點。Session的更新類似于hibernate中的樂觀鎖,有了更新之后就讓session的版本號增加,其他節點通過對比版本號來決定是否同步session狀態。

          ????配置session?replication首先需要編輯
          %jboss%?server\all\deploy\jbossweb-tomcat55.sar\META-INF\?jboss-service.xml,88行左右有:
          <attribute?name="SnapshotMode">instant</attribute>
          這就是剛才提到的復制模式,instant為立即復制,如果設為interval?那么系統會在延遲一段時間再進行復制,時間長度在<attribute?name="SnapshotInterval">2000</attribute>中指定,單位是毫秒。

          單獨配置這一個地方還不夠,在%jboss%?server\all\deploy\?tc5-cluster-service.xml中有:

          <attribute?name="CacheMode">REPL_ASYNC</attribute>

          這里才真正決定復制是同步的還是異步的,可以指定為REPL_ASYNC(異步)或者REPL_SYNC(同步)。

          在這個文件下面一點,還有一個config標簽,里面指定了各個節點在進行session復制的時候如何通信,有udp和tcp兩種可選,如果使用udp方式,那么應該將udp的lookback屬性指定為true,因為windows上有一個叫做media?sense的東西會影響udp?multicast。注意如果你不了解multi?address的ip規則,請不要隨便修改mcast_addr的值。如果采用tcp方式的話,應該指定bind_addr的值為本機ip,并且在TCPPING標簽的initial_hosts屬性中列出所有節點,格式是”機器名[端口號]”,比如在我們的例子中,就應該這樣配置tcp(以其中一個節點為例):

          <config>
          <TCP?bind_addr="172.16.0.116"?start_port="7810"?loopback="true"/>
          <TCPPING?initial_hosts="172.16.0.116[7810],172.16.32.88[7810]"?port_range="3"?timeout="3500"
          num_initial_members="3"?up_thread="true"?down_thread="true"/>
          <MERGE2?min_interval="5000"?max_interval="10000"/>
          <FD?shun="true"?timeout="2500"?max_tries="5"?up_thread="true"?down_thread="true"?/>
          <VERIFY_SUSPECT?timeout="1500"?down_thread="false"?up_thread="false"?/>
          ????<pbcast.NAKACK?down_thread="true"?up_thread="true"?gc_lag="100"
          ?????????retransmit_timeout="3000"/>
          ????<pbcast.STABLE?desired_avg_gossip="20000"?down_thread="false"?up_thread="false"?/>
          ????<pbcast.GMS?join_timeout="5000"?join_retry_timeout="2000"?shun="false"
          print_local_addr="true"?down_thread="true"?up_thread="true"/>
          <pbcast.STATE_TRANSFER?up_thread="true"?down_thread="true"/>
          </config>

          ????JBoss的clustering版主建議盡量使用udp。不過在Sobey內部,建議使用tcp方式,經測試可能有不明物體在影響udp通信,導致Timeout異常。

          ????在%jboss%\?server\all\deploy\?cluster-service.xml中也有關于udp和tcp的配置信息,在4.0以前版本的jboss中,會以這個文件為主配置,4.0以后都以tc5-cluster-service.xml為主配置。

          ????Jboss的配置完成了,最后需要在web應用中增加配置信息,控制session復制的粒度。在WEB-INF\????jboss-web.xml中增加以下內容:

          <replication-config>
          ????<replication-trigger>SET_AND_NON_PRIMITIVE_GET</replication-trigger>
          ????<replication-granularity>SESSION</replication-granularity>
          ??</replication-config>

          其中replication-trigger是指定哪些操作引發session的版本更新,它的取值有:

          SET_AND_GET????????
          SET_AND_NON_PRIMITIVE_GET
          SET

          replication-granularity是復制粒度,可以取session或attribute。如果取為attribute有可能導致復制失敗,這是目前版本的jboss?cache的一個bug,等待修正。

          部署項目,測試,如果配置沒有問題,可以在%jboss%\0server\all\log\server.log中發現類似于這樣的信息:

          DEBUG?[org.jboss.web.tomcat.tc5.session.JBossCacheManager]?check?to?see?if?needs?to?store?and?replicate?session?with?id?Im9-qpuaXppMS+xXwE3M+Q**.server1?

          DEBUG?[org.jboss.web.tomcat.tc5.session.ClusteredSession]?processSessionRepl():?session?is?dirty.?Will?increment?version?from:?20?and?replicate.

          ????Session?replication配置的成功率比較低,情況也很復雜,請仔細操作。

          五、分布式熱部署(distributable?hot?deploy)

          ????在一個節點很多的cluster中,如果部署應用的時候必須把程序文件拷貝到每個機器上的話,那實在太愚蠢了,幸好通過all啟動的jboss自動支持分布式熱部署。把支持cluster的應用(通常需要打包成war文件),放到%jboss%\server\all\farm下,那么處于同一cluster中的其他節點會自動下載并且部署,jboss把這個稱為Farm?deploy。如下圖:



          End?2005-7-11?Released?by?bromon

          ? 2006 Huihoo
          posted @ 2006-12-05 09:30 Vista 閱讀(1034) | 評論 (0)編輯 收藏

          2006年11月10日 #

               摘要: JS正則表達式詳解[收藏] ...  閱讀全文
          posted @ 2006-11-10 09:58 Vista 閱讀(248) | 評論 (0)編輯 收藏

          2006年11月7日 #

          這個知識點不多,但屬于java的高級技術,相信熟悉SPRING的朋友對它一定不會陌生,今天花了點時間對java的動態代理進行了學習,感覺還可以,因為是結合spring來看的,所以練習的是面向接口的代理模式,但應該也是最常用的動態代理..,廢話不多說,看例子:
          package?org.diego;

          public?interface?Ip?{
          ????
          public?void?say();
          }


          實現類:
          package?org.diego;

          public?class?P?implements?Ip{
          ????
          public?void?say(){
          ????????System.out.println(
          "hello");
          ????}

          }


          代理類:

          package?org.diego;

          import?java.lang.reflect.InvocationHandler;
          import?java.lang.reflect.Method;

          class?TraceHandler?implements?InvocationHandler?{
          ????
          private?Object?target;

          ????
          public?TraceHandler(Object?t)?{
          ????????target?
          =?t;
          ????}


          ????
          public?Object?invoke(Object?proxy,?Method?method,?Object[]?args)?throws?Throwable?{
          ????????
          //?TODO?Auto-generated?method?stub
          ????????if?(method.getName().startsWith("say"))?{
          ????????????System.out.println(
          "hello,before?method");
          ????????????Object?result?
          =?method.invoke(target,?args);
          ????????????System.out.println(
          "World,after?method");
          ????????????
          return?result;
          ????????}

          ????????
          return?null;
          ????????
          ????}

          }


          測試類:
          /*
          ?*?@author?diego.liu
          ?*?@contact?vista.lbw@gmail.com
          ?*?@date?2006-11-7
          ?
          */

          package?org.diego;

          import?java.lang.reflect.InvocationHandler;
          import?java.lang.reflect.Proxy;

          public?class?ProxyTest?{

          ????
          public?static?void?main(String[]?args)?{
          ????????P?test?
          =?new?P();
          ????????InvocationHandler?handler?
          =?new?TraceHandler(test);
          ????????Ip?proxy?
          =?(Ip)?Proxy.newProxyInstance(test.getClass().getClassLoader(),?test.getClass().getInterfaces(),
          ????????????????handler);
          ????????proxy.say();
          ????}


          }


          已經測試可以運行,歡迎拍磚。。。
          posted @ 2006-11-07 18:14 Vista 閱讀(1662) | 評論 (0)編輯 收藏

          2006年10月31日 #

               摘要: 雖然考慮到讀取文件會影響性能,最終沒有采用這種方式,而是取數據庫,但總結出來以后說不定用的著,呵呵.1,下載dom4j2,寫xml的代碼public?class?AddPictureAction?extends?BaseAction?{????public?ActionForward?execute(ActionMapping?mapping,?ActionForm?form,?HttpServl...  閱讀全文
          posted @ 2006-10-31 17:10 Vista 閱讀(1443) | 評論 (0)編輯 收藏

          2006年10月13日 #

               摘要: 這是一個小東東,有的時候用的著,呵呵。<script?language="javascript"?>????function?leftToRight(aa,bb,cc){????????var?selected;????????var?b?=?false;????????var?bLength?=?bb.length;????????for(var?i=0;?i?<?aa.len...  閱讀全文
          posted @ 2006-10-13 20:39 Vista 閱讀(1838) | 評論 (10)編輯 收藏

          主站蜘蛛池模板: 海安县| 彩票| 磐安县| 株洲市| 宜良县| 临夏县| 广东省| 兴海县| 武夷山市| 迁西县| 柘荣县| 惠安县| 梧州市| 蒲江县| 梅州市| 会宁县| 苏尼特右旗| 遂溪县| 慈利县| 安仁县| 兴城市| 金山区| 巴彦淖尔市| 土默特右旗| 珲春市| 宕昌县| 芦溪县| 建湖县| 红原县| 滕州市| 综艺| 婺源县| 唐海县| 郑州市| 陇西县| 盐城市| 宜阳县| 治县。| 建昌县| 梨树县| 鱼台县|