Сервер происхождения не нашел текущее представление целевого ресурса или не желает раскрывать, что он существует. при развертывании в tomcat

Я создал приложение, использующее Spring с Eclipse IDE. Когда я запускаю проект из Eclipse IDE, все в порядке, но когда я упаковываю проект maven в качестве военного файла и развертывается для разделения 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?

Ответ 1

Я боролся с этой проблемой много раз.

Решение, которое я использую в настоящее время, заключается в том, что веб-приложение (или папка, в которой вы сохранили представления, например, jsp) находится в процессе развертывания.

Для этого Right click on the project > Build Path > Configure Build path > Deployment Assembly > Add(right hand side) > Folder > (add your jsp папку 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>

Ответ 2

Я получил ту же ошибку при работе в загрузочном приложении Spring, потому что при запуске как Spring Boot легко выполнять localhost:8080/hello/World, но когда вы создали артефакт и развернули его в Tomcat, тогда вы необходимо переключиться на использование localhost:8080/<artifactName>/hello/World

Ответ 3

Если вы разрабатываете весеннее загрузочное приложение, добавьте 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);
    }
}

Ответ 4

Я также столкнулся с той же проблемой, и я решил ее, поместив файл web.xml и файл applicationcontext.xml в папку WEB-INF.

Надеюсь это поможет :)

Ответ 5

Попытка запуска сервлета в Eclipse (щелкните правой кнопкой мыши + "Запустить на сервере" ). Я столкнулся с той же проблемой: "HTTP-статус: 404/Описание: сервер происхождения не нашел текущее представление целевого ресурса или не желает раскрывать, что он существует". Добавление index.html не помогло, не изменяя различные настройки tomcat.

Наконец, я обнаружил проблему в неожиданном месте: в Eclipse параметр "Создать автоматически" не был установлен. Таким образом, сервлет не был скомпилирован, и на сервер не был добавлен файл "myServlet.class" (в моем случае в пути .wtpwebapps/projectXX/WEB-INF/classes/XXpackage/). Построение проекта вручную и перезапуск сервера решили проблему.

Моя среда: Eclipse Neon.3 Release 4.6.3, Tomcat-Version 8.5.14., ОС Linux Mint 18.1.

Ответ 6

Если это проект maven, Maven Update решит проблему - щелкните правой кнопкой мыши Project → Maven → Update Project и начните свой проект в обычном режиме.

Ответ 7

решение one: Измените версию apache tomcat (последняя из них предпочтительна) (ручной процесс).

решение два: Установите последнюю среду разработки eclipse и настройте сервер apache tomcat (внутренне автоматический процесс i, e eclipse обрабатывает часть конфигурации).

После успешной процедуры автоматического процесса ручной процесс должен работать хорошо.

Ответ 8

В Eclipse перейдите в Project → щелкните по сборке автоматически после этого u попробуйте выполнить

Ответ 9

Я столкнулся с той же проблемой.

Когда я rightclick-> запускаю на сервере, то выбираю свой сервер вручную, он работает.

Делать

Alt+Shift+X

затем вручную выберите свой сервер. Это может помочь.

Ответ 10

Почти такую же проблему можно решить, создав файл geoexplorer.xml в /opt/apache-tomcat-8.5.37/conf/Catalina/localhost содержимое файла geoexplorer.xml

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

Ответ 11

Я столкнулся с той же проблемой, и с некоторой подсказкой из ответа @tadtab я смог найти решение для той же проблемы в моем проекте.

шаги:

1-> Выполните шаги, упомянутые в ответах @tadtab.

2-> Щелкните правой кнопкой мыши на project-> Нажмите Properties-> Найти сборку развертывания.

3-> Поиск, существует ли ваша папка на экране. (Если нет, добавьте его).

4-> На экране вы найдете столбец "Путь к развертыванию", соответствующий вашей исходной папке. Скопируйте этот путь. В моем случае это было/просмотры.

enter image description here 5-> Таким образом, в принципе, в методе setPrefix() у нас должен быть путь во время развертывания. Ранее я просто использовал /views в методе setPrefix(), поэтому получал ту же ошибку. Но после этого все заработало.

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

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

        resolver.setExposeContextBeansAsAttributes(true);
        return resolver;

    }

То же самое должно быть применимо и к конфигурации XML.

Ответ 12

Эта проблема может возникнуть даже при попытке запустить проект со страницы контроллера. Запустите свой проект со страницы JSP. Перейдите на свою страницу JSP; щелкните правой кнопкой мыши → Run As-> Run on Server. Я столкнулся с той же проблемой. Я запускал свой проект со страницы контроллера. Запустите свой проект со страницы JSP.

Ответ 13

Ваш диспетчерский сервлет не указывает, куда отправить запрос. Проблема в том, что ваш контроллерный компонент не создан/не работает.

Даже я столкнулся с той же проблемой. Затем добавил следующее в 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>

Надеюсь это поможет