ラベル tomcat の投稿を表示しています。 すべての投稿を表示
ラベル tomcat の投稿を表示しています。 すべての投稿を表示

2008年3月12日水曜日

managerのみMemoryRealmを利用する

servletの制御をおこなうmanagerアプリケーションのみMemoryRealmを利用するようにできるか調べてみました。
これは、managerアプリケーションとDBを利用するウェブアプリケーションをTomcat上に構築した際に、managerアプリケーションのRealmをDBに入れたくないためです(JDBCRealmで利用するテーブル構造が気に入らないのです)。
Apache Tomcat 6.0のリファレンスを参考にRealmを調べてみると、
Inside a <context> element</context> - This Realm will be used ONLY for THIS web application.
とあるので、CATALINA_HOME/conf/Catalina/localhost/manager.xmlのContextタグ内にRealmタグを付ければよいことになります。というわけでmanager.xmlを以下のようにしてみました。

<Context path="/manager" debug="0" privileged="true">
<Realm className="org.apache.catalina.realm.MemoryRealm"/>
</Context>


これでmanagerアプリケーションのみMemoryRealmを利用するようになったはずです。

さて、MemoryRealmに記載したパスワードはデフォルトでプレインテキストになっているので、これをダイジェストにしてみます。
それには、Realmタグにdigestプロパティを追加すればよくその値として、jaav.security.MessageDigestクラスがサポートしている
MD2、MD5、SHA-1、SHA-256、SHA-384、SHA-512が設定できるようです(Java 6のリファレンス)。
肝心のダイジェストの作成方法ですが、環境変数CATALINA_HOMEとしてTomcatのホームディレクトリが設定されているとして、以下のようにして作成できます。

java -cp %CATALINA_HOME%\lib\catalina.jar;%CATALINA_HOME%\bin\tomcat-juli.jar \
org.apache.catalina.realm.RealmBase -a SHA-256 プレインテキスト


ここで得られた文字列をtomcat-users.xmlのパスワードにコピーし、manager.xmlを以下のように修正します。


<Context path="/manager" debug="0" privileged="true">
<Realm className="org.apache.catalina.realm.MemoryRealm" digest="SHA-256"/>
</Context>

以上です。

2008年3月11日火曜日

Tomcatユーザ認証(MemoryRealm)

Tomcatのアプリケーションマネージャ(Servletを制御するアプリケーション)はアクセスする際にユーザ認証を利用していますが、そのユーザ認証にデータベースを利用する方法を調べてみました。

データベースでのユーザ認証を行う前に通常のファイルベースのユーザ認証を、まず試してみます。
なおTomcatのバージョンは6.0.16を前提とします。

Tomcatのドキュメントを参考に設定してみます。

  1. CATALINA_HOME/conf/Catalina/localhost/manager.xmlとして以下の内容を記載します。これによりローカルホストからのみmanagerアプリケーションにアクセスできるようになります。

    <Context path="/manager" debug="0" privileged="true">
    <Valve className="org.apache.catalina.valves.RemoteAddrValve"
    allow="127\.0\.0\.1"/>
    <Context>

  2. CATALINA_HOME¥cont¥tomcat-users.xmlの<tomcat-users>タグ内にユーザの設定を記載します。
    <user name="ログインユーザー名" password="ログインパスワード" roles="manager"/>

    もしくはEclipseの「Window」→「Preferences...」→「Tomcat」→「Tomcatアプリケーション・マネージャー」でユーザー名とパスワードを入力し「tomcat-users.xmlにユーザーを追加」ボタンをクリックすることで同じ操作が行われます。

  3. EclipseでTomcatを起動し、ブラウザでhttp://localhost:8080/manager/へアクセスします。その際tomcat-users.xmlで指定したログインユーザー名とパスワードを入力します。

  4. Tomcat Webアプリケーションマネージャ画面が表示されることを確認します。
以上でMemoryRealmを利用したユーザ認証の設定は終了です。



Tomcatを利用したEclipseでのウェブアプリケーション開発 -開発環境構築-

EclispeとTomcatでウェブアプリケーションを開発するときの開発環境の構築方法を示します。
最終的にEclipse上でTomcatを制御できるようにします。

  1. EclipseのHPよりEclipse IDe for Java Developerをダウンロードし、適当なディレクトリに解凍します。

  2. eclipsetotaleのHPよりSysdeo Tomcat Plugin(2008/3/11現在V3.2.1)をダウンロードし適当なディレクトリに解凍します。

  3. Sysdeo Tomcat Pluginを解凍して出来たディレクトリ内にあるcom.sysdeo.eclipse.tomcat_3.2.1を、ディレクトリごとEclipseをインストールしたディレクトリ/pluginsディレクトリにコピーします。

  4. Eclipseを起動し、メニューの「Window」→「Preferences...」をクリックします。

  5. 「Preferences」画面の「Tomcat」をクリックし、「Tomcatバージョン」でバージョン6.xを、「Tomcatホーム」にCATALINA_HOMEで指定したディレクトリを指定します。

  6. 引き続いて「Preferences」画面の「Tomcat」→「JVM設定」をクリックし、「JVMパラメーターへ追加」に-serverを追加します。
    これによりJava VMがサーバモードで起動しパフォーマンスも改善するようです(参考)。

  7. 「Preferences」画面を閉じツールバーに表示されているTomcat起動ボタンをクリックします。

  8. EclipseのコンソールにTomcatが起動したことを意味するメッセージが表示されていることを確認し、http://localhost:8080/にWebブラウザでアクセスします。
Tomcatパフォーマンスの向上を目指したNative Libraryの導入

Tomcatのパフォーマンスを向上させるために、APRベースのNative Libraryを導入します。

  1. TomcatのHPよりWindows用のNative Libraryバイナリ、tcnative-1.dllをダウンロードします(2008/3/11現在V1.1.12)。

  2. ダウンロードしたファイルをJAVA_HOME/binディレクトリにコピーし、EclipseでTomcatを起動します。

  3. その際コンソールに「Loaded APR based Apache Tomcat Native library 1.1.12.」と表示されることを確認します。
以上です。