spring 3 и dwr 3 не работают с одним файлом конфигурации

#configuration #spring-mvc #dwr

#конфигурация #spring-mvc #dwr

Вопрос:

Я использую 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 в оба файла, потому что, если я удалю ее из 2-го файла, Spring не будет работать.
Я слишком много пытался объединить обе технологии в одном файле конфигурации. Но работает только тот, который я пишу сверху, а другой не работает.
Есть ли какой-либо способ объединить их оба в один файл, или я делаю какую-то глупую ошибку? пожалуйста, помогите мне.

Спасибо
Shams

Комментарии:

1. Ни у кого нет идеи исправить это??

Ответ №1:

Я смог создать правильную конфигурацию (Spring 3.x DWR 3 Tiles) только с одним объявленным сервлетом диспетчера и смог внедрить службы Spring в мой контроллер DWR с использованием аннотаций:

Этот очень хороший блог содержит много полезных ресурсов о том, как настроить Spring со многими другими technos:

Spring DWR
http://krams915.blogspot.com/2011/01/spring-mvc-3-and-dwr-3-integration.html

Другие учебные пособия:http://krams915.blogspot.com/p/tutorials.html

Комментарии:

1. привет, я прошел через это руководство. но я не могу определить, где я делаю неправильную конфигурацию. Не могли бы вы проверить оба моих XML-файла и сообщить мне, где я ошибаюсь? или опубликуйте свой конфиг, чтобы я мог сравнить с моим конфиг. Спасибо

2. Сложно сказать с частичной конфигурацией. Мне пришлось объявить следующий компонент в конфигурации контекста (я объявил его в dwr-config.xml ): <bean class="org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter" />