Jeffrey's Sky

          Go with wind
          隨筆 - 14, 文章 - 1, 評論 - 15, 引用 - 0
          數據加載中……

          2008年10月23日

          安裝配置 IBM FileNet 所遇問題記錄系列 之六 使用好 VWTool工具以及 log。

          在 使用 PE WorkFlow 的過程中, 總會遇到流程中的一些異常情況。 如果,某些節點執行出現異常,Hang住等等。 因此,此時使用一些 PE下的工具尤為重要。

          (1) vwtool 
           
                a. 啟動
                    vwtool -r <region number> -Y <admin user>+<pwd>

                b. 常用命令
                    count *     : 列出所有系統 queue
                    wobquery <Queue name>   : 在這里,可以列出隊列里的內容,以及某個wobnum下的參數值等等,以便debug.

           (2) elog

                elog 記錄了PE在啟動運行過程中的事件, 包括 PE的system default locale. 
                elog 所在的位置在 \fnsw\local\logs\elogs folder (the same folder where you installed the Process Service software).
           

          posted @ 2011-10-21 00:46 Jeffrey Feng 閱讀(343) | 評論 (0)編輯 收藏

          在IBM P Server (LPAR)上重裝AIX操作系統記錄

          前幾天,有機會自己實戰了將刻好的AIX6.1系統(里面還有一些FileNet相關軟件)盤恢復到一個IBM P570 Server 上。 其中,使用了HMC,設置引導程序。
          現將過程記錄如下:

          posted @ 2011-10-21 00:46 Jeffrey Feng 閱讀(444) | 評論 (0)編輯 收藏

          在 WebSphere中 配置 Oracle Datasource 問題記錄

               摘要: 在 WebSphere中 配置 Oracle Datasource 問題記錄  閱讀全文

          posted @ 2010-09-07 11:53 Jeffrey Feng 閱讀(753) | 評論 (0)編輯 收藏

          XA Datasource 與 Non-XA Datasource 區別

               摘要:   閱讀全文

          posted @ 2010-08-27 13:39 Jeffrey Feng 閱讀(4576) | 評論 (2)編輯 收藏

          安裝配置 IBM FileNet 所遇問題記錄系列 之五 打好客戶端的Patch

          CE 和 PE都有自己的客戶端安裝包。 這些安裝包有助于CE,PE, AE間在相互通訊時不會因為某些小版本的改動而使得相互不匹配。

          因此,注意,一定要, CE,PE間相互的Client端相互打好Patch.
          還要將CE,PE的Client 端都給AE打一遍。


          posted @ 2010-08-11 11:00 Jeffrey Feng 閱讀(337) | 評論 (0)編輯 收藏

          安裝配置 IBM FileNet 所遇問題記錄系列 之四 檢查AE,PE, CE 狀態是否正常


          在Install & Config 完 IBM FileNet之后,一個重要的事情就是check所安裝的AE,PE,CE是否安裝正確、能夠正常啟動。 這里,簡要列出一些check方法。

          1. 啟動 CE DB .
              與CE有關的一般有兩個 DB。 一個 是 FNGCDDB用于記錄 CE Domain的一些配置信息。 主要有以FNGCD為 prefix 的四個表(FNGCD, FNGCD_ADDON, FNGCD_CESERVERS, FNGCD_OSCBROWNERS)。 當你有需要想重新建立CE Domain的時候,最好將這四個表刪掉,然后重新建。
               再一個DB就是 Object Store所在的DB,比如FNOS1DB. 在這個DB中,在建完Domain之后共有179張表。
           
                值得注意的是,CE App Server是通過 DataSource來連接CE的DB的。所以,如果,有任何CE DB的改變,也同時需要更改DataSource。 顯而易見,因為有兩個 CE DB,所以也有兩套CE DataSource, 一個是用于連接 FNGCDDB(還有個以XA結尾的,這個在運行時經常被用到),一個是用于連接FNOSDB,即Object Store DB。CE 就是靠這兩個Source來取得CE 信息的。

                Check CE 狀態的方法:
                http://localhost:9080/FileNet/Engine.

          2.  啟動 AE。
          由于 AE是一個 WebApp 程序,所以只需要啟動 AE所在的 Server即可。
               
                Check AE 狀態的方法:
               http://localhost:9080/Workplace

          3. 啟動 PE
          PE 核心是一個 C++程序。在運行時, AE會嘗試連接 PE,CE,而PE和CE之間也有連接關系。

          Windows based 的PE server需要注意有兩個系統 Service(通過 Service.msc)是需要起來的。 一個 叫 PE Service Manager,一個是Img ControlService;需要檢查;

          再有一個 重要的命令是 initfnsw,可以通過這個命令來起停 PE server。

          ① initfnsw start     //-啟動PE
          ② initfnsw stop      //-停止PE
               killfnsw -y          //-停止PE
          ③ initfnsw status    //-查看PE狀態
          ④ initfnsw restart   //-重啟PE

          另外, 檢查 PE的狀態,可以用這個URL 來 check,

          http://localhost:32776/IOR/ping.

          另外,有關 PE 和 CE間連接性的檢查方法:

          在 PE所在 Server上,用如下URL check,

          http://localhost:32776/IOR/FileNet.CE.PEDirectoryServer

          A "good" sample response from the PEDirectoryServer looks something like this:
          IOR:000000000000002049444c3a46696c654e65745f63656d707270632f63656d707270633a312e300000000001000000000000007e000102000000000c31302e31352e372e31303800071d000000000031afabcb000000002084240cba00000001000000000000000100000008526f6f74504f41000000000800000001000000001400000000000002000000010000001800000000050100010000000000010109000000010001010000000026000000020002
           
          此外,quick test are (on PE  server):

          If you’re having trouble with the PE to CE communications, there may be something wrong with the java environment. Try the following tests in a command prompt window on the PE Server (Substituting appropriate host names, ports, user names, group names, and passwords as appropriate for your configuration):

          On your PE Server:

          cd \fnsw\bin

          Try a basic "little pipe" ping:
          \fnsw\java\jre\bin\java -classpath pe.jar;pe3pt.jar filenet.pe.ceorb.test.PEDirectoryClientTest /port=32776 /rpc=ping

          Set the little pipe’s CE connection configuration:
          \fnsw\java\jre\bin\java -classpath pe.jar;pe3pt.jar filenet.pe.ceorb.test.PEDirectoryClientTest /port=32776 /rpc=setConfig /uri=http://hqbpm34:7001/wsi/FNCEWS40DIME/ /user=PEAdmin /password=secret

          Get a list of all realm names:
          \fnsw\java\jre\bin\java -classpath pe.jar;pe3pt.jar filenet.pe.ceorb.test.PEDirectoryClientTest /port=32776 /rpc=getRealmNames

          Get info about a user named PEAdmin:
          \fnsw\java\jre\bin\java -classpath pe.jar;pe3pt.jar filenet.pe.ceorb.test.PEDirectoryClientTest /port=32776 /rpc=getUserInfo /user=PEAdmin

          Get info about a user named PEAdmin in a specific realm:
          \fnsw\java\jre\bin\java -classpath pe.jar;pe3pt.jar filenet.pe.ceorb.test.PEDirectoryClientTest /port=32776 /rpc=getUserInfo /user=PEAdmin /realm= dc=epbdc,dc=eng,dc=filenet,dc=com

          Get info about a group named PEAdministrators:
          \fnsw\java\jre\bin\java -classpath pe.jar;pe3pt.jar filenet.pe.ceorb.test.PEDirectoryClientTest /port=32776 /rpc=getUserInfo /user=PEAdministrators

          Get “group expansion info” for a group named PEAdministrators:
          \fnsw\java\jre\bin\java -classpath pe.jar;pe3pt.jar filenet.pe.ceorb.test.PEDirectoryClientTest /port=32776 /rpc=expandGroup /group=PEAdministrators

          The above runs should produce output of some sort that might shed light on a CE configuration or connection problem…

          取得 PE run 的 LOG:
          Get some detailed information about the PE to CE communications

          If the PE still can not get connected to the CE, we need to enable some of the java tracing to see what’s happening when the PEDirectoryServer communicates with the CE.

          For PE 4.0.2 and newer, including PE 4.5

          To enable the tracing, we need an fnlog4j.properties file in the \fnsw\java\jre\lib directory on the PE Server. The fnlog4j.properties file needs to include a line something like this:

          log4j.logger.filenet.pe.ceorb.server=DEBUG, TXT

          The easiest way to do this is to copy the \fnsw_loc\sd\fnlog4j.properties.sample file as \fnsw\jre\lib\fnlog4j.properties (without the “.sample”). Then, using a simple text editor (e.g., notepad), add the “, TXT” to the above line of text in the fnlog4j.properties file.

          The PEDirectoryServer will see the fnlog4j.properties file and that will trigger additional tracing and logging to occur. After putting the fnlog4j.properties file in the \fnsw\java\jre\lib directory, click the Apply button in the Process Task Manager’s Security tab again.

          After it fails, check the java trace file. The location of the java trace file is defined in the fnlog4j.properties file itself. By default, it's c:\PE.txt.

          3. 檢查 connection to PE from AE.

          在登錄到 AE 之后,可以點擊 AE Site Preference中 Task Pages頁面,看是否能打開。以及PCC, Process Designer是否都能夠打開以及 Transfer Workflow.



          posted @ 2010-08-08 13:20 Jeffrey Feng 閱讀(1118) | 評論 (0)編輯 收藏

          安裝配置(Install configure IBM FileNet) 所遇問題記錄系列 之三 配置 (Configure) Application Engine (AE)

               摘要: 配置 (Configure) Application Engine (AE)  閱讀全文

          posted @ 2010-08-02 23:03 Jeffrey Feng 閱讀(518) | 評論 (0)編輯 收藏

          開源軟件問題記錄系列 之一 在 Tomcat 中設置 Datasource

               摘要: 開源軟件問題記錄系列 之一 在 Tomcat 中設置 Datasource  閱讀全文

          posted @ 2010-08-02 10:51 Jeffrey Feng 閱讀(226) | 評論 (0)編輯 收藏

          安裝配置 IBM FileNet 所遇問題記錄系列 之二 一定要 Enable Application security 在配置完 Content Engine (CE) 之后


          由于使用了 TDS 作為 FileNet 的 LDAP 系統,所以一定要在 WAS中將Admin Security enable。 這時,需要注意的是如果沒有在 WAS 的 Global security 中將 Application Security Enable,那么在配置 Content Engine (CE) Domain 的時候,就會出現 Annoymous user cannot access to CE 的錯誤。 所以,一定要同時 Enable Application Security.



          posted @ 2010-07-30 13:47 Jeffrey Feng 閱讀(295) | 評論 (0)編輯 收藏

          安裝配置 IBM Filenet 所遇問題記錄系列 之一 在IBM Tivoli Directory Server 配置完之后

               摘要: 安裝配置 IBM Filenet 所遇問題記錄系列  閱讀全文

          posted @ 2010-07-30 13:33 Jeffrey Feng 閱讀(462) | 評論 (0)編輯 收藏

          有關在eclipse上遠程debug的問題。

             Java 提供了遠程debug的功能,這確實是一件很好的事。它能夠幫助我們在一些沒有虛機的OS(比如HP,AIX,等等)下調試我們的程序。

             1.建立Remote debug的準備工作。
              a.可以將這些在java命令行中的設置放到一個script中去。例子如下所示:
           
              java -Xdebug -Xrunjdwp:transport=dt_socket,address=8787,server=y,suspend=y  -classpath
              其中,“-Xdebug -Xrunjdwp:transport=dt_socket,address=8787,server=y,suspend=y”是必須的。suspend=y---表明是在程序啟動后hang在那個端口處并監聽(如果設為n,則不會hang);address=8787---表明是在遠端機器上的端口號。除此之外,在java后也可以添加java的系統環境變量,如-D等等。   
              b.在eclipse中可以通過設立一個remote debug的方式來建立這種連接。  
             2.遠程調試時,局部變量的值無法Watch/Inspect問題的解決
              這實際上是由eclipse在build的時候,沒有將javac后的option -g加上去。只有當加上 -g這個參數時,所有的調試信息才會被build到class文件中去。
              但ecipse沒有提供這樣在build時設置參數的user interface。所以,最好的方式就是寫一個Ant腳本。
              例子如下,

               <?xml version="1.0" encoding="UTF-8" standalone="no"?>
              <project basedir="." default="build" name="ssdv">
              <property name="build.location" value="../ssdv_build"/>
              <property name="debuglevel" value="source,lines,vars"/><!--必須的-->
              <property name="target" value="1.5"/>
              <property name="source" value="1.5"/>
              
              <target name="init">
                  <mkdir dir="bin"/>
              </target>
              
              
              <target name="clean">
                  <delete dir="bin"/>
              </target>
             
              <target depends="init" name="build-project">
                  <echo message="${ant.project.name}: ${ant.file}"/>

                  <javac debug="true" debuglevel="${debuglevel}" destdir="bin" source="${source}" target="${target}">  <!--必須的-->
                      <src path="."/>
                      <classpath refid="ssdv.classpath"/>
                  </javac>

              </target>
              
          </project>
             
               這樣,將生成的build工程拷貝到要測試的遠程OS。啟動腳本,然后就可以看到local variables了。

          posted @ 2008-12-12 17:34 Jeffrey Feng 閱讀(817) | 評論 (0)編輯 收藏

          Drools 規則引擎的使用總結

              前一段時間在開發了一個做文本分析的項目。在項目技術選型的過程中,嘗試使用了Drools規則引擎。讓它來作為項目中有關模式分析和關鍵詞匹配的任務。但后來,因為某種原因,還是撇開了Drools。現將這個過程中使用Drools的一些經驗和心得記錄下來。
          (一)什么時候應該使用規則引擎
              這實際是一個技術選型的問題。但這個問題又似乎是一個很關鍵的問題(一旦返工的話,你就知道這個問題是多么重要了)。不知大家有沒有過這樣的經驗和體會。往往在項目開始的時候,總會遇到應該選用什么技術?是不是應該使用最新的技術?或者應該選用什么技術呢(PS:現在計算機軟件中的各種技術層出不窮,具有類似功能的技術很多)?
              不管怎么樣,這些問題總會困擾著我。比如,這次的這個項目。項目要求是要在一些log文件中(這些log文件都是很大的應用系統所產生的,但由于legacy的原因,log本身的維護和規范工作一直沒有得到改善,所以想借助于一些外部應用對這些log做以分析和清洗)抽取出有用的信息。
              于是,第一個想到的就是,這是一個文本挖掘類的項目。但又想,要抽取有用信息,必須得建立一些規則或pattern(模式)。所以,我第一個想到了規則引擎。因為這里面要建立好多規則,而這些規則可以獨立于代碼級別(放到一個單獨的drl文件里)并可以用規則引擎去解析和執行。另一個重要的原因是,我原來用過,比較熟悉。這樣,也可以節省開發時間吧。于是,好不猶豫的就開始做了Demo....
              但事實上,在經歷了一個多星期的編碼、測試后,我發現運用規則引擎實在是太笨拙了。
              (1)首先必須建立一些數據模型。通過這些模型來refer規則文件中的LHS和Action。
              (2)還要考慮規則的conflict。如果有一些規則同時被觸發,就要考慮設定規則的優先級或者是設定activiation-group來保證在一個group中的規則只有一個規則可以被觸發。
              (3)對于‘流’規則group ruleflow-group的使用。如果要控制在workingmemory中的規則被觸發的順序,則可以將這些規則分組。然后,通過規則建模的方式來實現。但這也添加了一定的effort。修改或者更新不大方便。
              所以,基于上述體會,我更認為規則引擎更適用于那些對非流程性規則匹配的應用。當然,Drools也支持對流程性規則的建模過程。但,這也許不是最好的方式。
          (二)Drools規則引擎的使用雜記
              (1)Fact 的變更監聽。在Drools里,如果一個Fact通過規則而改變,則需將這種改變通知給規則引擎。這里,一般有兩種方式:顯式和隱式。
                   顯式---在drl文件中通過 update、modify來通知;在程序中,通過Fact的引用調用modifyObject等方法來實現。
                   隱式---通過在java bean實現property Listener Interface來讓引擎自動監聽到屬性值的變化。我更習慣于這種方式。因為,一般看來凡是在規則引擎中添加到fact都是希望引擎來幫你進行管理的。所以,那它自己看到fact的變化是種很省事的辦法。也很簡單,就是用java bean property 監聽的方式。
                   通過StatefulSession來注冊。
                   調用StatefulSession的某個instance 的insert(Object,true)實現。而這個object是一個java bean。其中,要實現
                
                  
          private final PropertyChangeSupport changes  = new PropertyChangeSupport( this );
              public void addPropertyChangeListener(final PropertyChangeListener l) {
                  this.changes.addPropertyChangeListener( l );
              }

              public void removePropertyChangeListener(final PropertyChangeListener l) {
                  this.changes.removePropertyChangeListener( l );
              }
            
                  然后在set方法中調用
              this.changes.firePropertyChange( "temp",null,this.temp );
               (2)規則觸發的優先級、組設置
              往往,在設計我們自己的規則時,要考慮規則的觸發條件。這不僅限于LHS的條件部分,還有規則本身被觸發的有些設置等等。這里,列出一些比較常用和有效的規則優先級設置方式,以及需要注意的地方。
                   A.通過Salience方式。此值可正可負。越大優先級越高,也會被引擎首先執行。
                   B.通過ruleflow-group 方式。實際上,使用這種方式也就是在使用建立規則流的方式。在Eclipse 3.3 中,Drools提供了建立規則流的插件。要在drl的同級目錄中建立rf和rfm兩個文件(當然,插件會幫助你建立這些)。
                  
          選擇RuleFlow File。
                這里,需要注意的一點是要在啟動規則引擎的時候,加入啟動rule flow的代碼。

               InputStreamReader source = new InputStreamReader(RuleManager.class
                              .getResourceAsStream(rule_path));
                     PackageBuilder builder = new PackageBuilder();
                      builder.addPackageFromDrl(source);
                      builder.addRuleFlow(new InputStreamReader(RuleManager.class
                              .getResourceAsStream(rule_flow_path)));
                     Package pkg = builder.getPackage();
                      RuleBase ruleBase = RuleBaseFactory.newRuleBase();
                      ruleBase.addPackage(pkg);
                然后,在每次啟動規則引擎的時候,調用如下方法:

                      StatefulSession ss;
                      ss.startProcess(flowProgress);
                      ss.fireAllRules();

                      flowProgress 是一個string類型。這個flow的名字。

          這個rule flow圖中,顯示了一個簡單的規則流。如RSA就是一個rule-flow的名字。在這個rule set中可以設定一組rules。這樣,就可以分開規則執行的順序。在于rf和rfm同名的另一個 drl文件中定義這些組的名字。通過關鍵字 ruleflow-group 來表明。
              C.通過activation-group的方式。通過這種方式,可以exclude一組rule中一旦有一個rule被invoke,而其它rule不會被execute。同時,可以搭配使用salience關鍵字來標明每個rule的優先級,這樣就能夠使得你想要的一般性概念的rule先被匹配執行。
              D.在使用ruleflow-group 的時候要注意使用lock-on-active true 關鍵字在每個rule。這樣可以避免一旦有rule被觸發,不會造成循環匹配執行。
              E.如果在LHS部分,需要調用某個方法來返回真、假值作為判斷的一個條件,那么可以用eval函數。
              如,eval(pattern.matched(5,$line.getCurrLine()))
              其中,pattern是某個加入到workingmemory中的一個實例。matched是這個實例所代表類的一個方法。它返回boolean類型。
             
            (3)Drools規則引擎的使用感受
             
          總之,Drools還是一個很不錯的開源規則引擎。現在v4.0以上的版本已經比以前的版本在速度上有了很大的提升。可以作為我們一般應用程序系統的中間件產品(那些規則不是很經常改變的系統,已經非流程類規則)。但是,這其中還是需要一些額外的effort來學習它的使用文檔以及整體架構,有一定的學習曲線。
            
              最后,我想一個較好的對于技術使用的practice就是:首先知道它能為你做什么,它最好的應用領域,然后再去深入。
             
              (PS:如果誰有使用Drools的問題,可以聯系我!一起討論!)

               
              

          posted @ 2008-11-04 14:19 Jeffrey Feng 閱讀(13644) | 評論 (13)編輯 收藏

          Db2 catalog(編目)(轉)

          在DB2數據庫中,編目(catalog)這個單詞很難理解,我自己當初在學習 DB2的時候也常常被這個編目搞的很不明白,直到現在我個人也感覺到DB2中編目(catalog)這個術語用的不是很好,具體來說編目有編目節點,編目 數據庫等如果要理解編目我先簡單講一下DB2數據庫的體系結構,在DB2數據庫中最大的概念是系統(節點)也就是主機,下面是實例,實例下面是數據庫,然 后是表空間,然后是數據庫對象。現在假設你有一個數據庫服務器在p570的機器上,你有一個客戶端在windows,linux或任何平臺上,你現在想建 立一個客戶端到服務器端的連接,具體步驟是什么呢?
          第一步:
          你必須要在客戶端的機器上能夠把遠程的服務器能夠識別出來,這個具體如何來做呢?Oracle中可以用SQL*NET配置,SYBASE中用OPEN CLIENT;而在DB2使用的編目(catalog)方式,具體來說就是通過編目把遠程的服務器寫在本地客戶端的一個文件中:
          db2 catalog tcpip node p570 remote 172.10.10.10 server 50000
          在上面的這條命令中p570是一個節點名(在一個機器上必須是唯一的),remote后面是服務器的IP地址,server是遠程服務器上實例對應的端口號
          DB2通過這種方式在本地的SQLNODIR文件中把遠程服務器的信息記錄下來
          所以編目節點其實就是把遠程服務器映射到本地,通過SQLNODIR中的記錄能夠找到遠程服務器和實例,類似指向遠程服務器和實例的地址指針
          第二步:
          當把遠程的服務器IP地址,實例編目下來后,第二步應該把該實例下的數據庫編目到本地
          db2 catalog db REMOTEDB at node p570
          在這條命令中,REMOTEDB是遠程實例下的數據庫,p570是我們在第一步中編目的節點名
          這條命令執行后會在本地SQLDBDIR文件中記錄遠程數據庫的信息,這這里編目數據庫可以理解為把遠程服務器實例下的數據庫映射到本地為一個別名
          =========================
          上面是客戶端和服務器不在同一臺機器上,是通過編目節點,編目數據庫來實現客戶端連接到服務器上數據庫的目的,如果是連接在同一臺機器上,那么這時候不要 顯示的編目節點,但是在服務器上當我們創建一個實例的時候,有一個隱含的把實例在本地編目的過程,假設在p570上創建一個實例名為db2inst1,其 實有一個隱含的
          db2 catalog local node db2inst1 instance db2inst1 system p570 ostype aix的步驟,
          同樣當你在db2inst1下創建一個數據庫MYDB的時候,有一個隱含的編目(catalog)數據庫的步驟:
          db2 catalog db mydb at node db2inst1的步驟
          至此你可以這樣理解編目(catalog),編目就是在本地或遠程建立客戶端到服務器的數據庫連接的目的,他類似Oracle數據庫中的通過 SQL*NET或netca配置客戶端到服務器的連接;類似SYBASE中的OPEN CLIENT;類似informix中Iconnect

          http://blog.csdn.net/fxxxgxxx/archive/2007/08/27/1760999.aspx

          posted @ 2008-10-23 16:50 Jeffrey Feng 閱讀(934) | 評論 (0)編輯 收藏

          主站蜘蛛池模板: 新竹市| 延川县| 衡阳县| 江门市| 潞城市| 明水县| 莆田市| 张家港市| 文成县| 新巴尔虎右旗| 富宁县| 渑池县| 乌拉特后旗| 陵水| 弥渡县| 遂川县| 枣庄市| 酉阳| 神农架林区| 富裕县| 阿勒泰市| 大庆市| 马关县| 藁城市| 涟源市| 陆良县| 白沙| 长治县| 虎林市| 乾安县| 太康县| 南丰县| 随州市| 霍邱县| 来凤县| 东至县| 太原市| 八宿县| 萍乡市| 灯塔市| 同心县|