2011-02-08 6 views
0

Я создаю приложение, используя Flex 4 + Spring Blazeds Integration 1.5 + Spring 3.0.5 + Hibernate, работающий на jboss-5.1.0.GA. Я создаю простую форму для входа, и при отправке строки через удаленный объект она работает нормально. Но при попытке использовать объект его простой не работает. Забавно то, что он даже не показывает оповещение, что положил! Кроме того, если я удаляю тег «RemoteClass», он отправляется в java, но возникает ошибка. Bellow - это код и конфиги.Удаленный объект flex не работает

Мой Java класс:

package com.controlefinanceiro.entities; 

// imports 

@Entity 
@Table(name="CF_USER_SISTEMA") 
public class UserSistema implements Serializable{ 
    private static final long serialVersionUID = 1L; 

    @Id 
    @Column(name="USERNAME") 
    private String username; 

    @Column(name="PASSWORD") 
    private String password; 

    /** 
    * Constructor 
    */ 
    public UserSistema(){ 
    } 

    // all getters and setters 
} 

Мой гибкий класс:

package com.controlefinanceiro.view.model 
{ 
    [Bindable] 
    [RemoteClass=(alias="com.controlefinanceiro.entities.UserSistema")] 
    public class UserSistema 
    { 
     public var username:String; 
     public var password:String; 
    } 
} 

услуги-конфигурации:

<services-config> 
    <services> 
     <service-include file-path="remoting-config.xml" /> 
    </services> 

    <!-- Spring factory registration --> 
    <factories> 
     <factory id="spring" 
      class="com.controlefinanceiro.controller.SpringFactory" /> 
    </factories> 

    <channels> 
     <channel-definition id="channel-amf" 
      class="mx.messaging.channels.AMFChannel"> 
      <endpoint 
       url="http://localhost:8080/ControleFinanceiroServices/messagebroker/amf" 
       class="flex.messaging.endpoints.AMFEndpoint" /> 
      <properties> 
       <polling-enabled>false</polling-enabled> 
      </properties> 
     </channel-definition> 
    </channels> 

     // rest of config (log, redeploy) 
</services-config> 

Remoting-конфигурации:

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

    <default-channels> 
     <channel ref="channel-amf" /> 
    </default-channels> 

    <destination id="loginService"> 
     <properties> 
      <factory>spring</factory> 
      <source>loginService</source> 
     </properties> 
    </destination> 
</service> 

Flex приложения:

<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009" 
       xmlns:s="library://ns.adobe.com/flex/spark" 
       xmlns:mx="library://ns.adobe.com/flex/mx" 
       xmlns:comp="com.controlefinanceiro.view.componentes.*"> 
    <s:layout><s:BasicLayout/></s:layout> 
    <fx:Declarations> 
     <s:RemoteObject id="ro" destination="loginService" showBusyCursor="true" fault="onRemoteFault(event)"/> 
    </fx:Declarations> 
    <fx:Script> 
     <![CDATA[ 
      public function doLogin(event:MouseEvent):void{ 
       Alert.show("login"); 
       var usu:UserSistema = new UserSistema(); 
       Alert.show("user"); 
       //usu.username = user.text; 
       //usu.password = senha.text; 
       //ro.doLogin.addEventListener(ResultEvent.RESULT,onLoginSuccess); 
       //ro.doLogin.addEventListener(FaultEvent.FAULT,onLoginFault); 
       //ro.doLogin(usu); 
      } 
      public function doEcho(event:MouseEvent):void{ 
       Alert.show("echo"); 
       ro.echo.addEventListener(ResultEvent.RESULT,alertResult); 
       ro.echo.addEventListener(FaultEvent.FAULT,onLoginFault); 
       ro.echo(user.text); 
      } 
      // others methods that just do an Alert.show() 
     ]]> 
    </fx:Script> 
    <mx:Canvas width="242" height="141" horizontalCenter="0" verticalCenter="0"> 
     <s:Label id="msg" x="10" y="6"/> 
     <s:Label x="21" y="37" text="Usuario:"/> 
     <s:TextInput id="user" width="134" x="77" y="27"/> 
     <s:Label x="30" y="67" text="Senha:"/> 
     <s:TextInput id="senha" width="133" displayAsPassword="true" x="78" y="57"/> 
     <s:Button label="Login" click="doLogin(event)" id="login" x="165" y="100"/> 
     <s:Button x="113" y="100" label="Echo" click="doEcho(event)"/> 
    </mx:Canvas> 
</s:Application> 

PS .: извините за бедный английский и "португальский" слова в коде: P

Спасибо !! Andre

+1

У ваших сервисов-config есть жестко закодированный URL. Вы обслуживаете SWF с одного URL-адреса (AKA Localhost?). Использовали ли вы такую ​​программу, как ServiceCapture или Charles, или монитор сети Flash Builder для проверки того, что отправляется туда и обратно? – JeffryHouser

+2

[RemoteClass = (alias = "com.controlefinanceiro.entities.UserSistema")] неправильный синтаксис. должен быть [RemoteClass (alias ...] –

+0

Спасибо за ваши комментарии. Я был намеренно укоренен в URL как отчаянное намерение, которое он работает. Фактически, ошибка была просто простой ошибкой sintax как комментарий @ Florian F (если бы вы хотел бы опубликовать ответ). Еще раз спасибо! –

ответ

0

с первого взгляда, ваши компоненты и XML-конфигурации кажутся правильными.

Я заметил в вашем файле MXML, что событие alertResult отсутствует, и, вероятно, именно поэтому компонент не показан на стороне гибкого диска!

попробуйте добавить его к вам MXML файл:

private function alertResult(event:ResultEvent):void 
{ 
    userSistema:UserSistema = new UserSistema(); 
    userSistema = (UserSistema)event.result; 

    Alert.show(userSistema.username, userSistema.password); 
} 
  • Я бразилец тоже!
Смежные вопросы