Как сопоставить действия Struts 2, выполняемые с помощью Spring Boot и встроенного Tomcat?JAVA

Программисты JAVA общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 Как сопоставить действия Struts 2, выполняемые с помощью Spring Boot и встроенного Tomcat?

Сообщение Anonymous »

Я переношу приложение Struts 2 на Spring Boot. Я определил StrutsPrepareAndExecuteFilter внутри класса загрузки приложения.

Код: Выделить всё

@SpringBootApplication
public class ClearApplication extends SpringBootServletInitializer {

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

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

@Bean
public FilterRegistrationBean filterRegistrationBean() {
Collection urlPatterns = new ArrayList();
urlPatterns.add("/*");
FilterRegistrationBean registrationBean = new FilterRegistrationBean();
StrutsPrepareAndExecuteFilter struts = new StrutsPrepareAndExecuteFilter();
registrationBean.setFilter(struts);
registrationBean.setName("strutsFilter");
registrationBean.setOrder(1);
registrationBean.setUrlPatterns(urlPatterns);
return registrationBean;
}
}
Конфигурация файла pom.xml приведена ниже

Код: Выделить всё

com.study.pack
clear
0.0.1-SNAPSHOT
war
clear
Demo project for Spring Boot
Мой класс действий содержит одно простое действие Struts и другое действие JSON

Код: Выделить всё

@Action(value = "welcome", results = { @Result(name = "success", location = "result.jsp") })
public String execute() {
return "success";
}

@Action(value = "users", results = { @Result(name = "success", type = "json", params = { "root", "userList" }) })
public String users() {
userList = new ArrayList();
userList.add(new User("Carl", "15", "M"));
userList.add(new User("Rick", "30", "M"));
userList.add(new User("Michonne", "26", "F"));
return "success";
}
Когда я развертываю приложение на своем локальном сервере Tomcat, я могу получить доступ к URL-адресам действий:

Код: Выделить всё

http://localhost:8080/clear/welcome

Код: Выделить всё

http://localhost:8080/clear/users
Но когда я запускаю приложение в STS (или с помощью команды Maven), я получаю стандартную ошибку Struts при доступе к тем же URL-адресам, что и выше:

Нет действия, сопоставленного для пространства имен [/clear] и имени действия [users], связанного с контекстным путем [].

В файле application.properties есть следующие свойства:

Код: Выделить всё

server.contextPath=/clear
server.port=8080
Не хватает ли мне какой-либо другой конфигурации, чтобы все заработало?
Обновление:
Как предложил @Roman-C, я проверил журналы запуска сервера Tomcat, и контекстный путь идентичен.
Внешний сервер Tomcat:

Код: Выделить всё

[ost-startStop-1] o.a.c.c.C.[.[localhost].[/clear]         : Initializing Spring embedded WebApplicationContext
Встроенный сервер Tomcat:

Код: Выделить всё

[ost-startStop-1] o.a.c.c.C.[Tomcat].[localhost].[/clear]  : Initializing Spring embedded WebApplicationContext
Файл application.properties находится в папке

Код: Выделить всё

src/main/resources
По-прежнему не повезло. Полагаю, что аннотации Struts каким-то образом игнорируются.
Я передал исходный код на GitHub.

Подробнее здесь: https://stackoverflow.com/questions/422 ... ded-tomcat
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «JAVA»