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文件。

posted on 2012-08-02 21:54  萌二&威比  阅读(3773)  评论(0编辑  收藏  举报

导航