XiをTomcatで使うには

 このページには、横浜ベイキットが開発・配布している XML形式のWebリソースに埋め込んで使うスクリプト言語「Xi」 (ざい)の紹介と、 これをJakarta Tomcatで使えるようにセットアップする方法を書いています。

XiとBXi
 Xiは、国産・オープンソースのJ2EE/XMLサーブレットコンテナ、 BayServer を開発している横浜ベイキットによって仕様策定されたスクリプト言語です。 その最大の特徴は、XML文書の中に、 XMLの拡張タグ形式で記述する点で、Xiを埋め込んだ文書もまた、 完全な整形式のXML文書になることが保証されています。 上記サイトのホームページでは 「まだPHP使ってるんですか?」「まだXSLT使ってるんですか?」 「まだJSP使ってるんですか?」と私には少々手厳しい(-_-;)洗礼ですが、 それだけ意欲あふれるソフトウェアといえましょう。 そして、そのXiの処理系として横浜ベイキット自身が開発・配布しているソフトウェア (Javaクラスライブラリ)がBXi(びーざい)です。 つまり、BXi処理系はXi言語のリファレンス実装(Reference Implementation)というわけです。 BXiはBayServerに同梱されている他、単独のアーカイブとしても配布されています。 これらは無償で上記の横浜ベイキットのサイトから入手できます。

BXiのTomcatへのセットアップ方法
次の環境で試しました。Jakarta Tomcatは既にセットアップ済みと想定します。

OSJavaTomcatBayServerBXi
Windows XP Home Edition 1.4 4.1.10 1.1.1 1.1.2
  1. 横浜ベイキットのサイトから、BXi_1.1.2.jarをダウンロードします。 J2SEのjarユーティリティで展開します。
  2. $BXI_HOME/webapps/WEB-INF/libから、次の9つのファイルを、 Xiを使いたいTomcatアプリケーションディレクトリの WEB-INF/lib にコピーします:
    • bxi.jar
    • conv.jar
    • file-ninja.jar
    • tagprint.jar
    • Tidy.jar
    • web-ninja.jar
    • xercesImpl-2.*.*.jar
    • xi-sql.jar
    • xml-apis.jar
  3. $TOMCAT_HOME/conf/server.xmlを編集し、 次のようにコンテキストパスを定義します。ここではパス名を「/bxi」としています。

    <Context path="/bxi" docBase="C:/usr/public_html/bxi" debug="0"
      reloadable="true">
      <Logger className="org.apache.catalina.logger.FileLogger"
        prefix="xilog." suffix=".txt" timestamp="true"/>
    </Context>
    

  4. コンテキストパスの物理ディレクトリ (上記の例ではC:/usr/public_html/bxi)の中に、サブディレクトリ「WEB-INF」 を作り、その中に次のような記述を含めたweb.xmlを置きます。

    <?xml version="1.0" encoding="ISO-8859-1"?>
    
    <!DOCTYPE web-app
        PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.2//EN"
        "http://java.sun.com/j2ee/dtds/web-app_2_2.dtd">
    
    <web-app>
    
        <servlet>
            <servlet-name>
                BXi
            </servlet-name>
    
            <servlet-class>
                org.baykit.xi.ext.opt.servlet.XiServlet
            </servlet-class>
    
            <init-param>
                <param-name>properties</param-name>
                <param-value>WEB-INF/xi.properties</param-value>
            </init-param>
        </servlet>
    
    <!--
        <servlet>
            <servlet-name>
                WebRequestTestServlet
            </servlet-name>
            <servlet-class>
                WebRequestTestServlet
            </servlet-class>
        </servlet>
    -->
    
        <servlet-mapping>
            <servlet-name>
                BXi
            </servlet-name>
            <url-pattern>
                *.xi
            </url-pattern>
        </servlet-mapping>
    
    <!--
        <servlet-mapping>
            <servlet-name>
                WebRequestTestServlet
            </servlet-name>
            <url-pattern>
                /doc/demo/web-request-test
            </url-pattern>
        </servlet-mapping>
    -->
    
    <!--
        <resource-ref>
             <description>
                 Configuration for Xi-SQL 
                 Define data source 
             </description>
             <res-ref-name>jdbc/LocalDB</res-ref-name>
             <res-type>javax.sql.DataSource</res-type>
             <res-auth>
                 Container
            </res-auth>
        </resource-ref>
    -->
    
    </web-app>
    

  5. Tomcatを再起動します。

Xi文書のサンプル
Xi文書のファイル名は、 web.xmlのサーブレット・マッピングで指定したパターン(上記の例では*.xi) に合わせる必要があります。ここでは下の文書を「date.xi」 と名づけて C:/usr/public_html/bxi に配置します。

<?xml version="1.0" encoding="Shift_JIS" ?>
<xi:program xmlns:xi="http://www.baykit.org/Xi/1.1">
<html><body>
<h1>
  <xi:variable name="date" select="$Java.new('java.util.Date')"/>
  <xi:value-of select="$date.toLocaleString()" />
</h1>
</body></html>
</xi:program>

そして、Webブラウザで http://servername:port/xi/date.xi にアクセスして、現在の日時が表示されれば大成功です。

Baykit and Cocoon Top

(first uploaded 2002/06/09 last updated 2002/12/08, URANO398)

テレワークならECナビ Yahoo 楽天 LINEがデータ消費ゼロで月額500円〜!
無料ホームページ 無料のクレジットカード 海外格安航空券 海外旅行保険が無料! 海外ホテル