果子的程序人生

          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)  編輯  收藏 所屬分類: springjavaflex

          評論

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

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

          導航

          <2009年7月>
          2829301234
          567891011
          12131415161718
          19202122232425
          2627282930311
          2345678

          統計

          常用鏈接

          留言簿(1)

          隨筆分類

          隨筆檔案

          搜索

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 蓝田县| 辰溪县| 峨眉山市| 侯马市| 中宁县| 景德镇市| 兰考县| 宝应县| 桦甸市| 商洛市| 阿瓦提县| 黄石市| 攀枝花市| 蓬溪县| 岐山县| 自治县| 舟曲县| 诸暨市| 高阳县| 哈密市| 大足县| 锡林浩特市| 县级市| 原阳县| 怀远县| 阿合奇县| 湘潭县| 瓦房店市| 永福县| 山西省| 宝丰县| 芒康县| 天津市| 禹城市| 特克斯县| 高尔夫| 宁都县| 和政县| 德令哈市| 土默特右旗| 淮滨县|