itstarting:IT進行時

          想自己所想,做自己所愛

            BlogJava :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理 ::
            28 隨筆 :: 3 文章 :: 55 評論 :: 0 Trackbacks

          2006年6月30日 #

               摘要: Buffalo是一個前后貫通的完整的Ajax框架,目前最新的版本是2.0.1,其主頁是:
          http://buffalo.sourceforge.net/,可通過該頁面找到下載。
          不過該版本自2007年來就沒有更新了,有點遺憾,不管怎樣,一出來就關注到了,早前通讀過代碼,是個好作品。
          上周開始用了些零碎的時間,重新評估并進行了深入的研究,其目的在于通過深度掌握某個優(yōu)秀的貫穿前后端的AJAX框架,以提高自己的整體認知感。

          Buffalo最有價值之初,個人感覺有兩點:
          1、后端實現(xiàn)了較為完整的基于xml的xml<->object序列化反序列化協(xié)議;
          2、前端提供了適配協(xié)議的調(diào)用封裝和響應解析機制,并基于回調(diào)機制提供編碼API。
            閱讀全文
          posted @ 2010-01-12 14:38 IT進行時 閱讀(3068) | 評論 (0)編輯 收藏

          經(jīng)過幾個晚上的奮戰(zhàn),Hadoop-0.20.1+Ubuntu9.10實戰(zhàn)終于出爐。

          目錄:
          一、環(huán)境準備 1
          二、安裝JDK6 1
          三、配置SSH 2
          四、安裝配置hadoop 4
          4.1下載及安裝 4
          4.2配置 4
          4.2.1配置$HADOOP_HOME/conf/hadoop-env.sh 4
          4.2.2配置$HADOOP_HOME/conf/core-site.xml 4
          4.2.3配置$HADOOP_HOME/conf/mapred-site.xml 5
          4.2.4格式化namenode 5
          4.3啟動及驗證 5
          五、跑第一個wordcount例子 7
          4.1準備工作 7
          4.2運行例子 8
          4.3看結果 11
          4.4在eclipse中調(diào)試/運行 12
          4.5分析代碼 15
          六、改進的wordcount例子 17
          參考 23
          FAQ 23
          1、xxx is not in the sudoers file解決方法 23
          2、/etc/sudoers is mode 0640, should be 0440怎么回事? 24
          3、如何增加ubuntu的SWAP空間? 24
          4、bin/hadoop dfs到底有哪些命令? 25

          原文和文檔我放在了javaeye,這里給個鏈接吧:
          http://itstarting.javaeye.com/blog/520985
          posted @ 2009-12-15 22:46 IT進行時 閱讀(1711) | 評論 (1)編輯 收藏

           

                         1JDK安裝配置

              選用最新的版本6.0.

              打開終端,執(zhí)行以下命令:

                  sudo apt-get install sun-java6-jdk

              按照提示做就是了。

              配置JAVA環(huán)境變量:

                  sudo gedit /etc/environment

                 在其中添加如下兩行:

                  CLASSPATH=.:/usr/lib/jvm/java-6-sun/lib

                  JAVA_HOME=/usr/lib/jvm/java-6-sun

              執(zhí)行命令:sudo gedit /etc/jvm,在最前面加入:

                 /usr/lib/jvm/java-6-sun

                         2Tomcat安裝配置

              還是喜歡經(jīng)典的Tomcat5.5,http://tomcat.apache.org去下載。

              文件為:apache-tomcat-5.5.28.zip

              解壓縮:

              unzip /home/zhengxq/下載/apache-tomcat-5.5.28.zip -d $HOME/java

                         3Eclipse安裝配置

              下載最新的版本,并解壓縮:

              zhengxq@zhengxq-desktop:~$ tar zxf $HOME/下載/eclipse-java-galileo-SR1-linux-gtk.tar.gz -C $HOME/java

              此時直接通過$HOME/java/eclipse/eclipse即可啟動。

              Tomcat插件是必須的,下載并解壓縮到eclipse/plugins下,重啟eclipse即可。

              下面是高級篇:)。為了建立更方便的導航,可以這樣:

              1、在/usr/bin目錄下創(chuàng)建一個啟動腳本eclipse

              sudo gedit /usr/bin/eclipse

             
          然后在該文件中添加以下內(nèi)容:

              #!/bin/sh
              export MOZILLA_FIVE_HOME="/usr/lib/mozilla/"
              export ECLIPSE_HOME="/home/zhengxq/java/eclipse"
              $ECLIPSE_HOME/eclipse $*

              2
          、讓修改該腳本的權限,讓它變成可執(zhí)行:

              sudo chmod +x /usr/bin/eclipse

              3
          、在桌面或者gnome菜單中添加eclipse啟動圖標
             
          1)在桌面或者啟動面板上添加圖標:
             
          在桌面(右鍵單擊桌面->創(chuàng)建啟動器)或面板(右鍵單擊面板->添加到面板 ->定制應用程序啟動器)上創(chuàng)建一個新的啟動器,然后添加下列數(shù)據(jù):
             
          名稱:Eclipse Platform
             
          命令:eclipse
             
          圖標: /home/zhengxq/java/eclipse/icon.xpm
             
          2)在Applications(應用程序)菜單上添加一個圖標
             
          用文本編輯器在/usr/share/applications目錄里新建一個名為eclipse.desktop的啟動器,如下面的命令:
              sudo gedit /usr/share/applications/eclipse.desktop
             
          然后在文件中添加下列內(nèi)容:

          [Desktop Entry]
          Encoding=UTF-8
          Name=Eclipse Platform
          Comment=Eclipse IDE
          Exec=eclipse
          Icon=/home/zhengxq/java/eclipse/icon.xpm
          Terminal=false
          StartupNotify=true
          Type=Application
          Categories=Application;Development;

              保存文件,此時即可通過雙擊桌面eclipse的圖標來運行eclipse

              注意: Type=Application后面絕對不能有空格,否則出不來可別抓狂。

          posted @ 2009-12-15 22:44 IT進行時 閱讀(2168) | 評論 (1)編輯 收藏

          ——IT 進行時(Email & MSN:zhengxianquan AT hotmail.com)

          說在前面的話: 作為一名技術人員,喜歡通過自己的實戰(zhàn)去學習,也養(yǎng)成了寫學習筆記的習慣。個人做企業(yè)應用更多,也涉及TB級別的非結構化數(shù)據(jù),對于Hadoop倒是第一次接觸,分布式計算總歸有用武之地。但這個筆記只能說是自己的盲學,就是簡單的看看。

          Keywords:Hadoop; HDFS; 學習筆記

          目錄:
          1. 準備工作 2
          1.1. Supported Platforms 2
          1.2. Hadoop需要的基礎東西 2
          1.3. 安裝Cygwin注意事項 2
          2. 單機上配置過程 3
          2.1. 配置SSH 3
          2.1.1. 配置服務 3
          2.1.2. 啟動Cygwin sshd服務 4
          2.1.3. Setup authorization keys 5
          2.2. 修訂/配置/conf/core-site.xml 7
          2.3. 修訂/配置/conf/mapred-site.xml 9
          2.4. 修訂/配置\conf\masters和slaves 9
          2.5. 修訂/配置\conf\hadoop-env.sh 9
          2.6. 其他數(shù)據(jù)節(jié)點類似,重復即可 10
          3. 格式化及啟動 10
          3.1. 啟動命令 10
          3.2. 如何驗證啟動成功 11
          4. 使用及開發(fā) 12
          4.1. 常用命令行使用方法 12
          4.2. 可以通過瀏覽器訪問 15
          5. FAQ 16
          5.1. 為什么啟動不了? 16
          5.2. 配置文件可能導致的問題 17
          5.3. JobTracker一直有問題? 19
          5.4. 如何驗證配置并啟動成功? 19
          6. 常用命令 20
          7. 參考 21

          地址:http://itstarting.javaeye.com/blog/513659
          posted @ 2009-12-15 22:43 IT進行時 閱讀(2034) | 評論 (1)編輯 收藏

          Aalst提出了工作流有20種基本模式。

          如果不知道的可參考《Workflow Patterns-2002》

           工作流20種基本模式的理解(當然了,后人陸續(xù)擴展、變化,模式數(shù)量不斷變化,但萬變不離其宗,可從這些基本模式看起)

           

          下面是我的初步分析:

          模式名稱

          模式關鍵字

          模式說明

          Basic Control Patterns

          Sequence

          Sequence

          1

          Parallel Split

          AND Split

          2

          Synchronization

          AND Join

          3

          Exclusive Choice

          XOR Split

          4

          Simple Merge

          XOR Join

          5

          ADVANCED BRANCHING AND SYNCHRONIZATION PATTERNS

          Multiple Choice

          OR Split

          6

          Synchronizing Merge

          AND Join

          7

          Multi-merge

          OR Join(+Multi)

          8

          Discriminator

          OR Join(+Reset/Ignore)

          9

          N-out-of-M-join

          OR Join(+Multi M)

          9aN分支,M聚合即可

          STRUCTURAL PATTERNS 

          Arbitrary Cycles[自由循環(huán)]

          XOR Split

          10

          Implicit Termination

          Multi(OR/AND) Split End

          11

          PATTERNS INVOLVING MULTIPLE INSTANCES

          MI without synchronization

          Runtime independent thread by condition

          12,在運行期創(chuàng)建獨立實例(線程、程序等)

          MI with a priori known design time knowledge

          Design time priori Instance

          13,設計期多實例,且需全部完成

          MI with a priori known runtime knowledge

          Runtime multi Instance by condition/free

          14,運行期可基于條件創(chuàng)建多實例

          MI with no a priori runtime knowledge

          Runtime multi Instance free by people

          15,運行期可手工隨意創(chuàng)建多實例

          STATE-BASED PATTERNS 

          Deferred Choice

          XOR Split(By choice)

          16,“推著走”流程,或基于既定條件分支

          Interleaved Parallel Routing

          OR Split + OR Join, Parallel

          17,多分支聚合,分支執(zhí)行順序由運行期確定

          Milestone

          Wait by Milestone

          18,在“里程碑”節(jié)點等待

          CANCELLATION PATTERNS   

          Cancel Activity

          Cancel in specified Activity

          19,在指定的活動取消

          Cancel Case

          Cancel Anywhere/Anytime

          20,任意時候可取消


          可以看到,其實很多是類似的,這為下一步的工作流引擎需求、設計打下基礎。

          拋磚引玉,供大家參考。

          posted @ 2009-12-15 22:38 IT進行時 閱讀(1660) | 評論 (0)編輯 收藏

          1、基于現(xiàn)成的某個Style進行針對性的開發(fā)(這個開發(fā)說白了就是結合自己論文格式的要求不停的重復:修改<->驗證),保存為自己的Style(如“鄭式.ens”);
          2、把Style文件(如“鄭式.ens”)放到\EndNote9\Styles目錄下;
          3、重新啟用EndNote;
          4、打開Open Style Manager…
          5、選中我的Style(如“鄭式.ens”),此時通過選中“鄭氏”啟用樣式:
           

           

          附上樣式文件,適合浙大碩士論文的編寫要求(其他學校是否符合,未知):/Files/itstarting/zheng.rar

          posted @ 2009-08-31 23:14 IT進行時 閱讀(509) | 評論 (0)編輯 收藏

               摘要: 無論是商業(yè)化的還是開源的Portal產(chǎn)品,符合國際標準規(guī)范是必不可少的要求。有的Portal可能不支持WSRP(Web Services for Remote Portlets),但必須符合JSR-168標準。比較突出的開源Portal主要有JBoss Portal、Apache Jetspeet-2,Liferay Portal,還有兩個屬于歐洲的非美產(chǎn)品eXo Platform和GridSph...  閱讀全文
          posted @ 2009-04-15 13:19 IT進行時 閱讀(992) | 評論 (0)編輯 收藏

          Q:WORD莫名其妙的所有引用(如Endnote和插入PPT對象)都變成了域代碼,怎么辦?
          A:工具->選項->視圖;“域代碼”,把它前面的對勾去掉即可!
          備注:我居然嘗試了一次一個一個選擇“切換域代碼”,累死了不說,居然重新打開又這樣,暈死。

          參考:http://zhidao.baidu.com/question/75336298.html
          posted @ 2009-04-12 21:55 IT進行時 閱讀(1624) | 評論 (1)編輯 收藏

          AIX下用nmon進行監(jiān)控和分析實戰(zhàn)

          nmon從這里下載:
          http://www.ibm.com/developerworks/wikis/display/Wikiptype/nmonanalyser

          1、準備
            1)用root用戶登錄到系統(tǒng)中
            2)建目錄:#mkdir /nmon/script
            3)確定版本:#oslevel,以便確定用哪個腳本,我是用530
                  # oslevel -s
                      5300-09-01-0847
            4)把nmon12e_aix530用ftp上傳到/nmon/script
            5)執(zhí)行授權命令:#chmod +x nmon12e_aix530

          2、使用
           1)直接使用:
           ./nmon/nmon12e_aix536 -f -N -m /nmon/log -s 30 -c 2880
           表示:
            -f 按標準格式輸出文件:<hostname>_YYYYMMDD_HHMM.nmon
            -N include NFS sections
            -m 切換到路徑去保存日志文件
            -s 每隔n秒抽樣一次,這里為30
            -c 取出多少個抽樣數(shù)量,這里為2880,即監(jiān)控=2880*(30/60/60)=24小時
             根據(jù)小時計算這個數(shù)字的公式為:c=h*3600/s,比如要監(jiān)控10小時,每隔30秒采樣一次,則c=10*3600/30=1200
           
            2)用crontab定期使用:
           A、執(zhí)行命令:#crontab -e
           B、在最后一行添加如下命令:
            0 8 * * 1,2,3,4,5 /nmon/script/nmon12e_aix530 -f -N -m /nmon/log -s 30 -c 1200
           表示:
            周一到周五,從早上08點開始,監(jiān)控10個小時(到18:00整為止),輸出到/nmon/log

          3、分析
            1)會在/tmp/nmon生成*.nmon的文件把它下載到你的電腦上
            2)打開nmon analyser v339.xls,把宏的安全性設成最低,打開下載好的*.nmon文件。
               并且保存為一個文件,生成的是視圖模式的,非常直觀!


          參考:
          附錄一:crontab參數(shù):
          參考:http://tech.ddvip.com/2008-11/122629526990895.html
               f1 f2 f3 f4 f5 program
          minute  hour  day_of_month  month  weekday  command這些字段接收以下值:
          minute 0 到 59
          hour 0 到 23
          day_of_month 1 到 31
          month 1 到 12
          weekday 0 到 6(星期天到星期六)

           其中f1 是表示分鐘,f2 表示小時,f3 表示一個月份中的第幾日,f4 表示月份,f5 表示一個星期中的第幾天。program 表示要執(zhí)行的程序。
             當 f1 為 * 時表示每分鐘都要執(zhí)行 program,f2 為 * 時表示每小時都要執(zhí)行程序,其馀類推
             當 f1 為 a-b 時表示從第 a 分鐘到第 b 分鐘這段時間內(nèi)要執(zhí)行,f2 為 a-b 時表示從第 a 到第 b 小時都要執(zhí)行,其馀類推
             當 f1 為 */n 時表示每 n 分鐘個時間間隔執(zhí)行一次,f2 為 */n 表示每 n 小時個時間間隔執(zhí)行一次,其馀類推
             當 f1 為 a, b, c,... 時表示第 a, b, c,... 分鐘要執(zhí)行,f2 為 a, b, c,... 時表示第 a, b, c...個小時要執(zhí)行,其馀類推


          附錄二:nmon參數(shù):
          參考http://www.ibm.com/developerworks/wikis/display/Wikiptype/nmonanalyser
          nmon:
          -f            spreadsheet output format [note: default -s300 -c288]
                     Output file is <hostname>_YYYYMMDD_HHMM.nmon

                  -F <filename>  same as -f but user supplied filename
          -c <number>    number of snapshots
          -d      requests disk service and wait times (DISKSERV and DISKWAIT)
          -i <percent>   Ignore processes using less than this amount of CPU when generating TOP section – useful for reducing data volumes
          -g <filename> file containing disk group definitions
          -l <dpl>  number of hdisks per sheet - defaults to 150, maximum 250.  See notes
          -m <dir>    NMON changes to this directory before saving the file
          -r <runname>   goes into spreadsheet file [default hostname]
          -s <seconds>   interval between snap shots
          -x   capacity planning (15 mins for 1 day = -fdt -s900 -c96) 
           -t           include top processes in the output
          -T           as –t plus saves command line arguments in UARG section
          -A          include data for async I/O (PROCAIO) sections
          -D prevents DISK sections being produced (useful when Disk Groups are being used because there are too many hdisks to process)
          -E          stops ESS sections being produced (necessary when Disk Groups are being used because there are too many vpaths to process)
          -J  prevents JFS sections being produced (prevents Excel errors when you have more than 255 filesystems)
          -L includes LARGEPAGE section
          -N include NFS sections
          -S include WLM sections with subclasses
          -W include WLM sections without subclasses
          -Y include SUMMARY section (very efficient alternative to –t if PID level data is not required)

                  example: nmon_aix51 -F asterix.nmon -r Test1 -s6 -c12

          posted @ 2009-02-19 20:24 IT進行時 閱讀(25167) | 評論 (4)編輯 收藏

          解決連接池泄漏步驟

          登錄weblogic console,  %Domain% -> Services -> JDBC -> Connection Pools -> jdbc/ioa

           

          Configuration -> Connection, 點開Advanced Options, 修改以下配置項狀態(tài):

           

          配置項名稱

          默認值

          修改為

          說明

          Enable Connection Leak Profiling

          禁用

          啟用

          開啟連接池泄漏的監(jiān)控。

          Enable Connection Profiling

          禁用

          啟用

          開啟連接池監(jiān)控。

          Inactive Connection Timeout

          0

          100

          連接在指定時間內(nèi)(單位:秒)沒有活動的話,WebLogic會將之釋放并回收到連接池。

           

              以上配置項修改后不影響在跑的應用,不需要重啟服務器或應用(配置項前沒有黃色小圖標 <!--[if !vml]--><!--[endif]-->WebLogic很明確的告訴我們這個配置是不需要重啟的),所以大可放心設置。只是啟用監(jiān)控后會對性能有一些影響,具體影響會有多大,我沒有測試過,但開啟這些設置只是暫時的,得到日志后我們就可以把配置還原會默認值。

          在沒有解決連接池泄漏問題之前,如果沒有請求時連接池將一直保持為0,不會再有連接池滿造成請求無法響應的問題,我們也不用擔心再挨客戶罵,也為我們解決問題爭取了寶貴到時間。

           

                 好了,下面才是關鍵。

           

                 過一段時間后,在bea\user_projects\domains\%domainname%\%servername%目錄下,打開%servername%.log,查找,"A JDBC pool connection leak was detected",如果WebLogic已經(jīng)監(jiān)控到有連接池泄漏的話,就可以找到以下日志,并且很清楚的告訴我們在哪一個類的哪行代碼創(chuàng)建了連接,但沒有關閉(注意紅色加粗字體):


           

          2008-5-22 上午114720 CST       Warning     JDBC                A JDBC pool connection leak was detected. A connection leak occurs when a connection obtained from the pool was not closed explicitly by calling close() and then was disposed by the garbage collector and returned to the connection pool. The following stack trace at create shows where the leaked connection was created. Stack trace at connection create:

                 at weblogic.jdbc.wrapper.PoolConnection.init(PoolConnection.java:75)

                 at weblogic.jdbc.pool.Driver.allocateConnection(Driver.java:254)

                 at weblogic.jdbc.pool.Driver.connect(Driver.java:84)

                 at weblogic.jdbc.jts.Driver.getNonTxConnection(Driver.java:546)

                 at weblogic.jdbc.jts.Driver.connect(Driver.java:140)

                 at weblogic.jdbc.common.internal.RmiDataSource.getConnection(RmiDataSource.java:344)

                 at com.cp.fw.dao.BaseDAO.getConnection(BaseDAO.java:78)

                 at com.cp.fw.dao.dataset.DataSetOp.init(DataSetOp.java:78)

                 at com.cp.fw.dao.dataset.DataSetOp.<init>(DataSetOp.java:45)

                 at com.cp.ia.util.WorkFlowUtil.getNextWrokFlowId(WorkFlowUtil.java:93)

                 at

           

          ……

                

           

                 另外一種方法:

          WebLogic Console,展開 %DomainName% -> Servers -> %ServerName%,選到Logging – Server頁,在頁面最下方點擊 "View server log",同樣查找 "A JDBC pool connection leak was detected",也可以找到同樣的日志。

           

          WebLogic對于日志事件的說明:

           

          Message ID

          BEA-001074

          Subsystem

          JDBC

          Message

          A JDBC pool connection leak was detected. A

          connection leak occurs when a connection obtained

          from the pool was not closed explicitly by calling

          close() and then was disposed by the garbage

          collector and returned to the connection pool. The

          following stack trace at create shows where the

          leaked connection was created.  Stack trace at

          connection create:

          Detail

          A JDBC pool connection leak was detected. A

          connection leak occurs when a connection obtained

          from the pool was not closed explicitly by calling

          close() and then was disposed by the garbage

          collector and returned to the connection pool. A

          stack trace is printed indicating where the leaked

          connection was created.

          Cause

          A JDBC pool connection leak was detected. A

          connection leak occurs when a connection obtained

          from the pool was not closed explicitly by calling

          close() and then was disposed by the garbage

          collector and returned to the connection pool. A

          stack trace is printed indicating where the leaked

          connection was created.

          Action

          Close the connection appropriately.



          原文:http://blog.csdn.net/esky2000/archive/2008/07/22/2689929.aspx
          posted @ 2008-11-13 00:41 IT進行時 閱讀(1956) | 評論 (0)編輯 收藏

           

          ActiveMQ 5.0的文檔實在是太少了,尤其是集成Spring2.x方面更少。

                  下面是配置方面的心得:
                  一、服務器端配置:

           總體參考官方網(wǎng)站進行整合,差點害死人,不停的出現(xiàn)各種配置錯誤,后來經(jīng)過google查詢各種郵件列表,才發(fā)現(xiàn)xsd使用不當。        

          <?xml version="1.0" encoding="UTF-8"?>
          <beans 
            
          xmlns="http://www.springframework.org/schema/beans" 
            xmlns:amq
          ="http://activemq.org/config/1.0"
            xmlns:xsi
          ="http://www.w3.org/2001/XMLSchema-instance"
            xsi:schemaLocation
          ="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd
            http://activemq.org/config/1.0 http://activemq.apache.org/schema/core/activemq-core-5.0.0.xsd"
          >


          </beans>

          這個才是正確的,兩點:

          1、去掉:

          <!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">

          2、用這個而不是那個:

          這個:

                     http://activemq.apache.org/schema/core/activemq-core-5.0.0.xsd

          那個:     
               http://activemq.apache.org/snapshot-schema/activemq-core-5.0-SNAPSHOT.xsd


                  完整的配置如下:        
                  applicationContext-activeMQ.xml

          <?xml version="1.0" encoding="UTF-8"?>
          <beans 
            
          xmlns="http://www.springframework.org/schema/beans" 
            xmlns:amq
          ="http://activemq.org/config/1.0"
            xmlns:xsi
          ="http://www.w3.org/2001/XMLSchema-instance"
            xsi:schemaLocation
          ="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd
            http://activemq.org/config/1.0 http://activemq.apache.org/schema/core/activemq-core-5.0.0.xsd"
          >

            
          <amq:broker useJmx="true" persistent="true"> 
              
          <amq:persistenceAdapter> 
                  
          <amq:jdbcPersistenceAdapter dataSource="#mysql-ds"/> 
                
          </amq:persistenceAdapter> 
              
          <amq:transportConnectors> 
                 
          <amq:transportConnector uri="tcp://localhost:0"/> 
              
          </amq:transportConnectors> 
             
          </amq:broker>
            
            
          <!-- MySql DataSource Setup -->
            
          <bean id="mysql-ds" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
              
          <property name="driverClassName" value="com.mysql.jdbc.Driver"/>
              
          <property name="url" value="jdbc:mysql://localhost/activemq?relaxAutoCommit=true"/>
              
          <property name="username" value="activemq"/>
              
          <property name="password" value="activemq"/>
              
          <!--
              <property name="poolPreparedStatements" value="true"/>
          -->
            
          </bean>
          </beans>


                  二、web.xml配置: 

              <!--activeMQ-->
              
          <context-param>
                  
          <param-name>contextConfigLocation</param-name>
                  
          <param-value>
                      /WEB-INF/applicationContext-activeMQ.xml 
                      /WEB-INF/applicationContext-jms.xml 
                  
          </param-value>
              
          </context-param>

              
          <listener>
                  
          <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
              
          </listener>



                  三、客戶端配置此處僅供參考,還未曾具體實戰(zhàn)確認):
                  applicationContext-jms.xml

          <?xml version="1.0" encoding="UTF-8"?>
          <beans 
            
          xmlns="http://www.springframework.org/schema/beans" 
            xmlns:amq
          ="http://activemq.org/config/1.0"
            xmlns:xsi
          ="http://www.w3.org/2001/XMLSchema-instance"
            xsi:schemaLocation
          ="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd
            http://activemq.org/config/1.0 http://activemq.apache.org/schema/core/activemq-core-5.0.0.xsd"
          >
            
          <!-- ActiveMQ destinations to use  -->
            
          <amq:queue id="destination"  physicalName="org.apache.activemq.spring.Test.spring.embedded"/>

            
          <!-- JMS ConnectionFactory to use, configuring the embedded broker using XML -->
            
          <amq:connectionFactory id="jmsFactory" brokerURL="vm://localhost"/>  
            
          <!-- Spring JMS Template -->
            
          <bean id="jmsTemplate" class="org.springframework.jms.core.JmsTemplate">
              
          <property name="connectionFactory">
                
          <!-- lets wrap in a pool to avoid creating a connection per send -->
                
          <bean class="org.springframework.jms.connection.SingleConnectionFactory">
                  
          <property name="targetConnectionFactory">
                    
          <ref bean="jmsFactory" />
                  
          </property>
                
          </bean>
              
          </property>
              
          <property name="messageConverter">
                  
          <ref bean="dynamicMessageConverter"/>
              
          </property>
            
          </bean>
            
            
          <bean id="dynamicMessageConverter" class="com.tuanzi.message.mq.impl.DynamicMessageConverter"/>  

            
          <bean id="consumerJmsTemplate" class="org.springframework.jms.core.JmsTemplate">
              
          <property name="connectionFactory">
                  
          <ref bean="jmsFactory"/>
              
          </property>
              
          <property name="messageConverter">
                  
          <ref bean="dynamicMessageConverter"/>
              
          </property>
              
          <property name="receiveTimeout">
                  
          <value>10000</value>
              
          </property>
            
          </bean>

            
          <!-- a sample POJO which uses a Spring JmsTemplate -->
            
          <bean id="simpleMessageProducer" class="com.tuanzi.message.mq.impl.SimpleMessageProducer">
              
          <property name="jmsTemplate">
                
          <ref bean="jmsTemplate"></ref>
              
          </property>
              
          <property name="destination">
                
          <ref bean="destination" />
              
          </property>
            
          </bean>

            
          <!-- a sample POJO consumer -->
            
          <bean id="simpleMessageConsumer" class="com.tuanzi.message.mq.impl.SimpleMessageConsumer">
              
          <property name="jmsTemplate" ref="consumerJmsTemplate"/>
              
          <property name="destination" ref="destination"/>
            
          </bean>
          </beans>


              TODO:
              1、客戶端的配置需要實戰(zhàn)后進行進一步的確認、更新;
              2、后期視情況增加一篇《Spring2.x與ActiveMQ5.0成功集成的心得(實戰(zhàn)篇)》


              主要參考:

          http://activemq.apache.org/spring-support.html

          http://activemq.apache.org/xml-reference.html

          posted @ 2008-01-20 23:41 IT進行時 閱讀(3442) | 評論 (3)編輯 收藏

          ORA-00600是Oracle的內(nèi)部錯誤。何謂內(nèi)部錯誤,就是Oracle也認為是uncheck的錯誤了。

          我是在執(zhí)行查詢時出現(xiàn)了這樣的提示,用的是9.2.0.1版本,我查了好長時間,當時的第一反應就是:完了,Oracle的BUG,要打補丁了。

          后來找到了一個論壇,這里:http://oracle.ittoolbox.com/groups/technical-functional/oracle-db-l/ora-00600-internal-error-code-arguments-20084-50364303-23-50364303-23-325619?cv=expanded#。有高人指點,終于解決了。


          我的解決方法很簡單,變更了一個參數(shù):
          STAR_TRANSFORMATION_ENABLED從原來的TRUE改為FALSE。

          只能知其然不知其所以然了。
          posted @ 2007-08-31 09:29 IT進行時 閱讀(23250) | 評論 (6)編輯 收藏

          jmagick是什么?不用我說了吧。

          jmagick的安裝(基于windows),精簡版步驟:
          1、下載jmagick-win-5.5.7-Q8.zip,并把jmagick.jar放到應用的lib下,jmagick.dll拷貝到SYSTEM32下;
          2、安裝ImageMagick-5.5.7-Q8-windows-dll.exe軟件
          3、重新啟動機器
          麻煩點,但對圖片的處理能力,確實超乎想象的(不過用6.2.6版本頻頻出現(xiàn)JVM Crach,嚇死)

          jmagick的使用,我只用了圖片縮放,還可以。
          代碼如下:
             System.setProperty("jmagick.systemclassloader", "no");//這個沒什么好說的,照辦就是了
             ImageInfo info = new ImageInfo(fromFileName);
             MagickImage fromImage = new MagickImage(info);
             Dimension dim = fromImage.getDimension();
             double w = dim.getWidth();
             double h = dim.getHeight();
             int toHeight = (int)(h*toWidth/w);//按寬度比例縮放
                
             MagickImage toImage = fromImage.scaleImage(toWidth, toHeight);//縮放操作
             toImage.setFileName(toFileName);//設置輸出的文件名
             toImage.writeImage(info); //保存


          過程中發(fā)現(xiàn)最新版本的諸多問題,要么NoClassDefFoundError要么Can't find dependent libraries,簡直不勝其煩。

          后來降級到5.5.7,就好了,說明IT人唯最新版本是從的想法不一定正確。

          說心里話,過程中曾經(jīng)出現(xiàn)過多次JVM crach,現(xiàn)在還有心理陰影。
          posted @ 2007-07-26 12:53 IT進行時 閱讀(5825) | 評論 (4)編輯 收藏

              對于開發(fā)和實施人員來說,也許大家經(jīng)常會碰到這樣的對話:

              實施工程師:系統(tǒng)有問題了,是哪里哪里(省略字若干+若干界面截圖)
              開發(fā)工程師:不可能,我這邊還原了整個環(huán)境,包括數(shù)據(jù)庫、代碼和中間件……
              實施工程師:這邊是weblogic,你那邊是?
              開發(fā)工程師:我的是Tomcat,但Tomcat和weblogic的差異呢,不知道……

              然后就沒有結果,因為我們的個人電腦真的無法或者難以承受weblogic或者websphere之重。

              怎么辦呢,其實我們可以用遠程調(diào)試的方法:
             
              三步配置遠程調(diào)試:
              一、對于TOMCAT:
                1、打開catalina.bat,并加入:
                  SET CATALINA_OPTS=-server -Xdebug -Xnoagent -Djava.compiler=NONE -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=5555
                2、配置Eclipse,如下圖(此時Port與上面的address一致,是5555):

           
              3、如果Tocat已經(jīng)起來(注意,可能在另外的機器上),那點擊debug,即可進行與本地服務一樣的調(diào)試過程。

              二、對于Weblogic:
                1、打開startWebLogic.cmd,并調(diào)整執(zhí)行java命令的地方:
          %JAVA_HOME%\bin\java %JAVA_VM% %MEM_ARGS% %JAVA_OPTIONS% -Dweblogic.Name=%SERVER_NAME% -Dweblogic.ProductionModeEnabled=%PRODUCTION_MODE% -Djava.security.policy="%WL_HOME%\server\lib\weblogic.policy" weblogic.Server
          調(diào)整為
          @REM ORG : %JAVA_HOME%\bin\java %JAVA_VM% %MEM_ARGS% %JAVA_OPTIONS% -Dweblogic.Name=%SERVER_NAME% -Dweblogic.ProductionModeEnabled=%PRODUCTION_MODE% -Djava.security.policy="%WL_HOME%\server\lib\weblogic.policy" weblogic.Server
          @REM Surport Remote Debug :
          set JAVA_DEBUG=-Xdebug -Xnoagent -Xrunjdwp:transport=dt_Socket,address=4000,server=y,suspend=n
          %JAVA_HOME%\bin\java %JAVA_VM% %JAVA_DEBUG% %MEM_ARGS% %JAVA_OPTIONS% -Dweblogic.Name=%SERVER_NAME% -Dweblogic.ProductionModeEnabled=%PRODUCTION_MODE% -Djava.security.policy="%WL_HOME%\server\lib\weblogic.policy" weblogic.Server
                2、其他配置類似Tomcat,如下:
              
              3、同樣,如果weblogic已經(jīng)起來(注意,我上面的例子就是weblogic不在本機上,而在于另外的機器上),那點擊debug,即可進行與本地服務一樣的調(diào)試過程,如下:

              大家也許會問:這樣調(diào)試會不會影響客戶使用?當然會影響,如果一旦hit了斷點,則整個應用會被掛起。那怎么樣才能盡可能的進行調(diào)試呢?方法還是有的:
              1、如果是tomcat,重新復制一份tomcat,修改一下端口,然后起來后調(diào)試,此時整個環(huán)境都類似了,調(diào)試起來非常方便;
              2、如果是weblogic,重新建立一個新的domain即可,互不干擾;
              3、如果是websphere,呵呵,沒試過,留給大家的作業(yè)。

              原理?好奇的人還會問,其實就是jdwp(Java(tm) Debug Wire Protocol),有興趣就google一下吧。

          posted @ 2007-06-13 16:22 IT進行時 閱讀(2341) | 評論 (4)編輯 收藏

               摘要: 以前公司購買過eWebEditor,功能應該還是不錯的,但即便到了現(xiàn)在,也還僅是一個IE only的版本,無法滿足現(xiàn)在差異化的需求。故前段時間下了最新的FCKeditor2.3.3版本下來(當然了,連帶java的integration),demo來看看,發(fā)現(xiàn)有幾個地方非常不爽:1、上載的文件,只能放在URL可及的地方(如默認只能放到嵌入應用路徑的/UserFiles/下);2、沒有明確的上載視頻的...  閱讀全文
          posted @ 2007-03-11 20:20 IT進行時 閱讀(6871) | 評論 (12)編輯 收藏

          此類話題已經(jīng)很多,可以參考的文檔也不少,我是參考這個blog的文檔做的:
          http://blogger.org.cn/blog/blog.asp?name=lhwork

          1)環(huán)境和版本:
          Apache2.0.59+Tomcat5.5.15(兩個),一開始用的是Tomcat5.0.28,一直有問題(在后面總結),就升級到5.5去做試驗了,冤枉5.0.28兄弟了:)

          步驟小結為:
          1、安裝(忽略);
          2、配置Tomcat:
          ???1)第一個Tomcat:
          ??????A.啟用jvmRoute??????
          ??? <!-- You should set jvmRoute to support load-balancing via AJP ie :-->
          ??? <Engine name="Standalone" defaultHost="localhost" jvmRoute="tomcat1">??????????
          ??? <!-- Define the top level container in our container hierarchy
          ??? <Engine name="Catalina" defaultHost="localhost">-->
          ??????B.啟用原來禁用的Cluster設置
          ??????
          ??????? <Cluster className="org.apache.catalina.cluster.tcp.SimpleTcpCluster"
          ???????????????? managerClassName="org.apache.catalina.cluster.session.DeltaManager"
          ???????????????? expireSessionsOnShutdown="false"
          ???????????????? useDirtyFlag="true"
          ???????????????? notifyListenersOnReplication="true">

          ??????????? <Membership
          ??????????????? className="org.apache.catalina.cluster.mcast.McastService"
          ????????????????mcastBindAddress="127.0.0.1"
          ??????????????? mcastAddr="224.1.2.3"
          ??????????????? mcastPort="2525"
          ??????????????? mcastFrequency="500"
          ??????????????? mcastDropTime="3000"/>

          ??????????? <Receiver
          ??????????????? className="org.apache.catalina.cluster.tcp.ReplicationListener"
          ??????????????? tcpListenAddress="auto"
          ??????????????? tcpListenPort="4001"
          ??????????????? tcpSelectorTimeout="100"
          ??????????????? tcpThreadCount="6"/>

          ??????????? <Sender
          ??????????????? className="org.apache.catalina.cluster.tcp.ReplicationTransmitter"
          ??????????????? replicationMode="pooled"
          ??????????????? ackTimeout="15000"/>

          ??????????? <Valve className="org.apache.catalina.cluster.tcp.ReplicationValve"
          ?????????????????? filter=".*\.gif;.*\.js;.*\.jpg;.*\.png;.*\.htm;.*\.html;.*\.css;.*\.txt;"/>
          ??????????????????
          ??????????? <Deployer className="org.apache.catalina.cluster.deploy.FarmWarDeployer"
          ????????????????????? tempDir="/tmp/war-temp/"
          ????????????????????? deployDir="/tmp/war-deploy/"
          ????????????????????? watchDir="/tmp/war-listen/"
          ????????????????????? watchEnabled="false"/>
          ?????????????????????
          ??????????? <ClusterListener className="org.apache.catalina.cluster.session.ClusterSessionListener"/>
          ??????? </Cluster>
          ??????C.搞定
          ???2)配置第二個Tomcat(要注意端口沖突了):
          ??????A.變更端口
          ??????<Server port="8005" shutdown="SHUTDOWN">
          ??????=》
          ??????<Server port="8004" shutdown="SHUTDOWN">
          ??????B.變更端口
          ??????<Connector port="8009"
          ?????????????? enableLookups="false" redirectPort="8443" protocol="AJP/1.3" />
          ??????=》
          ??????<Connector port="9009"
          ?????????????? enableLookups="false" redirectPort="8443" protocol="AJP/1.3" />
          ??????C.啟用jvmRoute??????
          ??? <!-- You should set jvmRoute to support load-balancing via AJP ie :-->
          ??? <Engine name="Standalone" defaultHost="localhost" jvmRoute="tomcat2">??????????
          ??? <!-- Define the top level container in our container hierarchy
          ??? <Engine name="Catalina" defaultHost="localhost">-->
          ??????D.啟用原來禁用的Cluster設置??????
          ??????? <Cluster className="org.apache.catalina.cluster.tcp.SimpleTcpCluster"
          ???????????????? managerClassName="org.apache.catalina.cluster.session.DeltaManager"
          ???????????????? expireSessionsOnShutdown="false"
          ???????????????? useDirtyFlag="true"
          ???????????????? notifyListenersOnReplication="true">

          ??????????? <Membership
          ??????????????? className="org.apache.catalina.cluster.mcast.McastService"
          ????????????????mcastBindAddress="127.0.0.1"
          ??????????????? mcastAddr="224.1.2.3"
          ??????????????? mcastPort="2525"
          ??????????????? mcastFrequency="500"
          ??????????????? mcastDropTime="3000"/>

          ??????????? <Receiver
          ??????????????? className="org.apache.catalina.cluster.tcp.ReplicationListener"
          ??????????????? tcpListenAddress="auto"
          ??????????????? tcpListenPort="4002"
          ??????????????? tcpSelectorTimeout="100"
          ??????????????? tcpThreadCount="6"/>

          ??????????? <Sender
          ??????????????? className="org.apache.catalina.cluster.tcp.ReplicationTransmitter"
          ??????????????? replicationMode="pooled"
          ??????????????? ackTimeout="15000"/>

          ??????????? <Valve className="org.apache.catalina.cluster.tcp.ReplicationValve"
          ?????????????????? filter=".*\.gif;.*\.js;.*\.jpg;.*\.png;.*\.htm;.*\.html;.*\.css;.*\.txt;"/>
          ??????????????????
          ??????????? <Deployer className="org.apache.catalina.cluster.deploy.FarmWarDeployer"
          ????????????????????? tempDir="/tmp/war-temp/"
          ????????????????????? deployDir="/tmp/war-deploy/"
          ????????????????????? watchDir="/tmp/war-listen/"
          ????????????????????? watchEnabled="false"/>
          ?????????????????????
          ??????????? <ClusterListener className="org.apache.catalina.cluster.session.ClusterSessionListener"/>
          ??????? </Cluster>
          ??????E.搞定
          3、配置apache:
          ???1)修訂conf/httpd.conf??????
          ??????#add by zhengxq
          ??????LoadModule jk2_module modules/mod_jk2.so
          ???2)新增worders2.properties并放到conf下
          ??????[shm]
          info=Scoreboard. Requried for reconfiguration and status with multiprocess servers.
          file=anon

          # Defines a load balancer named lb. Use even if you only have one machine.
          [lb:lb]
          worker=ajp13:tomcat1
          worker=ajp13:tomcat2

          # Example socket channel, override port and host.
          [channel.socket:localhost:9009]
          port=9009
          host=127.0.0.1

          # define the worker
          [ajp13:localhost:9009]
          channel=channel.socket:localhost:9009
          group=lb

          # Example socket channel, override port and host.
          [channel.socket:localhost:8009]
          port=8009
          host=127.0.0.1

          # define the worker
          [ajp13:localhost:8009]
          channel=channel.socket:localhost:8009
          group=lb

          # Map the Tomcat examples webapp to the Web server uri space
          [uri:/clusterapp/*]
          group=lb
          ??????3)搞定

          3.測試程序,請參考上述參考文檔,如下:
          <%@ page contentType="text/html; charset=GBK" import="java.util.*"%>
          <html><head><title>Cluster App Test</title></head>
          <body>
          Server Info: <%out.print(request.getLocalAddr() + " : " + request.getLocalPort());%>
          <%
          out.println("<br> ID " + session.getId());

          // 如果有新的 Session 屬性設置
          String dataName = request.getParameter("dataName");
          if (dataName != null && dataName.length() > 0) {
          ? String dataValue = request.getParameter("dataValue");
          ? session.setAttribute(dataName, dataValue);
          }

          out.print("<b>Session 列表</b>");

          Enumeration e = session.getAttributeNames();
          while (e.hasMoreElements()) {
          ? String name = (String)e.nextElement();
          ? String value = session.getAttribute(name).toString();
          ? out.println( name + " = " + value);
          ? }
          %>
          <form action="index.jsp" method="POST">
          ? 名稱:<input type=text size=20 name="dataName">
          ? <br>
          ? 值:<input type=text size=20 name="dataValue">
          ? <br>
          ? <input type=submit>
          ? </form>
          </body>
          </html>



          ???所需要注意的是:
          ???1、測試應用的web.xml必須加上:<distributable/>
          ???2、我搞了很久,發(fā)現(xiàn)三個東西起來后,可以訪問,但只能做到負載均衡,不能session復制,這點我重復配置了一次,就是不行,郁悶之下找了tomcat的郵件列表,這樣做:
          ??????1)測試廣播是否正常
          ?????????A. download this jar
          ????????????http://cvs.apache.org/~fhanik/tomcat-replication.jar

          ?????????B. Open two terminals?
          ??????????? a) Terminal one run
          ???????????????java -cp tomcat-replication.jar MCaster 239.255.10.10 2525 Terminal1
          ??????????? b) Terminal two run
          ???????????????java -cp tomcat-replication.jar MCaster 239.255.10.10 2525 Terminal2
          ?????????發(fā)現(xiàn)結果如下:
          ?????????C:\>java -cp tomcat-replication.jar MCaster 224.1.2.3 2525 Terminal1
          Usage MCaster [address port message]
          BEGIN TO RECEIVE
          SENT:Terminal11
          SENT:Terminal12
          SENT:Terminal13
          SENT:Terminal14
          SENT:Terminal15
          SENT:Terminal16
          SENT:Terminal17
          SENT:Terminal18

          ?????????表明廣播有問題,氣死了,難怪Tomcat總是在啟動的時候提示:
          ?????????信息: Manager [/clusterapp]: skipping state transfer. No members active in cluster group.

          ??????后來終于發(fā)現(xiàn)貓膩,必須注意在server.xml的<Cluster ..<Membership里面加上mcastBindAddress="127.0.0.1"。
          ???????
          為什么呢?很簡單,因為我安裝了VPN,這家伙會設置一個虛擬網(wǎng)卡,導致綁定失敗(沒地方責怪了,只好讓它墊背)?!這是通過郵件列表里面所描述的多網(wǎng)卡綁定問題舉一反三得到的判斷。具體請參考:http://www.servlets.com/archive/servlet/ReadMsg?msgId=475067&listName=tomcat-user

          ??????


          posted @ 2007-03-07 10:51 IT進行時 閱讀(7289) | 評論 (5)編輯 收藏

          xsl的新版本(1.1)已經(jīng)在這個月發(fā)布,請看:
          http://www.w3.org/TR/2006/PR-xsl11-20061006/


          這樣,XML在數(shù)據(jù)交換和表現(xiàn)層面的地位,勢必進一步呈現(xiàn)。

          xforms是基于XML發(fā)展起來的聲稱為“下一代的表單(form)”,有一定廣告色彩,但現(xiàn)在正在受到越來越多廠商的支持(如IBM正在熱推的forms產(chǎn)品,且多家瀏覽器廠商已經(jīng)明確支持xforms)。

          其架構如下:


          關注中,也請大家關注了。





          參考文章:
          http://www.xml.com/pub/a/2005/02/09/xforms.html?page=2&x-showcontent=off&x-order=date
          http://www.ws.org.tw/ws/xml_family_show.jsp?TOP_NUM=3&num=8
          posted @ 2006-10-11 10:49 IT進行時 閱讀(1425) | 評論 (1)編輯 收藏

          對于MySQL,還是菜鳥。
          近期做個東西,寫了一個MySQL 的存儲過程,其中涉及Cursor的使用,如下:

          CREATE PROCEDURE `justifyGroupNum`()
          ??? NOT DETERMINISTIC
          ??? SQL SECURITY DEFINER
          ??? COMMENT ''
          BEGIN
          /*how to run:call justifyGroupNum()*/
          DECLARE p_group_id int;
          declare p_num int;
          declare stopFlag int;
          DECLARE cursor_name CURSOR
          ? FOR select c_group_id,count(*) as num
          ????? from `t_group_member`
          ????? where c_valid in (3,4)
          ????? group by c_group_id;
          DECLARE CONTINUE HANDLER FOR NOT FOUND set stopFlag=1;

          OPEN cursor_name;
          REPEAT
          FETCH cursor_name INTO p_group_id,p_num;
          ? begin
          ?????? update t_groupinfo set c_member_number=p_num where c_group_id=p_group_id;
          ? end;
          UNTIL stopFlag = 1
          END REPEAT;
          CLOSE cursor_name;
          END;

          關注點有:
          1、注意設置游標的countinue handler:DECLARE CONTINUE HANDLER FOR NOT FOUND set stopFlag=1;
          2、注意REPEAT和UTILE [停止條件] END REPEAT的使用,否則不會循環(huán);
          3、怎樣RUN?輸入并執(zhí)行:call justifyGroupNum()

          posted @ 2006-10-10 11:49 IT進行時 閱讀(5291) | 評論 (3)編輯 收藏

               摘要: 從形勢來看,如果應用不使用 Spring 就感覺有點落伍——說法有點別扭:好像有點過。誠然, Spring 給我們帶來了太多的好處,以至于幾乎大部分的產(chǎn)品都以聲稱能夠整合 Spring 為榮, Mule 也不能免俗:) 從官方來看, mule 與 spring ...  閱讀全文
          posted @ 2006-08-29 16:00 IT進行時 閱讀(6149) | 評論 (0)編輯 收藏

               摘要: Mule是我比較關注的ESB產(chǎn)品之一。
          從關系來看,其實ServiceMix才是我的初戀:)
          這個文檔是幾個月前的一些簡要的學習筆記,希望對大家有所幫助。(也算OpenDoc了一回,免得良心上老是被譴責:只進不出)

          目前最新的版本是1.3-rc4。  閱讀全文
          posted @ 2006-08-01 15:06 IT進行時 閱讀(2407) | 評論 (3)編輯 收藏

          ?????? Mule和ServiceMix都是codehaus.org下的非常優(yōu)秀的開源項目。現(xiàn)在想來,codehaus.org的勢力范圍好像已經(jīng)越來越大:ActiveMQ,XFire,Drools,PicoContainer...再加上Mule和ServiceMix,其代碼的優(yōu)秀、文檔的齊備和例子的多樣化,足以讓Apache們汗顏——咳,跑題了:)

          ?????? 應該說我最先認識的是ServiceMix,其網(wǎng)址為servicemix.org。等一下,現(xiàn)在登陸上去發(fā)現(xiàn)了apache的雞蛋(apache孵化器標志),完了,被apache用陰招了?果不其然,都舊聞了(請參考http://www.artima.com/forums/flat.jsp?forum=136&thread=125992)。不管怎么運作,首先ServiceMix是一個Java Business Interface (JBI) standard - JSR 208的干凈實現(xiàn),是一個較純的JBI(JSR208)容器。

          ?????? Mule是因為ServiceMix而認識的,因為搜索ServiceMix的時候,有人拿他們做比較。其主頁是:mule.codehaus.org。后來逐步了解,才知道Mule的老大Ross Mason認為兩者沒有太多可比性的原因:Mule不是JBI實現(xiàn),但可以集成任何JBI容器——這讓我想起IBM的兩個產(chǎn)品IBM ESB和IBM Message Broker(IBM自稱的Advance ESB)。

          ?????? 當然,在業(yè)界兩者比較的文章狠多,大家可以參考幾個典型點的:
          ?????? 1)Mule老大Ross Mason和ServiceMix老大James Strachan的口水仗帖子,也非常有助于大家理解兩者的價值及其差異:http://docs.codehaus.org/display/SM/How+does+ServiceMix+compare+to+Mule
          ?????? 2)一個自認為不是專家的專家比較文章:http://www.ctio.noao.edu/~andrew/sm-mule/Mule-v-ServiceMix.html


          ?????? 自己看吧,原滋原味的肯定比我嚼過的好:)
          posted @ 2006-06-30 21:52 IT進行時 閱讀(4361) | 評論 (1)編輯 收藏

          SOA,ESB,JBI,應該說,這是這兩年乃至未來幾年最為熱門的話題了。

          很大,話題真的很大,但我喜歡把這幾個概念說在一塊:因為我覺得他們在很大時候說的都是一個事情——那就是整合,基于服務的應用整合。

          下面是我就這個大話題的第一個開篇雜談,請參考拙作:http://www.aygfsteel.com/itstarting/articles/56027.html
          posted @ 2006-06-30 21:12 IT進行時 閱讀(1718) | 評論 (0)編輯 收藏

          主站蜘蛛池模板: 肃南| 左权县| 兴化市| 崇礼县| 琼海市| 和静县| 成武县| 仪征市| 淮北市| 林州市| 金塔县| 那坡县| 磐石市| 万全县| 竹山县| 江城| 衡东县| 隆化县| 瑞金市| 墨竹工卡县| 大港区| 林州市| 钟山县| 隆德县| 垣曲县| 青阳县| 宁明县| 边坝县| 城固县| 连山| 湘西| 木里| 昭苏县| 莫力| 金塔县| 博罗县| 洪湖市| 彰武县| 富蕴县| 临湘市| 都昌县|