メニュー

プロダクト



プログラミング


  • Java
    • Web 技術
    • メール技術
      • JavaMail
      • Apache James Mailet
    • Web フレームワーク
      • Jakarta Struts
      • Jakarta Velocity
      • Jakarta Tapestry
      • WebWork2
      • Jakarta Jetspeed
      • Apache Cocoon 2
    • DB 技術
      • JDBC
      • Hibernate
      • Apache Torque
    • DI (IoC) コンテナ
      • Spring Framework
      • Seasar2
      • Apache HiveMind
      • PicoContainer
    • 属性プログラミング
    • テスティング
      • JUnit
      • Jakarta Cactus
      • DBUnit
      • djUnit
      • FitNesse
    • ロギング
      • Apache Log4j
      • Jakarta Commons logging
    • 分散コンポーネント技術
      • EJB
    • リッチ クライアント
      • Java Web Start
    • GUI
    • XML Web サービス
      • Apache Axis
      • Apache SOAP
    • アプリケーション管理
    • トランザクション
    • 開発環境
      • Apache Ant
      • Apache Maven
      • Apache Maven2
    • Eclipse
    • Tips
  • .NET Framework
  • PHP
  • XML
    • SmartDoc
  • 正規表現
  • VB, VBA, VBScript, ASP
  • C/C++

DBMS


  • MySQL
  • PostgreSQL
  • Oracle
  • Microsoft SQL Server
  • HSQLDB
  • SQLite
  • Apache Xindice

アプリケーション サーバ



OS



バージョン管理システム



未整理


最近更新したページ
このウィキの読者になる
更新情報がメールで届きます。
このウィキの読者になる

Jakarta Tomcat/Embed

Web アプリケーションを作りたい。ユーザに Servlet コンテナをセットアップさせる手間を省くために、 Servlet コンテナ込みで配布したい。 Tomcat をフルで配布するのは容量が大きすぎる。

そんなときは Embed Tomcat を利用しましょう。というわけで、 Embed Tomcat の使い方です。ここでは Embed Tomcat 5.5.12 を使用します。

サーバの基底ディレクトリ


catalina.home システム プロパティを参照するようです。 java コマンドで指定するか、以下のように設定するといいでしょう。

System.setProperty("catalina.home", "C:/embed-tomcat");

何も指定しないと、カレント ディレクトリを catalina.home とするようです。

組み込みサーバ (Embedded クラス)


org.apache.catalina.startup.Embedded クラスが組み込み Tomcat サーバを表します。次のようにインスタンスを生成します。

Embedded embedded = new Embedded();

このインスタンスに、エンジン、レルム、コネクタなどなどを追加します。

エンジン


Tomcat の Servlet エンジンです。 org.apache.catalina.Engine インターフェイスのがエンジンを表します。次のようにインスタンスを生成します。

Engine engine = embedded.createEngine();
engine.setName("uguu");             // エンジンの名前。
engine.setDefaultHost("uguu-host"); // 既定のホスト。
embedded.addEngine(engine);

ホスト


エンジン上の仮想ホストです。この上でコンテキストを公開することになります。 org.apache.catalina.Host インターフェイスがホストを表します。次のようにインスタンスを生成します。

Host uguuHost = embedded.createHost("uguu-host", webapps");
engine.addChild(uguuHost);

Embedded#createHost() メソッドの、第 1 引数はホストの名前、第 2 引数はホストの実際のディレクトリ パス (この場合は、カレント ディレクトリからの相対パス) です。

コンテキスト


Web アプリケーションです。 org.apache.catalina.Context インターフェイスがコンテキストを表します。次のようにインスタンスを生成します。

Context rootCtx = embedded.createContext("", "ROOT");
uguuHost.addChild(rootCtx);

Context managerCtx = embedded.createContext("/manager", "manager");
uguuHost.addChild(managerCtx);

Embedded#createContext() メソッドの、第 1 引数はコンテキストのホスト上のパス、第 2 引数は実際のディレクトリ パス (この場合は、ホストのディレクトリからの相対パス) です。

レルム


レルムは org.apache.catalina.Realm インターフェイスが表しますが、 org.apache.catalina.realm パッケージに格納されているレルム パッケージを参照するべきです。

よく使用されるメモリ レルムは org.apache.catalina.realm.MemoryRealm クラスです。ありがちな、 conf/tomcat-users.xml を使用するアレです。次のようにインスタンス化します。

MemoryRealm realm = new MemoryRealm();
embedded.setRealm(realm);

MemoryRealm#setPathname() メソッドで任意の XML ファイルを使用することもできます。

コネクタ


TCP/IP ベースのコネクタです。 org.apache.catalina.connector.Connector クラスがコネクタを表します。次のようにインスタンス化します。

Connection conn = embedded.createConnector((InetAddress) null, 8080, false);
embedded.addConnector(conn);

Embedded#createConnector() メソッドの、第 1 引数はバインドする IP アドレス (null の場合は全てのアドレス) 、第 2 引数はリスンするポート番号、第 3 引数は SSL をサポートしたコネクタを生成するかどうか (true で SSL をサポートしたコネクタを生成) です。

起動、終了


とりあえず、以上で設定完了です。次に起動します。

embedded.start();

このメソッドは Tomcat が起動したら処理が戻ります。 main スレッドが終了しても Tomcat のスレッドは生きているので、ちゃんと Tomcat を終了させる必要があります。

embedded.stop();

これで Tomcat は終了します。具体的には、以下のように組み合わせて使うといいでしょう。

embedded.start();
System.in.read();
embedded.stop();

参照


2005年12月24日(土) 06:05:30 Modified by uguuxp




スマートフォン版で見る