Deprecated: The each() function is deprecated. This message will be suppressed on further calls in /home/zhenxiangba/zhenxiangba.com/public_html/phproxy-improved-master/index.php on line 456
Javaでも。
[go: Go Back, main page]

■Jakarta Commons Chain version1.0 - ファイルから Chain を読み込む

ざっくりと手順

ファイルから Chain を読み込む際のざっくりな手順は次のとおり。

  1. xml ファイルで Chain の内容を記述。
  2. ConfigParser で xml ファイルを解析。
  3. CatalogFactory から読み込まれた Catalog を取り出して使う。
大体こんな感じになります。

xml ファイルの書式

Chain を記述する際の xml の主要なタグと属性の説明です。

今回作成したサンプルの xml ファイルは次のとおりです。

<catalog>
    <chain name="chainKey">
        <command className="javademo.chain.Command1"/>
    </chain>
</catalog>

基本的に見たまんまです。
各タグが表すクラスのインスタンスに add するものをタグの間に書いていくだけです。

xml ファイルの読み込み

xml ファイルの読み込みには org.apache.commons.chain.config.ConfigParser クラスを使います。
使い方は簡単で、読み込む xml ファイルの場所を URL オブジェクトとして取得し、parse(URL) メソッドに渡してやるだけです。
読み込んだ結果は CatalogFactory から取り出すことができます。

URL config = ClassLoader.getSystemResource("config.xml");
ConfigParser parser = new ConfigParser();
 
try{
    parser.parse(config);
    // 以下略

サンプル

今回作成したサンプルコードは次の通りです。

package javademo.chain;

import org.apache.commons.chain.Command;
import org.apache.commons.chain.Context;

public class Command1 implements Command {

    public boolean execute(Context arg0) throws Exception {
        System.out.println("Command1 executed.");
        return false;
    }
}
package javademo.chain;

import java.net.URL;

import org.apache.commons.chain.Catalog;
import org.apache.commons.chain.CatalogFactory;
import org.apache.commons.chain.Command;
import org.apache.commons.chain.config.ConfigParser;
import org.apache.commons.chain.impl.ContextBase;

public class Run {

    public static void main(String[] args){
        URL config = ClassLoader.getSystemResource("config.xml");
        ConfigParser parser = new ConfigParser();
        
        try{
            parser.parse(config);

            CatalogFactory factory = CatalogFactory.getInstance();
            Catalog catalog = factory.getCatalog();
            Command command = catalog.getCommand("chainKey");
            command.execute(new ContextBase());
        }catch(Exception e){
            e.printStackTrace();
            System.exit(1);
        }
    }
}

まとめ

Chain の構成を記述した xml ファイルを読み込むには ConfigParser を使う。
ConfigParser で読み込まれた内容は CatalogFactory に格納される。