Ответ 1
Я использую защиту GWT + Spring. Я нахожу в вашей конфигурации, есть некоторые недоразумения. На самом деле существует очень простой способ, позволяющий безопасности spring работать с вашим gwt независимо от gwt-инкубатора-безопасности. Вам просто нужно объявить свой контекст приложения в вашем web.xml.
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/applicationContext-security.xml</param-value>
</context-param>
<filter>
<filter-name>springSecurityFilterChain</filter-name>
<filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class>
</filter>
<filter-mapping>
<filter-name>springSecurityFilterChain</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
Вы не объявляете здесь свой диспетчер MVC! Затем все работает из-за механизма spring Security framework.
Но этот способ конфигурации не объявляет DispatcherServlet, это просто, но в случае, если вам нужна некоторая функция безопасности, которая требует DispatcherServlet, это "piege". Так, как я уже встречался.
Тогда, если вы настаиваете на использовании gwt-инкубатора-безопасности. Я прочитал очень хорошее решение на французском языке, но он не оспаривает. http://hugo.developpez.com/tutoriels/java/gwt/utilisation-gwt-avec-spring-et-hibernate/
- Интегрируйте spring в приложение с GWT-SL: На самом деле, для интеграции spring и спящего режима проблема заключается в том, как правильно настроить сервлет. Следует помнить, что Spring имеет свой собственный сервлет "DispatcherServlet" , так как gwt с сервлем gwt ". Как правило, в учебнике для RPC GWT, gwt-сервлет объявлен в web-xml, например
<servlet> <servlet-name>appService</servlet-name> <servlet-class>com.google.gwt.app.example.server.AppServiceImpl</servlet-class> </servlet> <servlet-mapping> <servlet-name>appService</servlet-name> <url-pattern>/app/appService</url-pattern> </servlet-mapping>
Если вам очень нравится Spring, и вы хотите использовать DispatcherServlet для отправки запроса, тогда GWT-обработчик может помочь вам избавиться от проблемы. Во-первых, вы загружаете контекст приложения в web.xml, как показано ниже:
<context-param>
<param-name> contextConfigLocation </param-name>
<param-value> classpath:applicationContext_GWT.xml </param-value>
</context-param>
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener
</listener-class>
</listener>
Затем вы можете объявить свою службу rpc в контексте spring: applicationContext_GWT.xml
<bean id=" appService "
class=" com.google.gwt.app.example.server.AppServiceImpl">
</bean>
Но вы не должны забыть добавить объявление GWTHandler в файл контекста приложения applicationContext_GWT.xml
Последнее, что нужно объявить сервлет spring: DispatcherServlet в web.xml. Обратите внимание на то, что это правильный сервлет spring, а не GWT-SL.
web.xml
<servlet>
<servlet-name>handler</servlet-name>
<servlet-class> org.springframework.web.servlet.DispatcherServlet </servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>handler</servlet-name>
<url-pattern>*.rpc</url-pattern>
</servlet-mapping>
Имя сервлета важно, потому что DispatcherServlet будет искать контекстный файл spring, названный "* -servlet.xml". Поскольку имя сервлета является обработчиком, он будет искать контекст spring "handler-servlet.xml". Итак, здесь мы решим проблему следующим образом: мы помещаем контекст приложения, который является независимым с DispatcherServlet в "applicationContext_GWT.xml", а затем тот, который зависит от DispatcherServlet в "-servlet.xml", как сервлет name - "обработчик", тогда мы должны иметь "handler-servlet.xml", а затем поместить следующую конфигурацию GWT_SL из applicationContext_GWT.xml в handler-servlet.xml Обработчик-servlet.xml
<bean id="urlProjectMapping" class="org.gwtwidgets.server.spring.GWTHandler">
<!-- Supply here mappings between URLs and services. Services must implement the RemoteService interface but are not otherwise restricted.-->
<property name="mappings">
<map>
<!-- Other mappings could follow -->
<entry key="/app/appService.rpc" value-ref="appService" />
</map>
</property>
</bean>
Затем добавьте следующую конфигурацию в web.xml dans la declaration de servlet.
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value> /WEB-INF/handler-servlet.xml </param-value>
</init-param>
Шаблон фильтра касается только вызова RPC с суффиксом .rpc(Я не использовал GWT-SL, поэтому метод выше для интеграции не был проверен.)
После того, как у вас есть все указанные выше настройки, вы создадите свою фильтрацию в текстовом файле приложения.
Надеюсь, это поможет вам!