2014-02-16 4 views
1

Я хотел бы создать веб-приложение, используя Spring MVC и GWT. Основная цель - крайне минимизировать конфигурацию XML. Я знаю, как настроить приложение Spring MVC без конфигурации XML (используя @Configuration и AbstractAnnotationConfigDispatcherServletInitializer вместо web.xml), но я не могу понять, как добиться того же результата с GWT. Я пытался добавить Мануалы org.spring4gwt.server.SpringGwtRemoteServiceServlet к ServletContainer в void onStartup(ServletContext container) методе (перекрываться из AbstractAnnotationConfigDispatcherServletInitializer), но похоже, игнорирует приложение моего класс WebAppStarter расширение AbstractAnnotationConfigDispatcherServletInitializer (я просто положил Syser в конструкторе WebAppStarter - в чистом Spring MVC приложения печатает что-то на стандартной ERR, но с GWT - ничто не печатается по стандартным ошибкам).Spring 4 + GWT 2.6.0 + min Конфигурация XML

Вот мои конфигурации:

public class WebAppStarter extends AbstractAnnotationConfigDispatcherServletInitializer { 

    public WebAppStarter() { 
     System.err.println("======================> WEB_APP_STARTER"); 
    } 

    @Override 
    protected Class<?>[] getRootConfigClasses() { 
     return new Class<?>[0]; 
    } 

    @Override 
    protected Class<?>[] getServletConfigClasses() { 
     return new Class<?>[] { WebAppConfiguration.class }; 
    } 

    @Override 
    protected String[] getServletMappings() { 
     return new String[] { "/" }; 
    } 

    @Override 
    public void onStartup(ServletContext container) throws ServletException { 
     super.onStartup(container); 

     ServletRegistration.Dynamic testServlet = container.addServlet("gwtServlet", new SpringGwtRemoteServiceServlet()); 
     testServlet.addMapping("/TestModule/springGwtServices/*"); 
    } 

} 

@Configuration 
@EnableWebMvc 
@ComponentScan(BASE_SPRING_COMPONENT_SCAN_PACKAGE_NAME) 
public class WebAppConfiguration { 

} 

у меня нет applicationContext.xml.

web.xml:

<?xml version="1.0" encoding="UTF-8"?> 
<web-app 
    xmlns="http://java.sun.com/xml/ns/javaee" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" 
    version="3.0"> 

</web-app> 

Любые идеи? Можно ли это достичь?

Благодаря

+0

Это может не помочь. Но считаете ли вы, что вы не используете свой интерфейс с услугами/контроллерами? Скорее, проект GWT взаимодействует через вызовы REST, либо w/RequestBuilder, либо, возможно, w/RestyGwt? –

+0

честно - я не знаю, как работает этот подход (через REST). Для меня важно написать UI в Java (не в JavaScript). Поддерживает ли это решение это? –

ответ

0

Это выглядит так, как будто вы уже знакомы авторинга контроллеры Spring MVC (например. https://spring.io/guides/gs/rest-service/ или http://xpadro.blogspot.com/2014/01/migrating-spring-mvc-restful-web.html?m=1).

Затем в отдельном проекте пользовательского интерфейса вы можете взаимодействовать с этими службами (например, http://wpamm.blogspot.com/2013/07/gwt-and-rest-part-2-client-restygwt.html?m=1).

0

После некоторого поиска он выглядит (на данный момент) встроен Jetty Конфигурация в GWT SDK не поддерживает Servlet 3.0 Конфигурация web.xml-less. Я нашел эти проблемы: https://code.google.com/p/google-web-toolkit/issues/detail?id=8472 и https://code.google.com/p/google-web-toolkit/issues/detail?id=5823 . Итак, на данный момент решение заключается в использовании внешнего сервера (например, tomcat - с использованием режима -noserver), но вы потеряете некоторые преимущества встроенного Jetty (в качестве режима разработки).

Некоторые решение для настройки Tomcat в режиме разработки под Eclipse (подробнее here), но я не использовал, так что я не знаю, если это работает.

Смежные вопросы