Flex+Spring配置


flex拓撲圖製作只是一個簡單的例子,可以運行,只是簡單的呈現部分,如果要實現具體的拓撲圖的功能,需要連接數據庫,這裏只簡單說說flex與spring的結合,有了spring,再與hibernate以及struts就簡單多了。 
     1、首先是web.xml需要添加flex的配置,增加如下的內容: 
     
Java代碼 複製代碼
  1. <listener>  
  2.         <listener-class>flex.messaging.HttpFlexSession</listener-class>  
  3.     </listener>   
  4.       
  5.     <!-- MessageBroker Servlet -->  
  6.     <servlet>  
  7.         <servlet-name>MessageBrokerServlet</servlet-name>  
  8.         <display-name>MessageBrokerServlet</display-name>  
  9.         <servlet-class>flex.messaging.MessageBrokerServlet</servlet-class>  
  10.         <init-param>  
  11.             <param-name>services.configuration.file</param-name>  
  12.             <param-value>/WEB-INF/flex/services-config.xml</param-value>  
  13.        </init-param>  
  14.         <init-param>  
  15.             <param-name>flex.write.path</param-name>  
  16.             <param-value>/WEB-INF/flex</param-value>  
  17.         </init-param>  
  18.         <load-on-startup>1</load-on-startup>  
  19.     </servlet>  
  20.   
  21.     <servlet>  
  22.         <servlet-name>FlexMxmlServlet</servlet-name>  
  23.         <display-name>MXML Processor</display-name>  
  24.         <description>Servlet wrapper for the Mxml Compiler</description>  
  25.         <servlet-class>flex.bootstrap.BootstrapServlet</servlet-class>  
  26.         <init-param>  
  27.             <param-name>servlet.class</param-name>  
  28.             <param-value>flex.webtier.server.j2ee.MxmlServlet</param-value>  
  29.         </init-param>  
  30.         <init-param>  
  31.             <param-name>webtier.configuration.file</param-name>  
  32.             <param-value>/WEB-INF/flex/flex-webtier-config.xml</param-value>  
  33.         </init-param>  
  34.        <load-on-startup>1</load-on-startup>  
  35.     </servlet>  
  36.   
  37.     <servlet>  
  38.         <servlet-name>FlexSwfServlet</servlet-name>  
  39.         <display-name>SWF Retriever</display-name>  
  40.         <servlet-class>flex.bootstrap.BootstrapServlet</servlet-class>  
  41.         <init-param>  
  42.             <param-name>servlet.class</param-name>  
  43.             <param-value>flex.webtier.server.j2ee.SwfServlet</param-value>  
  44.         </init-param>  
  45.         <!-- SwfServlet must be initialized after MxmlServlet -->  
  46.         <load-on-startup>2</load-on-startup>  
  47.     </servlet>  
  48.   
  49.     <servlet>  
  50.         <servlet-name>FlexForbiddenServlet</servlet-name>  
  51.         <display-name>Prevents access to *.as/*.swc files</display-name>  
  52.         <servlet-class>flex.bootstrap.BootstrapServlet</servlet-class>  
  53.         <init-param>  
  54.             <param-name>servlet.class</param-name>  
  55.             <param-value>flex.webtier.server.j2ee.ForbiddenServlet</param-value>  
  56.         </init-param>  
  57.     </servlet>  
  58.   
  59.     <servlet>  
  60.         <servlet-name>FlexInternalServlet</servlet-name>  
  61.         <servlet-class>flex.bootstrap.BootstrapServlet</servlet-class>  
  62.         <init-param>  
  63.             <param-name>servlet.class</param-name>  
  64.             <param-value>flex.webtier.server.j2ee.filemanager.FileManagerServlet</param-value>  
  65.         </init-param>  
  66.         <load-on-startup>10</load-on-startup>  
  67.     </servlet>  
  68.   
  69.     <servlet-mapping>  
  70.         <servlet-name>MessageBrokerServlet</servlet-name>  
  71.         <url-pattern>/messagebroker/*</url-pattern>  
  72.     </servlet-mapping>  
  73.   
  74.     <servlet-mapping>  
  75.         <servlet-name>FlexMxmlServlet</servlet-name>  
  76.         <url-pattern>*.mxml</url-pattern>  
  77.     </servlet-mapping>  
  78.   
  79.     <servlet-mapping>  
  80.         <servlet-name>FlexSwfServlet</servlet-name>  
  81.         <url-pattern>*.swf</url-pattern>  
  82.     </servlet-mapping>  
  83.   
  84.     <servlet-mapping>  
  85.         <servlet-name>FlexForbiddenServlet</servlet-name>  
  86.         <url-pattern>*.as</url-pattern>  
  87.     </servlet-mapping>  
  88.   
  89.     <servlet-mapping>  
  90.         <servlet-name>FlexForbiddenServlet</servlet-name>  
  91.         <url-pattern>*.swc</url-pattern>  
  92.     </servlet-mapping>  
  93.   
  94.     <servlet-mapping>  
  95.         <servlet-name>FlexInternalServlet</servlet-name>  
  96.         <url-pattern>/flex-internal/*</url-pattern>  
  97.     </servlet-mapping>  
  98.       

    2、在spring的配置文件中增加: 
   
Java代碼 複製代碼
  1. <bean id="topoMapViewService" parent="baseTransaction">  
  2.             <property name="target">  
  3.                     <bean  
  4.                             class="com.jeffrey.nms.service.impl.TopoServiceImpl"><!---這裏的方法可以通過flex進行調用--->  
  5.                             <property name="topoMapDao" ref="topoMapDao" />  
  6.                             <property name="linkInfoDao" ref="linkInfoDao" />  
  7.                     </bean>  
  8.             </property>  
  9.     </bean>  

    3、然後需要配置flex的配置文件,flex文件下有個services-config.xml, 
增加: 
   
Java代碼 複製代碼
  1. <factories>  
  2.   <factory id="spring" class="com.jeffrey.nms.web.topo.SpringFactory"/>  
  3. </factories>  

    其中類如下(通過網上查的) 
    
Java代碼 複製代碼
  1.     package com.jeffrey.nms.web.topo;  
  2.   
  3. import org.springframework.context.ApplicationContext;  
  4. import org.springframework.web.context.support.WebApplicationContextUtils;  
  5. import org.springframework.beans.BeansException;  
  6. import org.springframework.beans.factory.NoSuchBeanDefinitionException;  
  7.   
  8. import flex.messaging.FactoryInstance;  
  9. import flex.messaging.FlexFactory;  
  10. import flex.messaging.config.ConfigMap;  
  11. import flex.messaging.services.ServiceException;  
  12.   
  13. public class SpringFactory implements FlexFactory  
  14. {  
  15.     private static final String SOURCE = "source";  
  16.   
  17.       
  18.     public void initialize(String id, ConfigMap configMap) {}  
  19.   
  20.      
  21.     public FactoryInstance createFactoryInstance(String id, ConfigMap properties)  
  22.     {  
  23.         SpringFactoryInstance instance = new SpringFactoryInstance(this, id, properties);  
  24.         instance.setSource(properties.getPropertyAsString(SOURCE, instance.getId()));  
  25.         return instance;  
  26.     } // end method createFactoryInstance()  
  27.   
  28.     
  29.     public Object lookup(FactoryInstance inst)  
  30.     {  
  31.         SpringFactoryInstance factoryInstance = (SpringFactoryInstance) inst;  
  32.         return factoryInstance.lookup();  
  33.     }   
  34.   
  35.   
  36.     static class SpringFactoryInstance extends FactoryInstance  
  37.     {  
  38.         SpringFactoryInstance(SpringFactory factory, String id, ConfigMap properties)  
  39.         {  
  40.             super(factory, id, properties);  
  41.         }  
  42.   
  43.   
  44.         public String toString()  
  45.         {  
  46.             return "SpringFactory instance for id=" + getId() + " source=" + getSource() + " scope=" + getScope();  
  47.         }  
  48.   
  49.         public Object lookup()   
  50.         {  
  51.             ApplicationContext appContext = WebApplicationContextUtils.getWebApplicationContext(flex.messaging.FlexContext.getServletConfig().getServletContext());  
  52.             String beanName = getSource();  
  53.   
  54.             try  
  55.             {  
  56.                 return appContext.getBean(beanName);  
  57.             }  
  58.             catch (NoSuchBeanDefinitionException nexc)  
  59.             {  
  60.                 ServiceException e = new ServiceException();  
  61.                 String msg = "Spring service named '" + beanName + "' does not exist.";  
  62.                 e.setMessage(msg);  
  63.                 e.setRootCause(nexc);  
  64.                 e.setDetails(msg);  
  65.                 e.setCode("Server.Processing");  
  66.                 throw e;  
  67.             }  
  68.             catch (BeansException bexc)  
  69.             {  
  70.                 ServiceException e = new ServiceException();  
  71.                 String msg = "Unable to create Spring service named '" + beanName + "' ";  
  72.                 e.setMessage(msg);  
  73.                 e.setRootCause(bexc);  
  74.                 e.setDetails(msg);  
  75.                 e.setCode("Server.Processing");  
  76.                 throw e;  
  77.             }   
  78.         }  
  79.           
  80.     }   
  81.   
  82. }   
  83.       

    4、本人做flex時是使用的直接調用java的運程類,以下都是按照這個配置的,還有一個webservice的方法,各位可以收集收集。 
     在flex文件夾下有個remoting-config.xml文件,需要增加: 
    
Java代碼 複製代碼
  1.  <destination id="topoMap">  
  2. <properties>  
  3.     <factory>spring</factory>  
  4.     <source>topoMapViewService</source>  
  5. </properties>  
  6. lt;/destination>  

     這樣topoMap可以在flex進行定義了,如下: 
   <mx:RemoteObject id="topo" destination="topoMap"> 
   這樣flex+spring配置即完成。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章