
Tomcatで、ログを詳細に出すには?
EclipseのTomcat8にて、下記のエラーが出たために、Tomcatの起動ができませんでした。
そこで色々ぐぐって、詳細なデバッグログを出す方法で解決しました。
1.起動できないサーバーをダブルクリック
2.下記の画面が開くので、「一般情報→起動構成を開く」をクリックします。
3.「引数」→「VM引数」に下記の記述を追加して、「適用」→「OK」をクリックします。(赤字の箇所は変えてください。)
3.コンソールにログがでました。
ちなみに、今回の原因は、サーブレットファイルをコピーした際に、下記の記述をそのままにしていたために、URLパターンが重複していたためでした。
@WebServlet("/xxx")
ディレクトリ構成
JSP/サーブレットのアプリケーションサーバーといえば、Tomcatですが、基本的なディレクトリ構成についてまとめます。
ディレクトリ構成 | 説明 |
---|---|
tomcat | |
├bin | 起動、停止等のスクリプトを配置する。 |
├conf | 設定ファイル系を配置する。 |
├lib | クラス、JARファイル等を配置する。Tomat、Webアプリ共通 |
├logs | ログファイルが出力されるディレクトリ |
├temp | JVMの一時ファイルが出力される。 |
├webapps | Webアプリを配置するディレクトリ |
└work | Webアプリの一時ファイルが出力されるディレクトリ |
Tomcatを自動再起動させるには?
サーブレットで作ったWebアプリを修正する度に、Tomcatを再起動して、動作確認するのはめんどくさいですよね。
下記のような設定をすることで、自動再起動が可能となります。
作成中のWebアプリの「META-INF」の下に、「context.xml」ファイルを配置します
context.xmlファイル内に、下記のように記述をします。
<?xml version="1.0" encoding="UTF-8"?> <Context reloadable="true" />
なお、開発時は、便利な機能ですが、運用時はパフォーマンスに影響するので、本機能はoffにしておきましょう!
Tomcatの「conf/context.xml」で設定すれば、「全てのアプリケーション」に本設定を適用できますが、パフォーマンスに影響を与えるので、あくまでアプリごとに設定を行いましょう!
セッションタイムアウトの設定をするには?
Tomcatのconf/web.xmlの下記の設定にてできます。デフォルトでは、30分がセッション時間となっています。
<session-config> <session-timeout>30</session-timeout> </session-config>
用語
コンテキスト名
Webアプリケーションの名前のことで、Tomcat等のアプリケーションサーバはこの単位でWebアプリケーションを管理します。
例えば、Webアプリが下記のようなURLになっていた場合は、「app」がコンテキスト名になる。
http://localhost:8080/app/index.jsp
コンテキストルート
Webアプリケーションの最上位のURLのこと。
コンテキストパス
JSPで言えば、下記のように記述することで、コンテキストパスを取得することができます。
&lt;%=request.getContextPath() %&gt;
web.xml
配置記述子(ディプロイメントディスクリプタ)とも呼ばれ、Webアプリケーションの各種設定を記述する。
作成する場所は、WEB-INFの直下である必要がある。
具体的な書き方は、下記の記事で解説しています。
入力パラメータ
ブラウザからサーブレットに渡される値を「入力パラメータ」と呼びます。
入力パラメータをサーブレットで処理するためには、HttpServletRequestの下記メソッドを使います。
(詳しくは、JavaDocを見ていただければと思います。)
メソッド | 説明 |
---|---|
getparameter | 引数に存在するパラメータを取得する。ない場合はnullを返す。 |
getParameterNames | 名前一覧を返す。 |
URLエンコード
URLは、日本語を含めることができないので、一旦WebブラウザでURLとして扱うことができる文字列にして、Tomcat等のアプリケーションサーバーに送信されること。
ディスパッチ
サーブレットから、他のリソース(HTML、JSP、サーブレット)にリクエストを転送すること。
javax.servlet.RequestDispatcherインターフェイスを利用する。
この記事へのコメントはありません。