Eclipseで動的Webプロジェクトのコンテキストルートを変更する方法


205

私はEclipseで動的Webプロジェクトを開発しました。次のURLを使用して、ブラウザーからアプリにアクセスできます。

http://localhost:8080/MyDynamicWebApp

アクセスURLを次のように変更します。

http://localhost:8080/app

そのために、コンテキストルートをプロジェクト「プロパティ| Webプロジェクト設定|コンテキストルート」から変更しました。ただし、Webアプリには引き続き同じアクセスURLがあります。アプリケーションをTomcatに再デプロイし、Tomcatを再起動しましたが、アクセスURLは以前と同じです。

server.xmlファイルに添付されているWARファイルがないことがわかりました。server.xmlファイルが添付されていない場合、TomcatはどのようにしてWebアプリケーションのコンテキストルートであると判断し、/MyDynamicWebAppこのコンテキストルートURLを介してアプリケーションにアクセスできるようにしますか?

回答:


331

きっとあなたはもう先に進んでいると思いますが、とにかく答えようと思いました。

これらの回答のいくつかは回避策を提供します。実際に必要なことは、プロジェクトをクリーンアップして再発行し、新しいURIを「アクティブ化」することです。これは、サーバー(サーバービュー)を右クリックし、[クリーン]を選択することで実行できます。次に、起動(または再起動)します。ここでの他の回答のほとんどは、実際にこれを達成することを提案しています。

変更されるファイルworkspace/.metadata/.plugins/org.eclipse.wst.server.core/publish/publish.datは、ワークスペースに複数のサーバーが存在する場合を除き、publishN.dat同じパス上にあります。

これが誰かを助けることを願っています。


これが適切なエチケットであるかどうかは不明です。この回答を編集して、Eclipse Indigoの正確な手順を示します。

  1. プロジェクトのではプロパティ、選択したWebプロジェクトの設定を

  2. コンテキストルートappに変更します。

    EclipseプロジェクトプロパティのスクリーンショットWebプロジェクト設定

  3. [ウィンドウ]> [ビューの表示]> [サーバー]を選択します

  4. 赤い四角のボックス(「サーバーの停止」ツールチップ)をクリックするか、サーバーリストを右クリックして[停止]を選択し、サーバーを停止します。

  5. 使用するサーバーで、コンテキストクリックして[クリーン]を選択します。

    ここに画像の説明を入力してください

  6. この確認ダイアログボックスで[OK]をクリックします。

    変更されたコンテキストルートに一致するようにサーバー構成を更新することを求めるダイアログのスクリーンショット

これで、次のような新しい「アプリ」URLでアプリを実行できます。

http://localhost:8080/app/

これをEclipseの外の本番サーバーで行うと、さらに簡単になります-> warファイルの名前を変更します。VaadinアプリをWARファイルとしてエクスポートします([ファイル]> [エクスポート]> [ウェブ]> [WARファイル])。WARファイルを、TomcatなどのWebサーバーのサーブレットコンテナーに移動します。WARファイルの名前をこの場合はapp.warに変更します。サーブレットコンテナを起動すると、Tomcatなどのほとんどのアプリケーションがアプリを自動デプロイします。これには、warファイルをフォルダに展開することが含まれます。この場合、appという名前のフォルダーが表示されます。あなたは行ってもいいはずです。URLをテストします。* example.comなどのドメインの場合、これは次のようになります。

http://www.example.com/app/

Vaadinツールキットプログラマーは、ビジュアルアドオンを使用する場合、ウィジェットセットを再構築する必要がある場合があります。


素晴らしい答え!!! ここにある他の答えのほとんどが私の命を救っています。実際にこれを達成することを提案します
AndreaNobili

この返信の天才は次のとおりです。私はこのページへの道をGoogleで検索し、タグも読みませんでした(Visual Studioを使用してASP.NET Webサイトを構築しています)。しかし、解決策はとにかく機能しました!
Curt

私にはそのようなものはなく、オプション「Webプロジェクト設定」
IntoTheDeep

それworkspace/.metadata/.plugins/org.eclipse.wst.server.core/publish/publish.datがバイナリファイルであるとだけ言っても、なぜそこに言及したのか理解できません。問題の解決策であるという印象を与えます
aliopi '27

しかし、EclipseやIDEを使用しない場合はどうでしょう。サーブレットコンテキストのルートパスをプログラムで構成したいのですが。どうすればいいですか?おそらくweb.xmlにありますか?..
Giorgi Tsiklauri

32

プロジェクトのプロパティでコンテキストルートを変更した後、TomcatからWebサーバーを削除し(サーバーのコンテキストメニューの[追加と削除...]を使用)、再デプロイしてから、アプリケーションを再度追加して再デプロイする必要があります。それは私のために働いた。

打たれた場合は、別の選択肢があります。「サーバー」ビューでTomcatサーバーを選択します。そのサーバーをダブルクリック(またはコンテキストメニューで[開く]を選択)すると、[モジュール]ページがあるマルチページエディターが表示されます。ここでは、モジュールのルートコンテキスト(このページではPathと呼ばれます)を変更できます。


ありがとう!これは私にとってはトリックでした。ただし、プロジェクトプロパティのコンテキストルートを変更しなくても機能します。ここで何か不足していますか?
Chris

これは以前のEclipseビルドでも機能していましたが、現在のビルド(Luna)ではCleanオプションのみが機能します
Griknok

namasety、dhanywaada :)最初にコンテキストを変更したとき、サーバーを再起動してクリーンアップした後でも機能しませんでした。それは投稿のみで機能し、プロジェクトを削除して再読み込みしました。
Yogesh Sanchihar

24

EclipseからTomcatを実行している場合、実際のTomcatインストールの構成は使用されません。「サーバー」プロジェクトの下に作成して保存したTomcat構成を使用します。Eclipseワークスペースを表示すると、「サーバー」というプロジェクトが表示されます。その「サーバー」プロジェクトを展開すると、server.xmlが表示されます。このファイルを開き、一番下までスクロールすると、次のように表示されます。

<Context docBase="abc" path="/abc" reloadable="true" source="org.eclipse.jst.jee.server:abc"/>

ここでは、プロジェクトコンテキストパスを別のパスに変更できます。

お役に立てれば。


3つの値すべてを変更したいのかわかりません。Csaba_Hのソリューションは私にとってうまくいき、それは「パス」属性のみを変更します...
Chris

これは私にはうまくいきませんでした-サーバーを再起動すると、そのディレクトリのファイルは上書きされます。Csaba_Hのバージョン2、Tomcatサーバーの下の[モジュール]タブは、「正しい」アプローチのようです。
idarwin 2012

17

ラス・ベイトマンが提案した解決策をここで試しました

http://localhost:8080/Myapphttp://localhost:8080/somepath/Myapp

しかし、ローカルマシン上のサーバーの個々のインスタンスではなく、構成を保持できる* .warファイルが必要だったので、Didntは私にとってはうまくいきました。

参照

そのためには、WEB-INFにjboss-web.xmlを配置する必要があります

<?xml version="1.0" encoding="UTF-8"?>
 <!--
Copyright (c) 2008 Object Computing, Inc.
All rights reserved.
-->
<!DOCTYPE jboss-web PUBLIC "-//JBoss//DTD Web Application 4.2//EN"
"http://www.jboss.org/j2ee/dtd/jboss-web_4_2.dtd">

  <jboss-web>
  <context-root>somepath/Myapp</context-root>
  </jboss-web>

これでうまくいきました。環境= Eclipse + m2e + m2e-wtp +サーバービューからJBossにデプロイ。メインのWebプロジェクトをROOTとしてデプロイする必要があり、Eclipse設定ではうまくいきませんでした。Toshaのファイル(上記)をコピーし、引用符ではなく "ROOT"をコンテキストルート値として配置しました。完了しました。ありがとう、@ Tosha!
Steven Francolla

これは機能しますが、プロジェクトプロパティの設定を無視するのはなぜでしょうか。
Vedran 2013年

4
JBoss WildFly 8.1.0 Finalで動作します
アレクサンダー2015

MyEclipse 8.6からEclipseに移行しましたが、「/」ルートコンテキストでデプロイできませんでした。jboss-web.xmlの追加は成功しました。サーバー:Jboss AS 5.1 Eclipse Luna。
2016年

9

Eclipse Webモジュールの編集ダイアログでパスを何にも設定しないと、URLにパスコンポーネントがない(ROOTなど)プロジェクトなしでプロジェクトにアクセスできます

「サーバー」ビューでTomcatを選択した場合にF3を押すか、ダブルクリックすると、Webモジュール編集ダイアログにアクセスできます。

いくつかのスクリーンショット:


申し訳ありませんが、これについて詳しく教えてください。
smonff

ああ、ありがとう!GNU / LinuxのEclipse Lunaでは、a /が必要です。
smonff

1
Win7ではEclipse Mars(4.5)を使用しました。
Ray Hulha

6

Apache Tomcatは、プロジェクトコンテキストパスをserver.xmlパスに保持します。EclipseのWebプロジェクトごとに、そこからタグを変更できます。
サーバーに2つまたは3つのプロジェクトがデプロイされているとします。それぞれのコンテキストパスがに保存されます。このタグは、Eclipseで作成されたサーバー内のserver.xmlファイルにあります。

サーバーのコンテキストルートパスにあるプロジェクトが1つあります:

<Context docBase="Test" path="/test" reloadable="true" source="org.eclipse.jst.jee.server:Test1"/>

このパスは、Webアプリケーションのコンテキストパスを表します。このパスを変更すると、Webアプリのコンテキストパスが変更されます。


6

答えはすでに受け入れられています。ただし、Mavenを使用している人が同じことを実現したい場合に備えて、Maven ビルドのfinalNameに任意の名前を付けて、Maven- > updateプロジェクトを実行します。

<build>
    <finalName><any-name></finalName>
    <plugins><provide-plugins-needed></plugins>
<build>

4

プロジェクトがmavenの場合は、pom.xmlの「finalName」を変更して、プロジェクトをMavenに更新します。これでうまくいきました。


2

Glassfishでは、WEB-INF / glassfish-web.xmlファイルも変更する必要があります

<glassfish-web-app>
    <context-root>/myapp</context-root>
</glassfish-web-app>

したがって、[ 実行 ] > [サーバーで実行 ]をクリックすると、正しく開きます。


はい、必要です。素敵な共有。
Dinath

2

ルートコンテキストでアプリケーション名がまったく必要ない場合は、「/」(引用符なし、スラッシュのみ)をEclipse-> Webプロジェクト設定->に追加するだけです。コンテキストルートエントリ

これにより、Webアプリケーションがhttp:// localhost:8080 /にのみ展開されます。

もちろん、これはサーバー上で実行しようとする他のWebアプリケーションで問題を引き起こすので、それに注意してください。

それをつなぎ合わせるために私を永遠に連れて行った...それで、この投稿は8歳ですが、うまくいけばこれはまだ誰かを助けるでしょう!


0

Javaプロジェクトで、.settingsフォルダーを開きます。そこで「org.eclipse.wst.common.component」という名前のファイルを見つけます。タグ<wb-module deploy-name = "NEW_NAME">を変更します。

また、プロジェクトのプロパティでコンテキストルートを変更することもできます


私のプロジェクトでは見栄えがよく、Eclipse内で問題なく実行されます。mavenを使用してwarファイルに変換すると、ルートコンテキストが
失わ

0

Eclipseを使用してアプリケーションをデプロイする場合。このMavenプラグインを使用できます

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-eclipse-plugin</artifactId>
    <version>2.10</version>
    <configuration>
        <wtpversion>2.0</wtpversion>
        <wtpContextName>newContextroot</wtpContextName>
    </configuration>
</plugin>

プロジェクトのルートフォルダーに移動し、その場所でcmdプロンプトを開き、次のコマンドを入力します。

mvn eclipse:eclipse -Dwtpversion = 2.0

影響を確認するには、eclipseを再起動するか、サーバービューでサーバーを削除してアジャンを作成する必要がある場合があります。このエクササイズは実生活では理にかなっていますが、うまくいきます。


0

maven Java ee 7/8エンタープライズアプリケーションを使用している場合、EARプロジェクトのpom.xmlを編集する必要があります

<build>
    <plugins>
        ...
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-ear-plugin</artifactId>
            <version>2.8</version>
            <configuration>
                <version>6</version>
                <defaultLibBundleDir>lib</defaultLibBundleDir>
                <modules>
                    <webModule>
                        <groupId>com.sample</groupId>
                        <artifactId>ProjectName-web</artifactId>
                        <contextRoot>/myproject</contextRoot>
                    </webModule>
                </modules>
            </configuration>
        </plugin>
        ...
    </plugins>
</build>
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.