0

Java Web アプリケーションは、それらを実行するための便利な方法を提供します。jar ファイルを tomcat の webapps フォルダにドロップするか、Tomcat マネージャを使用してアップロードするだけで十分です。jar ファイルの名前が foo123.jar の場合、Web アプリケーションはすぐに http://<host>:8080/foo123/ でアクセスできるようになります。ただし、ほとんどの場合、構成に問題があります。データベースにデータを格納するのは良い方法ですが、データベース接続パラメータはどこに格納できますか? 通常、server.xml、web.xml、またはその他の構成ファイルを調整してそこに配置する必要がありますが、これにより、そのようなアプリケーションの自動展開を利用することが妨げられます。

「使いやすい」Web アプリケーションは、「セットアップ」画面のように、最初の実行時に必要な構成を要求し、サーブレット コンテナーの再起動後も存続する場所に保持する必要があります。もちろん、データベース接続パラメータの場合、それらをデータベースに保存することはできません。

仕様に従って、サーブレット コンテナーは、Web アプリケーションが書き込みアクセスできるディレクトリを提供する必要があります。以下を使用して決定できます。

File tempDir =
(File) session.getServletContext().getAttribute("javax.servlet.context.tempdir");

このディレクトリの内容は、「サーブレット コンテキスト ライフサイクル」にバインドされています。これが正しければ、サーバーの再起動後に空になることを意味します。それが本当なら、私の目的には使えません。

そのためのベストプラクティスを知っている人はいますか?車輪の再発明はしたくありません。

より良い解決策がないので、私は次のように実装します。前述のように、上記の簡単な展開手段を利用すると、コンテキスト パスは jar ファイル名から派生します。したがって、これをデータベース接続にも利用することが想像できます。簡単に言えば、Web アプリケーション foo123 が localhost:3306 (MySQL のデフォルト ポート) で MySQL 接続を見つけ、ユーザー名 foo123 とパスワード foo123 で接続でき、foo123 というスキーマにアクセスする権限がある場合、再起動時に常にそれを使用します。

それについてどう思いますか?

4

1 に答える 1

1

context.xmlファイルを使用できます。これにより、サーバーごとに構成ファイルを保存できるようになり、その情報をコード自体に入れる必要がなくなります。

この例は、それをかなりうまくまとめているようです。

于 2012-10-12T14:35:59.397 に答える