Сервер происхождения не нашел текущее представление целевого ресурса или не желает раскрывать, что он существует. при развертывании в 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-> На экране вы найдете столбец "Путь к развертыванию", соответствующий вашей исходной папке. Скопируйте этот путь. В моем случае это было/просмотры.
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>
Надеюсь это поможет