果子的程序人生

          Spring blazeDS Integration destination not exists異常解決

          環境:
          • Spring blazeDS Integration 1.0.0 release
          • blazeDS 3.2.0.3978
          • jdk1.6.0_06
          • flex sdk 3.2.0
          • flex builder 3
          在web.xml中配置DispatcherServlet
          <?xml version="1.0" encoding="UTF-8"?>
          <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
              xmlns
          ="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
              xsi:schemaLocation
          ="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
              id
          ="WebApp_ID" version="2.5">
              
          <display-name>flex_server</display-name>
              
          <context-param>
                  
          <param-name>contextConfigLocation</param-name>
                  
          <param-value>/WEB-INF/context-*.xml</param-value>
              
          </context-param>
              
          <listener>
                  
          <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
              
          </listener>
              
          <servlet>
                  
          <servlet-name>flex</servlet-name>
                  
          <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
                  
          <load-on-startup>1</load-on-startup>
              
          </servlet>
              
          <servlet-mapping>
                  
          <servlet-name>flex</servlet-name>
                  
          <url-pattern>/messagebroker/*</url-pattern>
              
          </servlet-mapping>
              
          <welcome-file-list>
                  
          <welcome-file>index.html</welcome-file>
              
          </welcome-file-list>
          </web-app>

          在flex-servlet.xml中定義destination
          <?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:context="http://www.springframework.org/schema/context"
              xmlns:tx
          ="http://www.springframework.org/schema/tx" xmlns:flex="http://www.springframework.org/schema/flex"
              xsi:schemaLocation
          ="http://www.springframework.org/schema/beans 
              http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
              http://www.springframework.org/schema/context
              http://www.springframework.org/schema/context/spring-context-2.5.xsd
              http://www.springframework.org/schema/tx
              http://www.springframework.org/schema/tx/spring-tx-2.5.xsd
              http://www.springframework.org/schema/flex   
              http://www.springframework.org/schema/flex/spring-flex-1.0.xsd"
          >
              
          <flex:message-broker />
              <!-- premiumService是普通的業務bean -->
              
          <flex:remoting-destination ref="premiumService"/>
          </beans>

          這樣在remoting-config.xml中就不需要定義destination了
          <?xml version="1.0" encoding="UTF-8"?>
          <service id="remoting-service" 
              class
          ="flex.messaging.services.RemotingService">

              
          <adapters>
                  
          <adapter-definition id="java-object" class="flex.messaging.services.remoting.adapters.JavaAdapter" default="true"/>
              
          </adapters>

              
          <default-channels>
                  
          <channel ref="my-amf"/>
              
          </default-channels>
              
          <!--注釋掉,否則啟動會報錯或出現其他問題
              <destination id="premiumService">
                  <properties>
                      <source>org.hag.flex.service.PremiumService</source>
                  </properties>
              </destination>
              
          -->
          </service>

          測試
          <?xml version="1.0" encoding="utf-8"?>
          <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml"
              creationComplete
          ="premiumService.getPremiumList()">
              
          <mx:Script>
                  
          <![CDATA[
                      <!-- 省略import -->
                      private function resultHandler(evt:ResultHandler):void
                      {
                          Alert.show(evt.result.toString());
                      }
                      private function faultHandler(evt:FaultHandler):void
                      {
                          Alert.show(evt.fault.toString());
                      }
                  
          ]]>
              
          </mx:Script>
              
          <mx:RemoteObject id="premiumService" ref="premiumService"
                  result
          ="resultHandler(event)" fault="faultHandler(event)"/>
          </mx:Application>

          結果這時候報錯,destination "premiumService" either does not exists....
          原因是mxml編譯時要根據remoting-config.xml來處理destination的定義,而我們把premiumService定義在了spring bean中,所以它根本就不知道premiumService的存在。取消掉remoting-config.xml的注釋,再次對mxml進行編譯(如修改后保存),在瀏覽器中清除緩存、刷新,OK,結果出來了。

          注意在tomcat啟動時又要把remoting-config.xml定義的destination注釋掉,否則會出問題?;蛘吒纱嘣谄渌胤浇⒁粋€文件專門用于mxml的編譯。

          posted on 2009-07-04 00:41 果子 閱讀(878) 評論(1)  編輯  收藏 所屬分類: spring 、java 、flex

          評論

          # re: Spring blazeDS Integration destination not exists異常解決 2009-11-12 00:34 hbbbs

          GOOD,我也碰到了這個問題  回復  更多評論   

          導航

          <2009年11月>
          25262728293031
          1234567
          891011121314
          15161718192021
          22232425262728
          293012345

          統計

          常用鏈接

          留言簿(1)

          隨筆分類

          隨筆檔案

          搜索

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 息烽县| 和静县| 华宁县| 丹巴县| 龙井市| 平谷区| 张家川| 西吉县| 逊克县| 莱芜市| 滨海县| 买车| 绥滨县| 沂水县| 东山县| 福鼎市| 德州市| 玉田县| 台湾省| 塔城市| 大新县| 吴川市| 桐乡市| 体育| 马山县| 扎赉特旗| 凤山市| 林周县| 台安县| 榕江县| 句容市| 利津县| 渭源县| 惠安县| 永平县| 专栏| 达尔| 台东县| 库车县| 洞头县| 集安市|