Eclipse/エラー:Could not publish server configuration
複数バージョンの開発アプリのサーバー上の競合
Eclipse JUNO上での開発時に遭遇しました。
一つのワークスペース上で複数バージョンのアプリを管理したいことがあります。
あるバージョンをダウンロードして、Server上で実行(Run As > Run on Server)すると、普通に動作しますが、別のバージョンのアプリをダウンロードして、そちらをServer上で実行すると、競合が発生し、その後、どちらもうまく動かなくなります。
エラーとしては以下のようなメッセージダイアログが出ます。
'Publishing to Tomcat v6.0 Server at localhost...' has encounterd a probrem. Could not publish server configuration for Tomcat v6.0 Server at localhost.
ダイアログの[Detail]ボタンを押すと、さらに以下のような情報が得られます。
Could not publish server configuration for Tomcat v6.0 Server at localhost. Multiple Contexts have a path of "/myapp"
これは、Eclipse上のTomcat Serverの、server.xmlに、同じ実行パスが複数書かれていることが原因です。
自分の環境でもserver.xmlの最後のほうに以下のような記載がありました。
<Context docBase="myapp" path="/myapp" reloadable="true" source="org.eclipse.jst.j2ee.server:myapp"/> <Context docBase="myapp_20130422" path="/myapp" reloadable="true" source="org.eclipse.jst.j2ee.server:myapp_20130422"/>
「myapp」は自分の開発していたアプリ名です。本線が「myapp」で、ブランチが「myapp_20130422」なのですが、どちらも同じパス(/myapp)でかぶっていますね。
これを以下のように修正します。
<Context docBase="myapp" path="/myapp" reloadable="true" source="org.eclipse.jst.j2ee.server:myapp"/> <Context docBase="myapp_20130422" path="/myapp2" reloadable="true" source="org.eclipse.jst.j2ee.server:myapp_20130422"/>
2行目のパスを「/myapp2」に変更しました。これで競合解消しますが、テスト時のURLが「myapp2」になってしまうので注意してください。
このページのURL: