2017-01-20 12 views
1

フレックスです。このFlexフロントエンドアプリケーションがバックエンドアプリケーションにどのように接続されていますか? mx:RemoteObject URLエンドポイントURLはどこに定義されていますか?

私は次のようなアーキテクチャを持つアプリケーション(他の誰かによって作られた)旧に取り組んでいます:Javaのバックエンド・アプリケーションからのデータを受信フレックスフロントエンド。

フロントエンドがフロントエンドにどのように接続されているかを理解しようとしています(バックエンドポインタをフレックスフロントエンドアプリケーションに変更する必要があるため、このアプリケーションを展開する必要があります)。私は、MXMLファイル内でHTTPServiceオブジェクトを表す必要がありますいくつかのタグを含むこのMyAppServices.mxmlファイルを発見した私のFLEXフロントENTの中へ

。公式doccumentation読む

:このタグ

はあなたがアクション Message Format(AMF)エンコーディングを使用してJavaオブジェクトのメソッドにアクセスすることができます。

<?xml version="1.0" encoding="utf-8"?> 
<rds:ServiceLocator 
    xmlns:mx="http://www.adobe.com/2006/mxml" 
    xmlns:rds="com.adobe.cairngorm.business.*"> 
    <mx:Script> 
     <![CDATA[ 
      import org.myOrganization.myApp.util.ConfigServer; 
     ]]> 
    </mx:Script> 


    <mx:RemoteObject 
     id="genericService"  
     destination="genericService" 
     endpoint= "messagebroker/amf" 
     showBusyCursor="true" 
     requestTimeout="100" 
     /> 

    <mx:RemoteObject 
     id="themeService"  
     destination="themeService" 
     endpoint= "messagebroker/amf" 
     showBusyCursor="true" 
     requestTimeout="100" 
     /> 

    <mx:RemoteObject 
     id="dataService"   
     destination="dataService" 
     endpoint= "messagebroker/amf" 
     showBusyCursor="true" 
     requestTimeout="100" 
     /> 

    <mx:RemoteObject 
     id="userService"   
     destination="userService" 
     endpoint= "messagebroker/amf" 
     showBusyCursor="true" 
     requestTimeout="100" 
     /> 

</rds:ServiceLocator> 

だから、[OK]を...私はJavaのバックエンド・サービスのエンドポイントが定義されている場合、私が見つけたことを考える:

だから、私のバックエンドサービスへのポインタでなければなりません。

ただし、JavaのバックエンドURLはどこに定義されていますか? org.myOrganization.myApp.utilに含まれるのActionScriptコードをインポートする必要があり

<mx:Script> 
    <![CDATA[ 
     import org.myOrganization.myApp.util.ConfigServer; 
    ]]> 
</mx:Script> 

:私は、このセクションが含まれて見ることができ、前MyAppServices.mxmlファイルのコードを調べる

.ConfigServerファイル。あなたはパスが同じであるが、プロジェクトに存在するファイルを持って見ることができるようにorg.myOrganization.myApp.util.ConfigServer.as

:だから、私のプロジェクトで、私は、このファイルを発見した

.as拡張子。自動的に追加されますか?

だから、THIファイルのコードは次のとおりです。

package org.myOrganization.myApp.util { 
    import flash.events.HTTPStatusEvent; 
    import flash.events.IOErrorEvent; 
    import flash.events.ProgressEvent; 
    import flash.events.SecurityErrorEvent; 
    import flash.net.URLLoader; 
    import flash.net.URLRequest; 
    import flash.net.URLVariables; 

    import mx.collections.ArrayCollection; 
    import mx.core.Application; 
    import mx.managers.BrowserManager; 
    import mx.managers.IBrowserManager; 
    import mx.utils.URLUtil; 

    import org.osmf.utils.URL; 

    public class ConfigServer { 

     // settings 
     public static var BIRT_URL:String; 
     public static var GEOSERVER_URL:String; 
     public static var GEOSERVER_BASELAYER_URL:String; 
     public static var APP_CONTEXT:String; 
     public static var CAF_SERVER_URL:String; 
     public static var CAF_REGISTER_URL:String; 

     public static var CAF_FACEBOOK_LOGIN_URL:String; 
     public static var CAF_GOOGLE_LOGIN_URL:String; 
     public static var CAF_TWITTER_LOGIN_URL:String; 

     public static var CAF_FACEBOOK_REGISTER_URL:String; 
     public static var CAF_GOOGLE_REGISTER_URL:String; 
     public static var CAF_TWITTER_REGISTER_URL:String; 

     public static var CAF_FACEBOOK_LOGIN_ENABLED:Boolean; 
     public static var CAF_GOOGLE_LOGIN_ENABLED:Boolean; 
     public static var CAF_TWITTER_LOGIN_ENABLED:Boolean; 

     public static var CAF_FACEBOOK_REGISTER_ENABLED:Boolean; 
     public static var CAF_GOOGLE_REGISTER_ENABLED:Boolean; 
     public static var CAF_TWITTER_REGISTER_ENABLED:Boolean; 

     //operations 
     public static var LIST_BYID:String = "listById"; 
     public static var RESOURCES_NUMBER = "resourceNumber"; 
     public static var LIST_OPERATION:String = "list"; 
     public static var GET_OBJECT:String = "getObject"; 
     public static var ADD_OPERATION:String = "add"; 
     public static var DELETE_OPERATION:String = "delete"; 
     public static var UPDATE_OPERATION:String = "update"; 
     public static var REPORT_OPERATION = "report"; 
     public static var GET_BYID:String = "getById"; 
     public static var LIST_UPDATE_OPERATION:String = "listUpdate"; 
     public static var APP_SETTINGS = "appSettings";  


     [Bindable] 
     public static var VARIABLES_URL:String = "prop.properties"; 

     [Bindable] 
     public static var arrColl:ArrayCollection; 

     [Bindable] 
     public static var paramColl:ArrayCollection; 

     public static var urlReq:URLRequest; 
     public static var urlLdr:URLLoader; 

     public static function init():void { 
      /* Initialize the two ArrayCollections objects with empty arrays. */ 
      arrColl = new ArrayCollection(); 
      paramColl = new ArrayCollection(); 

      /* Initialize the URLRequest object with the URL to the file of name/value pairs. */ 
      urlReq = new URLRequest(VARIABLES_URL); 

      /* Initialize the URLLoader object, assign the various event listeners, and load the specified URLRequest object. */ 
      urlLdr = new URLLoader(); 
      urlLdr.addEventListener(Event.COMPLETE, doEvent); 
      urlLdr.addEventListener(Event.OPEN, doEvent); 
      urlLdr.addEventListener(HTTPStatusEvent.HTTP_STATUS, doEvent); 
      urlLdr.addEventListener(IOErrorEvent.IO_ERROR, doEvent); 
      urlLdr.addEventListener(ProgressEvent.PROGRESS, doEvent); 
      urlLdr.addEventListener(SecurityErrorEvent.SECURITY_ERROR, doEvent); 
      urlLdr.load(urlReq); 
     } 

     public static function doEvent(evt:Event):void { 
      arrColl.addItem({type:evt.type, idx:arrColl.length+1, eventString:evt.toString()}); 

      switch (evt.type) { 
       case Event.COMPLETE: 
        /* If the load was successful, create a URLVariables object from the URLLoader.data property and populate the paramColl ArrayCollection object. */ 
        var ldr:URLLoader = evt.currentTarget as URLLoader; 
        var vars:URLVariables = new URLVariables(ldr.data); 
        var key:String; 

        for (key in vars) { 
         paramColl.addItem({key:key, value:vars[key]}); 
        } 

        //params.visible = true; 
        break; 
      } 
     } 



//  public static function getCurrentUrl():String { 
//   var browserManager:IBrowserManager = BrowserManager.getInstance(); 
//   
//   var url:String = browserManager.url; 
//   var result : String = url;  
//   if (url && (url.indexOf("file:/") == -1))  
//   {   
//    //result = mx.utils.URLUtil.getFullURL(url, url); 
//    result = mx.utils.URLUtil.getProtocol(url)+ "://" +mx.utils.URLUtil.getServerNameWithPort(url); 
// 
//   }  
//   return result; 
//  } 
//  
//  [Bindable] 
//  public static var properties:Object = new Object(); 
//  private static var loadedProps:Properties = new Properties(); 
//  private function init():void {  
//   loadedProps.addEventListener(Event.COMPLETE, onLoaderComplete);  
//   loadedProps.addEventListener(IOErrorEvent.IO_ERROR, onIOError);  
//   loadedProps.load("prop.properties"); 
//   loadedProps.s 
//  } 
//  
//  private function onLoaderComplete(event:Event):void {  
//   properties.host = loadedProps.getProperty("host");  
//   properties.port = loadedProps.getProperty("port");  
//   properties.webcontext = loadedProps.getProperty("context-root"); 
//  } 
    }  
} 

しかし、また、ここで私は私のサーバー定義を見つけることができません。このコードに

があります:

[Bindable] 
public static var VARIABLES_URL:String = "prop.properties"; 

私はそれが小道具の内容をエクスポートすることthoungt。プロパティファイルVARIABLES_URL変数(私はこの動作については絶対にわかりませんが)prop.propertiesファイルをプロジェクトに追加していません。

このFlexプロジェクトにバックエンドエンドポイントURLが定義されているかどうかご存知ですか?または、それを検索する方法についての少なくともいくつかのヒント?

答えて

関連する問題