Я использую Spring 3.0 и DWR 3 в своем веб-приложении. У меня есть проблемы с конфигурацией. Когда я использую один и тот же файл конфигурации для обеих технологий, то тот, который я пишу сверху, будет работать, а следующий не будет работать. И когда я сделал два разных DispatcherServlet, они работают нормально. Вот моя конфигурация web.xml:
<servlet> <servlet-name>abc</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>abc</servlet-name> <url-pattern>*.form</url-pattern> </servlet-mapping> <servlet> <servlet-name>abc-dwr</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>abc-dwr</servlet-name> <url-pattern>/dwr/*</url-pattern> </servlet-mapping>
Вот мой файл abc-servlet.xml (который содержит только конфигурацию Spring):
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:aop="http://www.springframework.org/schema/aop" xmlns:dwr="http://www.directwebremoting.org/schema/spring-dwr" xmlns:context="http://www.springframework.org/schema/context" xmlns:jee="http://www.springframework.org/schema/jee" xmlns:lang="http://www.springframework.org/schema/lang" xmlns:p="http://www.springframework.org/schema/p" xmlns:tx="http://www.springframework.org/schema/tx" xmlns:util="http://www.springframework.org/schema/util" xmlns:mvc="http://www.springframework.org/schema/mvc" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd http://www.springframework.org/schema/jee http://www.springframework.org/schema/jee/spring-jee.xsd http://www.springframework.org/schema/lang http://www.springframework.org/schema/lang/spring-lang.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx.xsd http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd http://www.directwebremoting.org/schema/spring-dwr http://www.directwebremoting.org/schema/spring-dwr-3.0.xsd"> <mvc:annotation-driven /> <context:annotation-config /> <tx:annotation-driven /> <context:component-scan base-package="a.b.c"> <context:include-filter type="regex" expression="(service|controller)\*" /> </context:component-scan> <bean id="viewResolver" class="org.springframework.web.servlet.view.UrlBasedViewResolver"> <property name="viewClass"> <value>org.springframework.web.servlet.view.tiles2.TilesView</value> </property> </bean> <bean id="tilesConfigurer" class="org.springframework.web.servlet.view.tiles2.TilesConfigurer"> <property name="definitions"> <list> <value>WEB-INF/tiles-defs.xml</value> </list> </property> </bean>
А вот еще один файл abc-dwr-servlet.xml (содержащий конфигурацию Spring и DWR):
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:aop="http://www.springframework.org/schema/aop" xmlns:dwr="http://www.directwebremoting.org/schema/spring-dwr" xmlns:context="http://www.springframework.org/schema/context" xmlns:jee="http://www.springframework.org/schema/jee" xmlns:lang="http://www.springframework.org/schema/lang" xmlns:p="http://www.springframework.org/schema/p" xmlns:tx="http://www.springframework.org/schema/tx" xmlns:util="http://www.springframework.org/schema/util" xmlns:mvc="http://www.springframework.org/schema/mvc" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd http://www.springframework.org/schema/jee http://www.springframework.org/schema/jee/spring-jee.xsd http://www.springframework.org/schema/lang http://www.springframework.org/schema/lang/spring-lang.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx.xsd http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd http://www.directwebremoting.org/schema/spring-dwr http://www.directwebremoting.org/schema/spring-dwr-3.0.xsd"> <!-- DWR SETTING STARTS HERE --> <dwr:configuration > <dwr:convert type="bean" class="a.b.c.formbean.XYZ" /> </dwr:configuration> <dwr:annotation-config /> <dwr:url-mapping /> <dwr:controller id="dwrController" debug="true" /> <dwr:annotation-scan base-package="a.b.c.dwr" /> <!-- DWR SETTING ENDS HERE --> <mvc:annotation-driven /> <context:annotation-config /> <tx:annotation-driven /> <context:component-scan base-package="a.b.c"> <context:include-filter type="regex" expression="(service|controller)\*" /> </context:component-scan>
Здесь два файла, abc-servlet.xml содержат конфигурацию Spring и abc-dwr-servlet.xml содержат конфигурацию DWR и Spring. Я написал конфигурацию Spring в обоих файлах, потому что если я удалю ее из второго файла, Spring не будет работать. Я слишком много пытался объединить обе технологии в одном файле конфигурации. Но работает только один, который я пишу сверху, а другой не работает. Есть ли способ объединить их в один файл, или я делаю какую-то глупую ошибку? пожалуйста, помогите мне.
abc-servlet.xml
abc-dwr-servlet.xml
Спасибо Shams
Мне удалось выполнить правильную настройку (Spring 3.x + DWR 3 + Tiles) только с одним заявленным сервлетом-диспетчером, и я смог внедрить службы Spring в мой контроллер DWR с помощью аннотаций:
Этот очень хороший блог содержит много полезных ресурсов о том, как настроить Spring со многими другими технологиями:
Пружина + DWR http://krams915.blogspot.com/2011/01/spring-mvc-3-and-dwr-3-integration.html
Другие учебники: http://krams915.blogspot.com/p/tutorials.html