code up

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

新しくTomcatをセットアップした時にやること

Eclipseでサーバーの再作成などを行いserver.xmlなどが初期化された時にやり直すことの一覧とその参照先とか。

マルチインスタンス化やログのローテーションは過去の記事を参照

環境はTomcat 7.0.25 + Java6u30

server.xml

まずはserver.xml。実際にWebアプリを動かすサーバーと、Eclipseのserver.xmlは同期させていないので、それぞれ修正する。

ポート番号

必要に応じてserver.xmlを直接修正あるいはEclipseであればServerタブから変更したいインスタンスを選んでダブルクリック or 右クリック→Openする。

URIEncoding

GETパラメータで渡されたエンコード値(%xx)のデコードに使用する文字コードを指定する。useBodyEncodingForURIというパラメータも似たようなものであるが、環境はUTF-8で統一されているのでURIEncodingを使う。

<Connector connectionTimeout="20000" port="8080" protocol="HTTP/1.1" redirectPort="8443" URIEncoding="UTF-8"/>
<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" URIEncoding="UTF-8"/>

AJPHTTPを参照。

アクセスログ

server.xmlでデフォルトではアクセスログが有効になっているかもしれない。Hostタグの下にAccessLogValveのValveタグがあれば、全てのアプリケーションのアクセスログが出力される。

各Webアプリケーションでログを出力していれば重複する内容となる。

Valveタグをコメントアウトor削除すれば全アプリケーション共通のアクセスログは無効化されるが、ここではファイル名に日付が付くのを回避する(同じファイルにずっと出力し続ける)よう変更する。

Hostタグの直下に例えば次のように定義する。

<Valve className="org.apache.catalina.valves.AccessLogValve"
	rotatable="false"
	prefix="localhost_access_log"
	suffix=".txt"
	pattern="combined" />

Valveについてのドキュメント

Server Options (Eclipseのみ)

XMLファイルの分離

気にしなくても平気かもしれないが、ログに下記警告

警告: [SetPropertiesRule]{Server/Service/Engine/Host/Context} Setting property 'source' to 'org.eclipse.jst.j2ee.server:project' did not find a matching property.

が出る。Contextタグにsource属性をEclipseが挿入するのが原因であるが、これはどうにも消せないみたいだ。

Server Optionsにある『Publish module contexts to separate XML files』にチェックを入れて消せるような記事も見かけたがEclipseのバージョンが合ってないためか効果はなかった。Eclipse Community Forumsによるとプロジェクトを識別するためにEclipseが挿入するものとのこと。

このチェックで$CATALINA_BASE/conf/Catalina/localhost/の下にプロジェクト名.xmlファイルが作成されるようになる。チェックがオフだとserver.xmlに挿入される。

デプロイのタイミング

Publishingにある『Never publish automatically』にチェックを入れる。ソースコードを変更する度にデプロイされるのは邪魔なため。Ctrl+Alt+Pか、Serverタブの『Publish to the server』を押した時のみデプロイするようになる。

Context

アプリ毎の設定はWebContent/META-INF/context.xmlに書く(JDBCのJNDIとか)。Contextおよび直下のManagerあたりを参照。

セッション情報のディスク保存の無効化

Managerタグのデフォルト実装(Standard Implementation)では、SESSIONS.serというファイル名でセッション情報がディスクに保存されている(場所はwork/Catalina/localhost/アプリ名)。これはサーバーが再起動してもセッションIDが生きていればセッション情報を復元できるようにするためである。

セッションオブジェクトはTomcatのものは使わず、基本自作しているため本機能は無効化する。

$CATALINA_BASE/conf/context.xml(全Webアプリでオフ)もしくはWebアプリ毎のMETA-INF/context.xml(そのアプリだけでオフ)内のContextタグの直下に次のManagerタグを挿入する。pathnameが空文字なのがポイント。

<Manager pathname="" />

番外編: Eclipse外

JDBCドライバを$CATALINA_HOME/lib/にいれる。

$CATALINA_BASE/conf/にある次のファイルを修正。

logging.properties
ログファイル名に日付を含めないようにする設定。修正内容は以前の記事に。
tomcat-users.xml
managerアプリを使う時とか。
<?xml version='1.0' encoding='utf-8'?>
<tomcat-users>
  <user username="manager" password="manager" roles="manager-gui,manager-script" />
</tomcat-users>
関連記事
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。