未分類レシピ

トップ > チップス > 未分類レシピ
2012-02-13, tomcat_other

/tips/tomcat/other **SSLコネクタを作る

J2SDK付属のkeytoolで証明書を作成します。.keystoreはコマンドを実行したユーザのホームディレクトリに作成されるので、tomcatを動かすユーザで作ると便利です(いいのかな?)。

:# $JAVA_HOME/bin/keytool -genkey -alias tomcat -keyalg RSA

{del:それからtomcatのadminツールでHTTPSコネクタを作成します。この際、アルゴリズムやら認証やらの意味が解らない場合は、デフォルトの設定を一切弄らずにキーストアのパスワードだけ書き込むとよいでしょう。そのまま動きます(いいのかな??)。}動かないです。未設定のパラメタに「null」という文字列が設定されたりしてめちゃくちゃになります。

server.xmlを編集して、以下のコネクタを定義します。 : : これで安全なtomcatができます(本当かな???)!

443以外のポートにコネクタを作成した場合でも、プロトコルをhttpsにして下さい(httpだと接続できません)。

:ex. https://www.example.com:8443/

apache httpd側と連携する場合は、{link:/tips/linux/apache}を参照して下さい。

**GETで日本語を送信する際の文字化け対策 server.xmlのConnector要素(8080)に以下の属性を追加する(install5_5にも同様のメモあり)。 : useBodyEncodingForURI="true"

-{link:http://www.atmarkit.co.jp/fjava/rensai3/mojibake03/mojibake03.html}

**シンボリックリンクを許可 Host要素の属性として以下を定義すればOK・・・と書いてあるのだが動かない(調査中)。 :allowLinking="true"

{link:http://tomcat.apache.org/tomcat-5.0-doc/config/defaultcontext.html}

**BASIC(DIGEST)認証を行う web.xmlに下記のような設定を記述することでBASICまたはDIGEST認証を行うことができます。認証にはtomcatのユーザデータベース(tomcat-users.xmlなど)が利用されるので、データベースの更新が面倒です。 : : : edit : /edit/* : : : acornSnap : : : : acornSnap : : : DIGEST : edit :

**catalina.outへの出力を抑制する ※期待した動作をしないので利用を中止しました。

Tomcatはウェブアプリケーションの標準出力をlogs/catalina.outというファイルに蓄積します。アプリケーションの規模が大きくなると、ファイルがすぐに肥大化して問題になるため、java.loggingによる出力を抑制するために以下のファイルを追加します。 conf/javalogging.properties :java.util.logging.ConsoleHandler.level=SEVERE

さらに以下のパラメタをCATALINA_OPTSに追加します。 :-Djava.logging.config.file=conf/javalogging.properties

**安全に再起動する 通常、shutdown.shを実行するとバックグラウンドで終了処理が開始し、{strong:しばらく経ってから}tomcatは完全に停止します(恐らくセッション情報の保存やリスナに登録された処理をこなしているため)。よって、再起動を行いたい場合に「shutdown.sh && startup.sh」のような記述を行うとtomcatが二重に起動してしまう問題が生じます。

下記のスクリプトでは、終了コマンド実行後、30秒間プロセスを監視し、正常にプロセスが消えた後、起動コマンドを実行しています。

:TOMCAT_USER=tomcat :echo "Shutting down tomcat: " :su - $\{TOMCAT_USER\} -c "shutdown.sh" :echo -n "Waiting for termination ." :FIN=false :for COUNT in $(seq 0 30) :do : if [ -z "$(ps -ef | egrep java.+apache-tomcat | grep -v egrep)" ] : then : FIN=true : echo "Ok." : break : else : echo -n "." : sleep 1 : fi :done :if [ $\{FIN\} != "true" ]; then : echo "Fail." : exit 1 :fi :echo "Starting tomcat: " :su - $\{TOMCAT_USER\} -c "startup.sh" :echo

**余計な空行の出力を抑制する JSPの先頭など、ディレクティブが複数並ぶ箇所で出力時に空行が並んでしまうのが気持ち悪い場合、conf/web.xmlのjspサーブレットにtrimSpacesパラメタを指定することができます。

conf/web.xml : : jsp : org.apache.jasper.servlet.JspServlet : : : : trimSpaces : true : : : :

-参考: {link:http://blog.cles.jp/item/1541}

**エラー発生時に表示されるページを指定する 404や500の発生時に表示されるページは、web.xmlで指定することができます。error-codeの代わりに、exception-typeを指定することも可能です。 : : 404 : /WEB-INF/404.jsp :

**レスポンスヘッダでファイル名を指定する サーブレットなどの出力を直接ダウンロードして貰いたい場合、サーブレットの名前がファイル名の規定値になってしまうと不便です。以下のようにして、ダウンロードされるファイルの名前を指定することが可能です。

:response.setHeader("Content-Disposition", "filename=\\"" + filename + "\\"");

**getRemoteHostとgetRemoteAddrの違い getRemoteHostは名前解決を試行し、getRemoteAddrはIPアドレスをそのまま返します。但し、getRemoteHostでホスト名を得るには、server.xml中の以下の設定を有効にしておく必要があります(無効の場合、両メソッドは同じ値を返します)。

:enableLookups="true"

この記事は役に立ちましたか?