guangnian0412's BLOG

          Java in my life

          常用鏈接

          統(tǒng)計

          積分與排名

          我關(guān)注的Blog

          最新評論

          2006年4月11日 #

          Eclipse RCP與Spring的整合

               摘要: 最近上一個項目想在Eclipse RCP中使用Spring,在網(wǎng)上Google了一下發(fā)現(xiàn)這方面的資料比較少,知道Spring自己有個Spring-OSGI的項目,可以在 Spring中配置OSGI服務(wù)。可是,我只是想在RCP中引入Spring來管理Java Bean,不想去研究那個東西。于是,看看有沒有什么簡單的方法來解決這個問題。  閱讀全文

          posted @ 2006-12-30 21:11 guangnian 閱讀(5632) | 評論 (5)編輯 收藏

          cvsNT 2.5.03.2382添加用戶后出現(xiàn)"no such user"錯誤的解決方法

               摘要: cvsNT 2.5.03.2382添加用戶后出現(xiàn)"no such user"錯誤的解決方法  閱讀全文

          posted @ 2006-09-19 23:50 guangnian 閱讀(5031) | 評論 (13)編輯 收藏

          jira-enterprise-3.6.4-standalone + confluence-2.2.8 + MySQL5.0 安裝破解全過程

               摘要: jira-enterprise-3.6.4-standalone + confluence-2.2.8 + MySQL5.0 安裝破解全過程  閱讀全文

          posted @ 2006-09-19 22:30 guangnian 閱讀(8328) | 評論 (10)編輯 收藏

          笛米特法則詳解(the Law of Demeter or Principle of Least Knowledge)

               摘要: The Law of Demeter和 Principle of Least Knowledge將的都是一回事,是說一個軟件實體要盡可能的只與和它最近的實體進(jìn)行通訊。通常被表述為:talk only to your immediate friends ( 只和離你最近的朋友進(jìn)行交互)。   閱讀全文

          posted @ 2006-06-19 19:44 guangnian 閱讀(4574) | 評論 (5)編輯 收藏

          JBoss Rules 學(xué)習(xí)(七): Drools規(guī)則語言詳解(下)

               摘要: Rule 結(jié)構(gòu)是最重要的結(jié)構(gòu)。 Rule 使用了形如“ IF ” something “ THEN ” action (當(dāng)然,我們的關(guān)鍵字是“ when ”和“ then ”)的形式。

          一個規(guī)則在一個 package 中必須要有唯一的名字。如果一個名字中含有空格,那就需要將名字放在雙引號中(最好總是使用雙引號)。

          Attribute 是可選的(最好是每行只有一個 Attribute )。

          規(guī)則的 LHS 跟在“ when ”關(guān)鍵字的后面(最好是另起一行),同樣 RHS 要跟在“ then ”關(guān)鍵字后面(最好也另起一行)。規(guī)則以關(guān)鍵字“ end ”結(jié)束。規(guī)則不能嵌套。   閱讀全文

          posted @ 2006-06-09 19:38 guangnian 閱讀(15833) | 評論 (17)編輯 收藏

          JBoss Rules 學(xué)習(xí)(六): Drools規(guī)則語言詳解(上)

               摘要: Drools 3 采用了原生的規(guī)則語言,那是一種非 XML 文本格式。在符號方面,這種格式是非常輕量的,并且通過“ expanders ”支持符合你問題域的 Domain Specific Language ( DSL )。這一章把焦點放在了 Drools 原生的規(guī)則格式。如果你想從技術(shù)上了解規(guī)則語言的機制,可以參考“ drl.g ”源文件,這是用 Antlr3 語法來描述規(guī)則語言。如果你使用 Rule Workbench ,內(nèi)容助手將會為你完成大量的規(guī)則結(jié)構(gòu),例如輸入“ ru ”,然后按 ctrl + space ,會為你建立規(guī)則結(jié)構(gòu)。  閱讀全文

          posted @ 2006-06-09 01:16 guangnian 閱讀(14305) | 評論 (7)編輯 收藏

          JBoss Rules 學(xué)習(xí)(五): JBoss Rules 3.0.1 類庫介紹

          下載地址:

          http://labs.jboss.com/portal/index.html?ctrl:id=page.default.downloads&project=jbossrules

          下載文件說明:

          JBoss Rules 3.0.1 Binaries (includes javadocs) ?13MB )― 僅僅包含 JBoss Rules 的四個核心類庫:

          l???????? drools-core.jar 核心引擎,運行時組件。包含了 RETE 引擎和 LEAPS 引擎;

          l???????? drools-compiler.jar 規(guī)則文件的編譯組件,構(gòu)建可執(zhí)行的 RuleBase

          l???????? drools-jsr94.jar 提供了 JSR-94 的兼容實現(xiàn),本質(zhì)上是 drools- compiler 組件的包裹層。注意:由于 JSR94 規(guī)約的限制,不是所有的特點都可以通過此接口暴露。

          l???????? drools-decisiontables.jar 決策表的“編譯”組件(使用了 drools- compiler 組件)。支持 excel CSV 輸入格式。

          JBoss Rules 3.0.1 Binaries with dependencies (includes javadocs) 23 MB )- 包含了 JBoss Rules 的核心類庫和它們的 dependencies

          l???????? antlr-2.7.6.jar

          l???????? antlr-3.0ea8.jar

          l???????? colt-1.2.0.jar

          l???????? commons-collections-3.1.jar

          l???????? commons-io-1.1.jar

          l???????? commons-jci-core-1.0-406301.jar

          l???????? commons-jci-eclipse-3.2.0.666.jar

          l???????? commons-jci-janino-2.4.3.jar

          l???????? commons-lang-2.1.jar

          l???????? commons-logging-api-1.0.4.jar

          l???????? concurrent-1.3.4.jar

          l???????? core-3.2.0.666.jar

          l???????? janino-2.4.3.jar

          l???????? jsr94-1.1.jar

          l???????? jung-1.7.2.jar

          l???????? junit-3.8.1.jar

          l???????? poi-2.5.1-final-20040804.jar

          l???????? stringtemplate-2.3b6.jar

          l???????? xercesImpl-2.6.2.jar

          l???????? xml-apis-1.0.b2.jar

          l???????? xpp3-1.1.3.4.0.jar

          l???????? xstream-1.1.3.jar

          如果你運行在 Java 1.5 環(huán)境下,有一些類庫,例如 XML libraries ,可以不需要。需要注意的類庫有:

          JCI ”-這是 Apache Java Compiler Interface , 提供了運行時編譯能力。可以通過 PackageBuilderConfiguration 實例來設(shè)定采用 eclipse janino 編譯器,默認(rèn)是 eclipse

          POI ”-提供了解析 Excel 文件的能力;

          antlr ”-提供了解析規(guī)則語言的能力。

          JBoss Rules IDE 3.0.1 13 MB )- 這是 JBoss Rules Eclipse 插件,只支持 Eclipse 3.2 或以上版本。它提供了運行 JBoss Rules 的所有 dependencies 。你可以創(chuàng)建一個 Rule Project ,它能夠為你編寫規(guī)則文件提供自動完成的功能,并且它為你提供了 Agenda view WorkingMemory view Global Data view ,使你可以通過 eclipse 視圖很清楚的看到 Agenda WorkingMemory Global Data 的情況。

          你還可以通過 update site 來自動安裝這個插件 ,URL 是:

          http://anonsvn.labs.jboss.com/labs/jbossrules/updates/drools-ide-update/

          ?

          posted @ 2006-06-04 23:55 guangnian 閱讀(7951) | 評論 (3)編輯 收藏

          JBoss Rules 學(xué)習(xí)(四): Drools規(guī)則引擎 (下)

               摘要: WorkingMemory 是運行時規(guī)則引擎的主要類。它保持了所有被 asserted 進(jìn) WorkingMemory 的數(shù)據(jù)的引用,直到取消( retracted )。 WorkingMemory 是有狀態(tài)對象。它們的生命周期可長可短。如果從一個短生命周期的角度來同一個引擎進(jìn)行交互,意味著你可以使用 RuleBase 對象來為每個 session 產(chǎn)生一個新的 WorkingMemory ,然后在結(jié)束 session 后 discard 這個 WorkingMemory (產(chǎn)生一個 WorkingMemory 是一個廉價的操作)。另一種形式,就是在一個相當(dāng)長的時間中(例如一個 conversation ),保持一個 WorkingMemory ,并且對于新的 facts 保持持續(xù)的更新。當(dāng)你希望 dispose 一個 WorkingMemory 的時候,最好的實踐就是調(diào)用 dispose() 方法,此時 RuleBase 中對它的引用將會被移除(盡管這是一個弱引用)。不管怎樣最后它將會被當(dāng)成垃圾收集掉。術(shù)語   閱讀全文

          posted @ 2006-06-04 14:55 guangnian 閱讀(11080) | 評論 (6)編輯 收藏

          JBoss Rules 學(xué)習(xí)(三): Drools規(guī)則引擎 (上)

               摘要: Drools 分為兩個主要部分:構(gòu)建( Authoring )和運行時( Runtime )。

          構(gòu)建的過程涉及到 .drl 或 .xml 規(guī)則文件的創(chuàng)建,它們被讀入一個解析器,使用 ANTLR 3 語法進(jìn)行解析。解析器對語法進(jìn)行正確性的檢查,然后產(chǎn)生一種中間結(jié)構(gòu)“ descr ”, descr 用 AST 來描述規(guī)則。 AST 然后被傳到 PackageBuilder ,由 PackagBuilder 來產(chǎn)生 Packaged 對象。 PackageBuilder 還承擔(dān)著一些代碼產(chǎn)生和編譯的工作,這些對于產(chǎn)生 Package 對象都時必需的。 Package 對象是一個可以配置的,可序列化的,由一個或多個規(guī)則組成的對象。  閱讀全文

          posted @ 2006-06-04 12:50 guangnian 閱讀(22574) | 評論 (14)編輯 收藏

          JBoss Rules 學(xué)習(xí)(二): RETE算法

               摘要: 在JBoss Rules 學(xué)習(xí)(一):什么是Rule中,我們介紹了JBoss Rules中對Rule的表示,其中提到了JBoss Rule中主要采用的RETE算法來進(jìn)行規(guī)則匹配。下面將詳細(xì)的介紹一下RETE算法在JBoss Rule中的實現(xiàn),最后隨便提一下JBoss Rules中也可以使用的另一種規(guī)則匹配算法Leaps。  閱讀全文

          posted @ 2006-06-01 17:06 guangnian 閱讀(13494) | 評論 (4)編輯 收藏

          JBoss Rules 學(xué)習(xí)(一): 什么是Rule

               摘要: 學(xué)習(xí)JBoss Rules有幾天了,因為這方面的中文資料較少,所以這幾天都在看官網(wǎng)上的manual。這是一份不錯的教程,我把我看的一些重要的東西翻譯整理了一下,希望可以對想學(xué)習(xí)JBoss Rules的同學(xué)們提供一點幫助。
          在開始這份教程之前,我先簡要介紹一下JBoss Rules:
          JBoss Rules 的前身是Codehaus的一個開源項目叫Drools。最近被納入JBoss門下,更名為JBoss Rules,成為了JBoss應(yīng)用服務(wù)器的規(guī)則引擎。
          Drools是為Java量身定制的基于Charles Forgy的RETE算法的規(guī)則引擎的實現(xiàn)。具有了OO接口的RETE,使得商業(yè)規(guī)則有了更自然的表達(dá)。

          既然JBoss Rules是一個商業(yè)規(guī)則引擎,那我們就要先知道到底什么是Rules,即規(guī)則。在JBoss Rules中,規(guī)則是如何被表示的  閱讀全文

          posted @ 2006-06-01 16:52 guangnian 閱讀(22749) | 評論 (23)編輯 收藏

          [Commons Logging]使用一個抽象的Logging接口(From Jarkata Commons Cookbook 7.10)

          ?? (Jarkata 的 Commons Logging 包現(xiàn)在已經(jīng)被用在幾乎所有的開源項目之中,它可以使你開發(fā)的系統(tǒng)工作在不同的日志框架下,包括Sun的logging框架和Apache Log4j。現(xiàn)在Commons Logging + Apache Log4j 的身影是隨處可見,Commons Logging 的易用與Log4j的強大功能形成了絕配。)

          問題:
          ??? ? 你正在寫一個可重用的代碼庫,而你不知道你的代碼在哪里并且是如何工作的。你需要一個抽象的日志接口來寫入日志信息,因為你不能確定Log4j或者是JDK 1.4 logging的存在性。

          解決:
          ??????? 通過Jakarta Commons Logging 的Log 接口來記錄信息,然后依靠Commons Logging自身來決定在運行時使用哪種具體的日志框架。下面的代碼使用了Log接口來記錄trace,debug,info,warning,error和fatal信息:
          ?1?import?org.apache.commons.logging.LogFactory;
          ?2?import?org.apache.commons.logging.Log
          ?3?
          ?4?Log?log?=?LogFactory.getLog(?"com.discursive.jccook.SomeApp"?);?
          ?5?
          ?6?if(?log.isTraceEnabled(?)?)?{
          ?7?????log.trace(?"This?is?a?trace?message"?);
          ?8?}
          ?9?
          10?if(?log.isDebugEnabled(?)?)?{
          11?????log.debug(?"This?is?a?debug?message"?);
          12?}
          13?
          14?log.info(?"This?is?an?informational?message"?);
          15?
          16?log.warn(?"This?is?a?warning"?);
          17?
          18?log.error(?"This?is?an?error"?);
          19?
          20?log.fatal(?"This?is?fatal"?);
          ????? LogFactory.getInstance() 返回一個Log接口的具體實現(xiàn),這個實現(xiàn)與底層具體的日志框架相對應(yīng)。例如,如果你的系統(tǒng)是使用Apache Log4j ,一個Log4JLogger將被返回,對應(yīng)于Log4J category
          com.discursive.jccook.SomeApp 。

          討論:
          ??????? 一個可重用代碼庫的開發(fā)者不能預(yù)知其代碼庫將在何時何地被用到,而現(xiàn)在有很多的日志框架可以使用,所以當(dāng)開發(fā)可重用代碼庫的時候,使用Commons Logging 是非常明智的,例如Jakarta Commons 組件。當(dāng)調(diào)用LogFactory.getInstance()方法的時候,Commons Logging 將通過系統(tǒng)屬性和classpath中的類庫來決定和管理適當(dāng)?shù)娜罩究蚣堋τ谝粋€小型可重用組件的開發(fā)者來說,進(jìn)行日志記錄只需要調(diào)用Log接口。而配置底層日志框架的負(fù)擔(dān),就轉(zhuǎn)移到使用其組件庫的開發(fā)者身上。

          參考:
          ??????? 7.11節(jié)詳細(xì)的說明了Commons Logging在運行時確定適當(dāng)日志框架的算法。

          ????

          posted @ 2006-04-24 18:32 guangnian 閱讀(841) | 評論 (0)編輯 收藏

          [HttpClient] 創(chuàng)建一個HTTP POST 請求 (from Jakarta Commons cookbook 11.7 )

          問題:
          ??????? 你需要使用HTTP POST 方法來向一個servlet傳遞參數(shù)。

          討論:
          ??????? 創(chuàng)建一個 PostMethod 對象,然后調(diào)用 setParameter() 或 addParameter() 方法設(shè)置參數(shù)。 PostMethod 對象將會傳送一個 Content-Type 頭為 application/x-www-form-urlencoded 的請求,并且參數(shù)將在請求body中被傳送。在下列的例子中演示了用 PostMethod 對象傳遞參數(shù)的用法:
          import?org.apache.commons.httpclient.HttpClient;
          import?org.apache.commons.httpclient.HttpException;
          import?org.apache.commons.httpclient.NameValuePair;
          import?org.apache.commons.httpclient.methods.PostMethod;

          HttpClient?client?
          =?new?HttpClient(?);

          //?Create?POST?method
          String?url?=?"http://www.discursive.com/cgi-bin/jccook/param_list.cgi";
          PostMethod?method?
          =?new?PostMethod(?url?);

          //?Set?parameters?on?POST????
          method.setParameter(?"test1",?"Hello?World"?);
          method.addParameter(?
          "test2",?"This?is?a?Form?Submission"?);
          method.addParameter(?
          "Blah",?"Whoop"?);
          method.addParameter(?
          new?NameValuePair(?"Blah",?"Whoop2"?)?);

          //?Execute?and?print?response
          client.executeMethod(?method?);
          String?response?
          =?method.getResponseBodyAsString(?);
          System.out.println(?response?);

          method.releaseConnection(?);
          ??????
          param_list.cgi CGI腳本會對所以接收到的參數(shù)進(jìn)行回顯,從下面的輸出中,你可以看到傳遞給CGI腳本的三個參數(shù):
          These?are?the?parameters?I?received:

          test1:
          ??Hello?World
          test2:
          ??This?is?a?Form?Submission
          Blah:
          ??Whoop
          ??Whoop2
          ?????? 有幾種方法來在一個PostMethod對象中設(shè)置參數(shù)。最直接的方法就是調(diào)用setParameter()方法,并傳遞兩個字符串給它:參數(shù)的名稱和參數(shù)值。setParameter()方法將會替代任何已經(jīng)存在的同名參數(shù)。但是,如果一個同名的參數(shù)已經(jīng)存在一個PostMethod對象中,addParameter()將會加入另一個同名參數(shù)值;addParameter()方法同樣接受兩個String:參數(shù)名和參數(shù)值。另一種方法,這兩個方法同樣接受一個包裝了參數(shù)名和參數(shù)值的NameValuePair對象。在前面的例子中,通過addParameter()方法,用參數(shù)名Blah傳遞了兩個值,第一次用兩個String作為參數(shù),第二次用一個NameValuePair對象作為參數(shù)。

          posted @ 2006-04-11 22:41 guangnian 閱讀(6744) | 評論 (4)編輯 收藏

          主站蜘蛛池模板: 嘉定区| 锡林浩特市| 信阳市| 江川县| 泸溪县| 邢台市| 休宁县| 澄城县| 定州市| 尉犁县| 离岛区| 通州区| 甘德县| 荃湾区| 什邡市| 宁都县| 肇源县| 遵化市| 墨竹工卡县| 顺平县| 湖南省| 广元市| 芮城县| 南宁市| 西盟| 福鼎市| 西和县| 图们市| 陆良县| 稷山县| 长兴县| 新丰县| 仁寿县| 巴楚县| 秦皇岛市| 绥滨县| 大宁县| 政和县| 沛县| 铜山县| 屯留县|