2011-12-11 85 views
0

我有一個使用flex的red5應用程序。現在我只想使用spring mvc(DispatcherServlet)在它上面開發一個小型Web應用程序。但問題是我無法從mvc訪問red5-web.xml中定義的bean,也無法從spring mvc訪問紅網絡bean。錯誤是NoSuchBeanDefinitionException。如何從spring mvc服務訪問red5-web.xml beans

兩者之間沒有橋樑。是否有可能在spring mvc中獲得red5.context。所以我可以訪問一切。下面是代碼剪斷

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> 

web應用-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> 

我用彈簧註釋控制器和服務。

回答

1

最後我解決了這個問題。問題是通過spring DispatcherServlet(MVC)創建一個Web上下文並將父級設置爲由Spring mvc ContextLoaderListener加載的ApplicationContext。 Red5擁有自己的上下文加載器監聽器,並且加載自己的上下文。這兩種情況之間沒有關係。

要重寫此操作,我們必須將red5 ApplicationContext設置爲DispatcherServlet的父上下文。爲此你必須重寫Dispatcherservlet中的initWebApplicationContext()函數。

我寫了一個博客條目請參閱本http://www.arulraj.net/2012/04/red5-with-spring-mvc.html GIT回購是https://github.com/arulrajnet/red5Demo

0

有多種方式訪問​​豆在多個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. 你可以指定你的servlet的附加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文件到對方= 「類路徑:WEB-INF/RED5-web.xml文件」/>

+0

喜彼得,感謝您的重播。我嘗試了這些方法。但它給出了一個錯誤「無法解析引用bean」。 Red5服務器的工作方式不同。例如,'ref =「red5.server」'bean是從服務器conf目錄red5-common.xml引用的 –