Coherence Step by Step 第一篇 入門(四) 建立第一個Coherence應用(翻譯)


這個章節提供了一步一步的指導,建立和運行一個基本的Coherence 例子,演示許多基礎的Coherence 概念。這個應用例子是一個簡單的hello world應用,實現了獨立的java應用的jsp應用。最后,JDeveloper章節包含了提供基本的設置JDeveloper的指導,當開發Coherence時。

NOTE:這個章節的例子是基本的,只是為了教一般的概念。更多的高級的例子,下載包含了文檔庫的Coherence自立。

1.Task1:定義緩存

緩存定義在緩存配置部署描述符中,應用程序通過名字來引用。這允許在不改變應用程序代碼的情況下改變緩存的配置。下面的緩存配置定義了一個基本的分布式緩存,它被映射到了一個名為hello-example的緩存。

定義一個cahce:

  1. 新建一個xml文件,沒能夠為example-config.xml。
  2. 復制下面的分布式緩存定義到文件中:
    <?xml version="1.0"?>
    
    <cache-config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns="http://xmlns.oracle.com/coherence/coherence-cache-config"
       xsi:schemaLocation="http://xmlns.oracle.com/coherence/coherence-cache-config
       coherence-cache-config.xsd">
       <caching-scheme-mapping>
          <cache-mapping>
             <cache-name>hello-example</cache-name>
             <scheme-name>distributed</scheme-name>
          </cache-mapping>
       </caching-scheme-mapping>
       
       <caching-schemes>
          <distributed-scheme>
             <scheme-name>distributed</scheme-name>
             <service-name>DistributedCache</service-name>
             <backing-map-scheme>
                <local-scheme/>
             </backing-map-scheme>
             <autostart>true</autostart>
          </distributed-scheme>
       </caching-schemes>
    </cache-config>

     

  3. 保存並關閉文件。

2.Tack2:配置和啟動Cluster

緩存被宿主到一個coherence集群上。在運行時,任何自動的運行Coherence的jvm進程,加入集群和能夠訪問緩存和通過集群提供其他的服務。當一個jvm加入集群,被成為集群節點,或者叫做集群成員。本章的例子應用,兩個集群中單獨的java進程:一個一個緩存服務器進程和hello world應用進程。為了簡單起見,兩個進程混合在一太計算機上。緩存服務器,默認的,配置額緩存存儲緩存數據。

例子的cluster使用了一個operational override file來修改即用的默認的集群配置文件。尤其要指出的是,默認的配置文件被修改來創建一個私有的集群,它確保額兩個進程不會嘗試加入一個網絡上已經存在的Coherence集群。默認的配置文件也被修后用來加載example-config.xml緩存配置文件來代替默認的緩存配置文件。

配置和啟動集群例子:

  1. 創建名為tangosol-cohernce-override.xml文件。
  2. 添加下面的override configuration,並且替換里面的cluster_name和port,用一個這個集群中唯一的值。例如,使用你的名字作為集群名,用你電話號碼的后四位作為端口號。
    <?xml version='1.0'?>
     
    <coherence xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns="http://xmlns.oracle.com/coherence/coherence-operational-config"
       xsi:schemaLocation="http://xmlns.oracle.com/coherence/
       coherence-operational-config coherence-operational-config.xsd">
       <cluster-config>
          <member-identity>
             <cluster-name>cluster_name</cluster-name>
          </member-identity>
      
          <multicast-listener>
             <address>224.3.6.0</address>
             <port>port</port>
             <time-to-live>0</time-to-live>
          </multicast-listener>
       </cluster-config>
      
       <configurable-cache-factory-config>
          <init-params>
             <init-param>
                <param-type>java.lang.String</param-type>
                <param-value system-property="tangosol.coherence.cacheconfig">
                   example-config.xml</param-value>
             </init-param>
          </init-params>
       </configurable-cache-factory-config>
    </coherence>

     

  3. 保存文件到example-config.xml文件相同的目錄。
  4. 從命令提示符啟動一個緩存服務器實例,使用DefaultCacheServer類,包含了coherence.jar庫和配置文件,用一個java –cp選項。例如:java -cp COHERENCE_HOME\config;COHERENCE_HOME\lib\coherence.jar com.tangosol.net.DefaultCacheServer

3.Task3:創建和運行基本的Coherence單獨應用

第三步是一個多個部分的步驟,包含了一個Hello world的應用,指導運行,並且驗證例子。應用從命令行運行,啟動一個緩存節點加入一個緩存服務器。應用程序存一個鍵為k1 值為hello world的緩存,然后在推出前獲取和打印這個鍵的值。最后,另外一個集群節點啟動來驗證緩存中的鍵。

3.1  創建一個獨立的應用

應用程序使用Coherence API來與緩存訪問和交互。CahceFactory類用來獲取一個緩存實例,NamedCache接口迎來檢索和存儲對象進緩存。Helloworld應用是最基本的,但是它演示時用了CacheFactory類和NamedCache接口。

package com.examples;
 
import com.tangosol.net.CacheFactory;
import com.tangosol.net.NamedCache;
 
public class HelloWorld {
 
   public static void main(String[] args) {
 
      String key = &quot;k1&quot;;
      String value = &quot;Hello World!&quot;;
 
      CacheFactory.ensureCluster();
      NamedCache cache = CacheFactory.getCache(&quot;hello-example&quot;);
 
      cache.put(key, value);
      System.out.println((String)cache.get(key));
 
      CacheFactory.shutdown();
   }
}

 

3.2 運行獨立的應用

運行獨立應用的例子:

1.從命令提示符,編譯hello world 應用,如:

javac -cp COHERENCE_HOME\lib\coherence.jar com\examples\HelloWorld.java

2.運行Hello world應用,包含了coherence.jar庫和配置文件,如用java –cp的選項。另外,限制客戶端本地存儲分布式數據,如:

java -cp COHERENCE_HOME\config;COHERENCE_HOME\lib\coherence.jar -Dtangosol.coherence.distributed.localstorage=false com.example.HelloWorld

這個hello world應用啟動。緩存工廠實例被創建,成為一個集群成員。k1鍵,值為hello world,從hello-example緩存中加載。鍵從緩存中被檢索,值被作為輸出的一部分。最后,緩存工廠關閉,在hello world應用推出之前離開集群。

3.3 驗證緩存

本例中的緩存服務器被配置了,默認的,存儲緩存數據。數據對所有的集群成員是有效的,而是成員離開集群,數據也是存在的。例如,hellp world應用在加載和顯示緩存的鍵后退出。然而,緩存和鍵仍然對其他的集群成員有效。

這一步使用了緩存工程的命令行工具鏈連接hello-example緩存,列出了緩存中的所有的條目。這演示了持久化和分布式的特性。

驗證緩存:

  1. 從命令提示符,開啟一個單獨的緩存工廠實例,使用CacheFactory類,包含了coherence.jar庫的配置文件,使用java -cp的選項。例如:

    java -cp COHERENCE_HOME\config;COHERENCE_HOME\lib\coherence.jar -Dtangosol.coherence.distributed.localstorage=false com.tangosol.net.CacheFactory

    緩存工廠實例開啟,成為集群的成員,返回了命令行工具的名利提示符。

  2. 在命令行工具的命令提示符,或去hello-example緩存,使用cache 命令:

    cache hello-example

  3. 在命令行工具的命令提示符,檢索緩存的內容,使用list命令

    list

    命令返回iuhe顯示

    k1=Hello world!

4.Task4:創建和運行一個基本的Coherence JavaEE Web 應用

步驟4是多個部分的步驟,包含了Hello World 應用作為jsp page的重新實現。指導包含了打包web app的例子部署在javaee的服務器上。應用運行在應用程序服務器上,開啟了一個緩存節點加入一個緩存服務器。應用放一個名為k2的鍵,值為hello world到緩存hello-exa,ple緩存中,在推出之前獲取和打印這個鍵的值。最后,啟動另一個節點來驗證緩存中的值。

4.1 創建web app

1. 創建基本的web app的目錄結構如下:

/
/WEB-INF
/WEB-INF/classes
/WEB-INF/lib

2.復制下面的jsp到一個文本文件。另存為hello.jsp 在web app的根目錄下。

<html>
   <head>
      <title>My First Coherence Cache</title>
   </head>
   <body>
      <h1>
         <%@ page language="java"
                  import="com.tangosol.net.CacheFactory,
                          com.tangosol.net.NamedCache"
         %>
         <%
            String key = "k2";
            String value = "Hello World!";

            CacheFactory.ensureCluster();
            NamedCache cache = CacheFactory.getCache("hello-example");

            cache.put(key, value);
            out.println((String)cache.get(key));

            CacheFactory.shutdown();
         %>
      </h1>
   </body>
</html>

 

3.復制下面空的web app的部署描述符到文本文件。另存為web.xml到/web-info目錄。

<?xml version = '1.0' ?>
   <web-app/>

 

4.復制coherence.jar文件到web-info/lib目錄。

5.復制example-config.xml文件和tangosol-cohernce-overrie.xml文件到web-info/classes目錄。

6.創建web ARchive文件(WAR),使用jar工具,保存文件為htllo.war。例如,從命令提示符中用下面的命令,在web app的根目錄下使用:

jar -cvf hello.war *

歸檔后,應該包含下面文件

/hello.jsp
/WEB-INF/web.xml
/WEB-INF/classes/example-config.xml
/WEB-INF/classes/tangosol-coherence-override.xml
/WEB-INF/lib/coherence.jar

4.2 部署和運行web app的例子

部署和運行web app:

1.部署hello.war文件到javaee 服務器。

2.從一個瀏覽器,運行hello world 應用,通過訪問hello.jsp文件,url是如下。替換host和port,用指定的部署的值。

http://host:port/hello/hello.jsp

hello world應用開啟。緩存工廠實例被創建,成為一個集群成員。值為hello world 的k2鍵被加載到hello-example緩存中。然后從緩存中檢索這個鍵,值會顯示在瀏覽器中。最后,緩存工廠關閉,離開集群。

4.3 驗證緩存

緩存服務器在本例中默認的被配置了存儲緩存數據。數據對所有的集群成員有效,即使成員離開集群,數據也存在。例如,在加載和顯示了鍵之后,hello world 應用推出。然后,緩存和鍵仍然對其他所有集群成員有效。

這個步驟使用了緩存工廠命令行工具來連接hello-example緩存。列出了韓村中所有的項。這個展示了Coherence緩存的持久和分布式的特性。

驗證緩存:

1.從命令提示符,啟動單獨的一個緩存工廠實例,使用CacheFactory類,包含了coherence.jar庫和配置文件,使用java -cp的選項,例如:

java -cp COHERENCE_HOME\config;COHERENCE_HOME\lib\coherence.jar -Dtangosol.coherence.distributed.localstorage=false com.tangosol.net.CacheFactory

緩存工程啟動,成為集群的成員,返回命令行工具的命令提示符。

2.在命令行工具的命令提示符,獲取hello-example緩存,使用cache命令:

cache hello-exampe

3.在命令行工具的命令提示符,檢索緩存內容,使用list命令

list

命令返回和顯示

k2=hello world!

 

5.使用JDeveploper開發Coherence

這個章節提供了基本的介紹,如果建立一個JDeveloper開發環境。指導的是用IDE運行Coherence,這是一個開發時常用的方法。雖然指導是針對JDeveloper,但是對其他的IDE也是同樣的方法。

 

5.1 在JDeveloper中運行Coherence

JDeveloper能夠運行緩存服務器(DefaultCacheServer)和緩存(CacheFactory)實例。每個實例作為一個單獨的java進程來啟動,發出標准的輸出到進程日志。輸入(如緩存命令)能夠在進程中被直接輸入,如果它是從命令行啟動的。這個配置促進了開發和測試Coherence解決方案。

在JDeveloper中運行Coherence:

1.在JDeveloper中,創建一個新的Generic Application,它包含了一個單獨的項目。

2.在應用程序導航上,雙擊新建項目。彈出了項目屬性對話框。

3.選擇Libraries and Classpath節點。Libraries和Classpath也顯示。

4.在這也上,雙擊Add JAR/Directory。Add Archive或者目錄對象框顯示。

5.從目錄樹中選擇COHERENCE_HOME\lib\coherence.jar,點擊Select。coherence.jar庫顯示在Classpath條目列表中,顯示如下:

lib_cp

6.從項目屬性對象框中,選擇Run/Debug/Profile節點。Run/Debug/Profile頁顯示。

7.此頁中,點擊New。Create Run Configuration 對話框顯示。在名字文本框中,輸入一個名字作為新的運行配置。在下拉框的Copy Setting中選擇default。點擊ok。心得運行配置在RUN Configuration 列表中顯示。

8.從Run Configuration 列表中,選擇性的Run Configuration ,點擊edit。編輯Run Configuration對話框顯示,Launch Settting節點被選中。

9.在Launch Setting頁中,點擊瀏覽,選擇一個默認的Run Target。選擇默認的Run Target對話框顯示。

10.在目錄樹里,選擇COHERENCE_HOME\lib\coherence.jar\com\tangosol\net\DefaultCacheServer.class並點擊open。DefaultCacheServer類被輸入。作為默認的run target,如下顯示:

rc_server

tip:使用java 選項文本框來設置Coherence 系統屬性。

11.選擇Tool Setting 節點。Tool setting頁顯示。

12.在Additional Runner Options部分,點擊Allow Program Input選擇框。盒子中選中的標記表示這個選項被選擇了。

13.點擊ok。

14.重復步驟6到步驟14,選擇COHERENCE_HOME\lib\coherence.jar\com\tangosol\net\CacheFactory.class 作為默認的run target,如下所示:

rc_cache

15.點擊ok,關閉系統屬性對話框。

16.使用Run 按鈕的下拉列表,選擇為緩存服務器設置啟動運行配的配置。緩存服務器實例啟動后,輸出信息顯示在進程日志標簽頁里,如下所示:

server_log

17.使用運行按鈕的下拉菜單,選擇和啟動緩存的配置。緩存實例啟動后,輸出信息顯示在進程日志標簽頁里,如下所示:

cache_log

18.在緩存工廠的運行日志標簽頁里,使用輸入框,位於標簽頁的下面,用來和緩存實例交互。例如,輸入help,按回車,看見可用的命令列表。。

 

5.2 在Jdeveloper中查看Thread Dumps

java能夠dump一個線程列表和他們所持有的所有的鎖來標准輸出。在linux環境中使用kill命令,在windows環境中使用ctrl+break命令。Thread dumps是非常有幫助的,在開發時用來排錯(例如,找出死鎖)。

當開發Coherence 解決方案是,你能查看線程dumps,直接在線程日志的標簽頁。也可以通過發送上面的信息給java進程來獲得。

查看線程dumps:

1.從shell或者命令提示符,使用jdk_home/bin/jps 獲取進程id(PID),這個java進程是你想要看線程dump的進程。

2.在linux上,使用kill –3 PID 發送一個QUIT的信號給進程。在windows上,你必須使用第三方的工具(如SENDSIGNAL),發送一個ctrl+bread信號給遠程的java進程。

線程dump在進程日志中是可見的。

 

5.3 創建配置文件

JDeveloper中創建Coherence的配置文件。JDeveloper加載適當的XSD文件,列出了所有的組件面板的元素。此外,JDeveloper驗證配置文件,根據XSD和提供哦你高了XML節點的完整性。下面的過程創建了緩存配置文件和oerational override file。同樣的過程可以用於任何Coherence配置文件。

創建緩存配置文件和operational override 文件:

1.提取coherence-cache-config.xsd, coherence-cache-config-base.xsd, coherence-operational-config.xsd, coherence-operational-config-base.xsd, and coherence-config-base.xsd ,從COHERENCE_HOME\lib\coherence.jar庫中,到計算機上的一個目錄里。

2.在JDeveloper應用程序導航中,雙擊coherence的項目,項目屬性對話框顯示了。

3.展開Project Source Paths節點,點擊Resources。Resources頁顯示。

4.在Resource里面,點擊Add來查找和選擇一個你提取的XSD文件的目錄

5.在包含的標簽頁中,單機Add,選擇XSD文件。可選擇的是,你能夠允許Developer包含所有的文件,而不用明確指定添加一個文件。

6.點擊ok。XSD文件被Inclueded標簽頁列出來 顯示如下:

xsd

7.點擊OK來關閉項目書香對話框。XSD在應用程序導航的Resources 文件夾里列出來。

8.在File menu中,點擊New,New Gallery 對話框顯示。

9.在目錄里面,展開General節點,點擊xml。

10.選擇xml文檔,點擊ok。創建xml文件的對話框顯示。

11.輸入coherence-cache-config.xml 作為文件名,保存它到xsd所在的目錄。在運行時,這個文件必須在classpath中被找到,必須在coherence.jar文件加載之前被加載。

12.點擊ok。緩存配置文件被創建,打開,編輯,在應用程序導航的Resources文件夾下列出來了。

13.天下下面的方案應用,在文件的開始出:

<?xml version="1.0" ?> 

<cache-config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
   xmlns="http://xmlns.oracle.com/coherence/coherence-cache-config" 
   xsi:schemaLocation="http://xmlns.oracle.com/coherence/coherence-cache-config 
   coherence-cache-config.xsd">

 

組件面泛刷新,並列出了所有額可用的coherence-cache-config.xsd文件。

14. 保存coherencep-cache-config.xml文件。

15. 重復步驟8到12,創建operational override fie,成為tangosol-coherence-override.xml。運行時,這個文件必須在classpath中找到。

16.添加下面的方案應用在文件的開始出:

<?xml version="1.0" ?>

<coherence xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
   xmlns="http://xmlns.oracle.com/coherence/coherence-operational-config" 
   xsi:schemaLocation="http://xmlns.oracle.com/coherence/ 
   coherence-operational-config coherence-operational-config.xsd">

 

組件面板刷新,並列出了所有的可用的元素,從coherence-operational-config.xsd。

17.保存並關閉tangosol-coherence-override.xml文件。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM