0

編集:最新の調査結果を含め、既に修正された問題を削除するように質問を書き直しました。

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か?しかし、パスがそれらを指すようにする方法がよくわかりませんか?ファイルが存在しない場合、アプリケーションはファイルを作成することになっているため、このソリューションも好きではありません。

4

0 に答える 0