JavaアプリケーションをAntでデプロイしています。残念ながら、Vistaが原因で、ローカルマシンでのテストデプロイメントが機能しません。ProgramFilesのディレクトリが保護されているため、Antを起動したくないまたは管理者としてのEclipse。そこで、webappsフォルダーをワークスペースサブフォルダーに移動して、Antでも相対パスを使用できるようにすることを考えました。
解決策は、server.xmlのHost要素を変更することのようです。 Linuxの場合、それはそのような取引ではありません。
<Host name="localhost" appBase="/path/to/webapps"
unpackWARs="true" autoDeploy="true"
xmlValidation="false" xmlNamespaceAware="false">
しかし、Windowsでは正しく理解できません。私は想像できるすべての可能な組み合わせを試しました。
C://Users//maerch//Workspaces//Tomcat6.0_webapps
C:/Users/maerch/Workspaces/Tomcat6.0_webapps
C:\Users\maerch\Workspaces\Tomcat6.0_webapps
C:\\Users\\maerch\\Workspaces\\Tomcat6.0_webapps
C://Users//maerch//Workspaces//Tomcat6.0_webapps\\
C:/Users/maerch/Workspaces/Tomcat6.0_webapps/
C:\Users\maerch\Workspaces\Tomcat6.0_webapps\
C:\\Users\\maerch\\Workspaces\\Tomcat6.0_webapps\\
パスも正しいですが、機能しません。また、ログファイルにはエラーメッセージはなく、ブラウザには404メッセージなどが表示されません。タイトルのない白いページなど。誰か助けてもらえますか?
Vistaでも同じセキュリティの問題があり、「ProgramFiles\Apache SoftwareFoundation\TomcatXYZ」フォルダの「Users」グループに「フルコントロール」アクセスレベルを提供することで解決します。
これにより、Tomcatのデプロイメントの問題と、Tomcatをサービスとして開始する際の質問が解決されました。もちろん、権限をより厳密に割り当てることができます(展開ユーザーグループごとまたはユーザーごと)。 IMOは、Tomcatを再構成するよりも迅速な方法です。
Windowsで$ {catalina.home}の外部のパスを変更する方法についての元の質問に関して:
これは、* nixで実行する必要があるのとまったく同じです。
<Host name="localhost" appBase="/c:/webapps2"
unpackWARs="true" autoDeploy="true"
xmlValidation="false" xmlNamespaceAware="false">
AppBaseに記載されているフォルダにROOTフォルダがありましたか?このアプローチはTomcat6.0でテストされています
以下はWindowsで動作するはずです:
C:/Users/maerch/Workspaces/Tomcat6.0_webapps/
/Users/maerch/Workspaces/Tomcat6.0_webapps/
WindowsはUnixのスラッシュ(/)もサポートしているため、Windowsのスラッシュ(\)の代わりにこれを使用することをお勧めします。また、Windowsの「デフォルトルート」はC:であるため、絶対パスで使用する必要はありません。
これはパスの問題ではないと思います。おそらく、相対パスを使用してみることができます。
"../../../Users/..."
フルアクセス権のあるディレクトリにTomcatをインストールすることもお勧めします。
windows用
appBase = "c:// webapps2"
同じwebappsディレクトリを別の場所にコピーし、server.xmlファイルのパスを変更するとどうなりますか。これを行うとしたら、間違いなく私は問題がないと信じています。なぜなら、Webアプリケーションがアプリケーションをデプロイする必要があるときはいつでも問題が発生するからです。
ありがとう&よろしく、キラン
Apache Tomcatバージョン8.5で試してみましたが、appBase="c:\path\to\webapps"
を使用するだけでシームレスに機能しました