web-dev-qa-db-ja.com

Originサーバーは、ターゲットリソースの現在の表現を見つけられなかったか、存在することを開示する意思がありません。 tomcatへのデプロイについて

Eclipse IDEでSpringを使用してアプリケーションを構築しました。 Eclipseからプロジェクトを起動するとIDEすべて問題ありませんが、mavenプロジェクトをwarファイルとしてパッケージ化し、個別のTomcatにデプロイすると、この問題が発生します。

The Origin server did not find a current representation for the target resource or is not willing to disclose that one exists.

これは私のXMLファイルからの構成スニペットです

<!-- View Resolver -->
    <beans:bean
        class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <beans:property name="prefix" value="/WEB-INF/pages/" />
        <beans:property name="suffix" value=".jsp" />
    </beans:bean>

このコントローラーにアクセスしようとしています

@RequestMapping(value = {"/welcome", "/"})
    public String defaultPage() {
            return "Web Service data successfuly consumed";


    }

なぜこれがTomcatにデプロイされないのか考えている人はいますか?

16
Blaze

私はこの問題に何度も苦労しました。

私が現在使用しているソリューションは、webapp(またはjspのようなビューを保持したフォルダー)がDeployment Assemblyの下にあることです。

これを行うには、Right click on the project > Build Path > Configure Build path > Deployment Assembly > Add(right hand side) > Folder > (add your jspフォルダー。デフォルトの場合、src/main/webapp

また、すべてを正しく行った後にこのエラーが発生する可能性がありますが、JSPではアンカータグを古い方法で配置します(同じ問題を持つ他の人を助ける場合にこのケースを追加しています)。

Jspには次の構文がありました。 <a href="/mappedpath">TakeMeToTheController</a>と質問で言及されたエラーを見続けました。ただし、タグを以下に示すものに変更することで問題は解決しました。

<a href=" <spring:url value="/mappedpath" /> ">TakeMeToTheController</a>
10
tadtab

スプリングブートアプリケーションを開発している場合は、次のコードに示すように「SpringBootServletInitializer」をメインファイルに追加します。 SpringBootServletInitializerがない場合、Tomcatはそれを通常のアプリケーションと見なし、Springブートアプリケーションとは見なしません。

@SpringBootApplication
public class DemoApplication extends *SpringBootServletInitializer*{

    @Override
    protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
         return application.sources(DemoApplication .class);
    }

    public static void main(String[] args) {
         SpringApplication.run(DemoApplication .class, args);
    }
}
6

Spring Bootアプリケーションで作業しているときに同じエラーを受け取りました。SpringBootとして実行する場合、localhost:8080/hello/Worldを実行するのは簡単ですが、アーティファクトをビルドしてTomcatにデプロイした後、使用するように切り替える必要があるためですlocalhost:8080/<artifactName>/hello/World

5
Ryan D

私も同じ問題に直面しており、web.xmlファイルとapplicationcontext.xmlファイルをWEB-INFフォルダーに入れることで解決しています。

お役に立てれば :)

1
krati

私は同じ問題に直面しており、@ tadtabの答えからヒントを得て、プロジェクトで同じ問題の解決策を見つけることができました。

手順:

1-> @ tadtabの回答に記載されている手順に従います。

2->プロジェクトを右クリック->プロパティ->展開アセンブリの検索をクリックします。

3->画面にフォルダが存在するかどうかを検索します。 (そうでない場合は追加します)。

4->画面には、ソースフォルダに対応する「デプロイパス」列があります。そのパスをコピーします。私の場合、/ viewsでした。

enter image description here 5->したがって、基本的に、setPrefix()メソッドでは、デプロイ時にパスが必要です。以前、setPrefix()メソッドで/ viewsを使用していたため、同じエラーが発生していました。しかし、その後、うまくいきました。

@Bean
    public ViewResolver viewResolver() {
        InternalResourceViewResolver resolver = new InternalResourceViewResolver();

        resolver.setPrefix("/WEB-INF/classes/");
        resolver.setSuffix(".jsp");

        resolver.setExposeContextBeansAsAttributes(true);
        return resolver;

    }

同じことがXML構成にも適用できるはずです。

0
Golu

この問題は、コントローラーページからプロジェクトを実行しようとしたときにも発生する可能性があります。 jspページからプロジェクトを実行します。 jspページに移動します。右クリック->実行->サーバーで実行私は同じ問題に直面しました。コントローラーページからプロジェクトを実行していました。 jspページからプロジェクトを実行します。

0
Smitha

ディスパッチャサーブレットは、リクエストをディスパッチする場所を指定しません。問題は、コントローラーBeanが作成/動作していないことです。

私も同じ問題に直面しました。次に、mvc-config.xmlに以下を追加しました

<mvc:annotation-driven/>
<context:component-scan base-package="com.nsv.jsmbaba.teamapp.controller"/>

<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
    <property name="prefix"><value>/WEB-INF/view/</value></property>
    <property name="suffix"><value>.jsp</value></property>
</bean>

お役に立てれば

0
Nagaraj

/opt/Apache-Tomcat-8.5.37/conf/Catalina/localhostにgeoexplorer.xmlファイルを作成すると、ほぼ同じ問題が解決されます。

<Context displayName="geoexplorer" docBase="/usr/share/opengeo/geoexplorer" path="/geoexplorer"/>
0
Rakeshwar Verma

Eclipseでサーブレットを実行しようとすると(右クリック+ [サーバーで実行])同じ問題が発生しました: "HTTPステータス:404 /説明:Originサーバーがターゲットリソースの現在の表現を見つけられなかったか、または意思がありません存在することを開示します。」 index.htmlを追加しても役に立たず、Tomcatのさまざまな設定も変更されませんでした。

最後に、予期しない場所で問題を見つけました。Eclipseでは、オプション「自動的にビルド」が設定されていませんでした。したがって、サーブレットはコンパイルされず、ファイル「myServlet.class」はサーバーにデプロイされませんでした(私の場合、パス.wtpwebapps/projectXX/WEB-INF/classes/XXpackage /に)。プロジェクトを手動でビルドし、サーバーを再起動すると、問題が解決しました。

私の環境:Eclipse Neon.3リリース4.6.3、Tomcat-バージョン8.5.14、OS Linux Mint 18.1。

0
Buffy Underrun

私は同じ問題に直面していました。

サーバー上で右クリック->実行してから、手動でサーバーを選択すると動作しました。

行う

Alt+Shift+X

次に、サーバーを手動で選択します。役立つかもしれません。

0
eVader

Eclipseで[プロジェクト]に移動し、[実行後、自動的にビルドをクリックします]

0
Aiyaz Sattar

Mavenプロジェクトの場合、Maven Updateで問題が解決します。[Project]-> [Maven]-> [Update Project]を右クリックして、プロジェクトを通常どおりに開始します。

0
Rudy

解決策1: Apache Tomcatのバージョンを変更します(最新のものが推奨されます)(手動プロセス)。

解決方法2:最新のEclipse IDEをインストールし、Apache Tomcatサーバーを構成します(Eclipseが構成部分を自動的に処理します)。

自動プロセスの成功した手順の後、手動プロセスがうまく機能しなければなりません。

0
Akshay Kumar