Как получить доступ к bean-компонентам red5-web.xml из весеннего сервиса mvc - PullRequest
0 голосов
/ 11 декабря 2011

У меня есть одно приложение red5, использующее flex. Теперь я просто хочу разработать небольшое веб-приложение поверх него с помощью Spring mvc (DispatcherServlet). Но проблема в том, что я не смог получить доступ к bean-компонентам, определенным в red5-web.xml, из mvc, а также я не могу получить доступ к bean-компонентам red-web из весеннего mvc. Ошибка NoSuchBeanDefinitionException.

Между ними нет моста. Возможно ли получить red5.context весной mvc. так что я могу получить доступ ко всему. Вот код snip

red5-web.xml

<beans>
    <bean id="placeholderConfig" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
        <property name="location" value="/WEB-INF/red5-web.properties" />
    </bean>

    <bean id="web.context" class="org.red5.server.Context" 
        autowire="byType" />

    <bean id="web.scope" class="org.red5.server.WebScope"
         init-method="register">
        <property name="server" ref="red5.server" />
        <property name="parent" ref="global.scope" />
        <property name="context" ref="web.context" />
        <property name="handler" ref="web.handler" />
        <property name="contextPath" value="${webapp.contextPath}" />
        <property name="virtualHosts" value="${webapp.virtualHosts}" />
    </bean>

    <bean id="live.recorder" class="com.live.application.RecordManager">
        <constructor-arg ref="web.handler" />
    </bean>

    <bean id="web.handler" name="application"
        class="com.live.application.LiveContent"
        singleton="true" autowire="byName" />
</beans>

WebApplication-servlet.xml

<beans>

  <context:annotation-config/>
  <context:component-scan base-package="com.live.web"/>
  <context:component-scan base-package="com.live.service"/>
  <mvc:annotation-driven/>

  <bean id="localeResolver" class="org.springframework.web.servlet.i18n.AcceptHeaderLocaleResolver"/> 

  <bean class="org.springframework.web.servlet.view.UrlBasedViewResolver">
    <property name="viewClass" value="org.springframework.web.servlet.view.tiles2.TilesView"/>
    <property name="order" value="0"/>
  </bean>
  <bean class="org.springframework.web.servlet.view.BeanNameViewResolver">
    <property name="order" value="1"/>
  </bean>
  <bean name="users.search_results" class="org.springframework.web.servlet.view.json.MappingJacksonJsonView">
    <property name="renderedAttributes" value="users"/>
  </bean>

  <bean name="system.status" class="org.springframework.web.servlet.view.json.MappingJacksonJsonView">
    <property name="renderedAttributes">
      <set>
        <value>status</value>
        <value>notifications</value>
      </set>        
    </property>
  </bean>
  <bean name="system.update" class="org.springframework.web.servlet.view.json.MappingJacksonJsonView">
    <property name="renderedAttributes">
      <set>
        <value>error</value>
        <value>status</value>
        <value>notification</value>
      </set>        
    </property>
  </bean>

</beans>

Я использовал аннотацию пружины для контроллера и сервиса.

Ответы [ 2 ]

1 голос
/ 26 апреля 2012

Наконец-то я исправил эту проблему.Проблема заключается в

Обычно Spring DispatcherServlet (MVC) создает один веб-контекст и устанавливает родителей как ApplicationContext, загружаемый Spring mvc ContextLoaderListener.Red5 имеет собственный слушатель загрузчика контекста и загружает собственный контекст.Между этими двумя контекстами нет никакой связи.

Чтобы переопределить это, мы должны установить red5 ApplicationContext в качестве родительского контекста DispatcherServlet.Для этого вам нужно переопределить функции initWebApplicationContext () в Dispatcherservlet.

Я написал запись в блоге, на которую ссылается это http://www.arulraj.net/2012/04/red5-with-spring-mvc.html GIT репо https://github.com/arulrajnet/red5Demo

0 голосов
/ 13 декабря 2011

Существует несколько способов доступа к bean-компонентам, определенным в нескольких XML-файлах

  1. Вы можете определить некоторые XML-файлы как «глобально доступные»

    http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">

    <context-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>
            WEB-INF/red5-web.xml
        </param-value>
    </context-param>
    
  2. Вы можете указать дополнительные файлы XML вашего сервлета

    <servlet>
        <display-name>CXF Servlet</display-name>
        <servlet-name>CXFServlet</servlet-name>
        <servlet-class>org.apache.cxf.transport.servlet.CXFServlet</servlet-class>
        <init-param>
            <param-name>contextConfigLocation</param-name>
            <param-value>
                WEB-INF/red5-web.xml
            </param-value>
        </init-param>
        <load-on-startup>1</load-on-startup>
    </servlet>
    
  3. Вы можете импортировать файлы XML друг в друга с помощью

...