編集:最新の調査結果を含め、既に修正された問題を削除するように質問を書き直しました。
myapp
以前に同僚が作成したサーブレット アプリケーションを開発しています。Debian で開発および実行しています。使用している Tomcat サーバーはバージョン 6 です。
このアプリケーションでは、次の 3 つのファイルが使用されます。
myapp-database.db - sqlite file, if is is not present application creates it
myapp-log.xml - log file, it is opened/created by the application
myapp-config.xml - configuration files, included in /usr/main/resources
ホーム ディレクトリにインストールされた Eclipse-inner-Tomcat でこれを実行するmyapp-database.db
と、ファイルmyapp-log.xml
がホーム ディレクトリに直接作成されます。
aptitude でインストールされたシステム Tomcat にアプリケーションをデプロイすると、このファイルに問題が発生します。それはで示しますcatalina.out
:
Error while initialising logger: mylog.xml
java.io.IOException: Couldn't get lock for mylog.xml
...
SEVERE: couldn't initialize database:
opening db: 'mydb.db': Permission denied
java.sql.SQLException: opening db: 'mydb.db': Permission denied
...
次のようにアプリケーションをデプロイします。
sudo cp myapp.war /var/lib/tomcat6/webapps/
次に、システム Tomcat をオンにできません。アプリを削除しwebapps
ても問題ありません。
ディスクのどこかにディレクトリを作成し、所有者を tomcat に変更しました。コード内のファイル名を絶対パスに変更して、ディレクトリに作成されるようにしました。Tomcat はオンになり、クラッシュしませんでした。ファイルはそこに作成されました。
これは、この問題に対処する通常の方法ですか? 完全に Tomcat の外部でアプリケーション ファイルを作成しますか? これにより、アプリケーションの移植性が低下し、インストールが難しくなると思います。
たぶん、ファイルを次の/usr/main/resources
ように配置する必要がありますmyapp-config.xml
か?しかし、パスがそれらを指すようにする方法がよくわかりませんか?ファイルが存在しない場合、アプリケーションはファイルを作成することになっているため、このソリューションも好きではありません。