Resolvido pessoal....

*Solução: baixei a nova versão (**4.0.1.16258) **do BlazeDS 4.*



2010/8/24 Leonardo Ribeiro <[email protected]>

> Pessoal,
>
> Montei uma app de exemplo baseado no tutorial do Erko (swiz) e to
> enfrentando um problema que é o seguinte:
>
> Tenho um remoteObject que tem como espelho um "service" no server, porém
> sempre que chamo o método passando
> um objeto de domínio recebo o seguinte erro:
>
> [RPC Fault faultString="Error deserializing client message."
> faultCode="Client.Packet.Encoding" faultDetail="null"]
>  at mx.rpc::AbstractInvoker/
> http://www.adobe.com/2006/flex/mx/internal::faultHandler()[E<http://www.adobe.com/2006/flex/mx/internal::faultHandler()%5BE>
> :\dev\4.0.0\frameworks\projects\rpc\src\mx\rpc\AbstractInvoker.as:345]
>  at
> mx.rpc::Responder/fault()[E:\dev\4.0.0\frameworks\projects\rpc\src\mx\rpc\Responder.as:68]
>  at
> mx.rpc::AsyncRequest/fault()[E:\dev\4.0.0\frameworks\projects\rpc\src\mx\rpc\AsyncRequest.as:113]
>  at
> NetConnectionMessageResponder/statusHandler()[E:\dev\4.0.0\frameworks\projects\rpc\src\mx\messaging\channels\NetConnectionChannel.as:609]
>  at
> mx.messaging::MessageResponder/status()[E:\dev\4.0.0\frameworks\projects\rpc\src\mx\messaging\MessageResponder.as:264]
>
> Minha classe de serviço remoto tem os seguintes métodos
>
> public void salva(Usuario usuario)  //metodo "real"
> public void teste(String value)  //metodo para teste
> public void testeObj(Object obj)  //metodo para teste
>
> Se eu uso salva(usuario) da o erro acima....
> Agora, se ao invés de eu usar "salva(usuario)", usar
> testeObj(usuario), aí funciona...chega no server e exibe o
> sysout, o mesmo ocorre se eu usar teste("uma string"),
> tbm funciona 100%. Só dá o erro quando passo um usuário para o método
> salva que espera como parâmetro um Usuario
>
> Alguém sabe me dizer o que pode estar acontecendo?
> Acredito que o problema não seja com o Swiz, porque os outros métodos
> funcionam....
>
> Uso o FB4 + BlazeDS 4 (blazeds-bin-4.0.0.14931.zip) + Spring...
> Mas ta tudo beleza (as chamadas remotas, só não funfa quando passo
> um usuario para um método que espera um usuário)
>
> Abaixo segue como estão as minhas classes
>
> *No projeto Java*
> *
> *
> *
> @Entity
> @Inheritance(strategy = InheritanceType.TABLE_PER_CLASS)
> public class Usuario extends DomainEntity {
>
> private static final long serialVersionUID = 1L;
>
> @Column(name = "nome", nullable = false, length = 60)
>  private String nome;
>
> @Column(name = "login", nullable = false, length = 20)
>  private String login;
>
> @Column(name = "senha", nullable = false, length = 20)
>  private String senha;
>
> @Column(name = "email", length = 100)
>  private String email;
>
> public Usuario() {}
>
>         //Getters e Setters omitidos
> }
>
>  @Entity
> @Inheritance(strategy = InheritanceType.TABLE_PER_CLASS)
> public abstract class DomainEntity implements IDomainEntity {
>
> private static final long serialVersionUID = 1L;
>
> @Id
> private Long id;
>  @Column(name = "data_hora_criacao")
> private Date dataHoraCriacao;
>  @ManyToOne
> @JoinColumn(name = "id_usuario_criacao")
>  private Usuario usuarioCriacao;
>
> public DomainEntity() {
> this.id = ObjectIdFactory.makeObjectId();
>  }
>
>       //Getters e Setters omitidos
>  }
>
> public interface IDomainEntity extends Serializable {
>
>  public Object getId();
> }
>
> public interface IUsuarioUseCase {
>
> public void salva(Usuario usuario);
>  public void teste(String value); //Metodo incluido para Teste
> public void testeObj(Object value);
>    //Metodo incluido para Teste
> }
>
> *
> @Service
> @RemotingDestination
> public class UsuarioUseCase implements IUsuarioUseCase {
>
> @Override
>  public void salva(Usuario usuario) {
> System.out.println("usuario=" + usuario.getNome());
>  }
>
> @Override
> public void teste(String value) {
>  System.out.println("value=" + value);
> }
>  @Override
> public void testeObj(Object obj) {
>  System.out.println("value=" + obj);
> }
> }
>
> *No projeto Flex*
> *
> *
> Classes que "espelham" as do server
>
> -=-=-=-=-=-=-=-=-=
> *
> package nome.package
> {
>  [RemoteClass(alias="nome.pacote.projetojava.IDomainEntity")]
>  [Bindable]
>  public interface IDomainEntity
>  {
>  }
> }
>
> -=-=-=-=-=-=-=-=-=
> package
> nome.package
> {
>  [RemoteClass(alias="
> nome.pacote.projetojava.DomainEntity")]
>  [Bindable]
> public class DomainEntity implements IDomainEntity
>  {
> public var id : Object;
> }
> }
> *
>
> -=-=-=-=-=-=-=-=-=
> package *
>  nome.package
> *
> {
>  [RemoteClass(alias="nome.pacote.projetojava.Usuario")]
>  [Bindable]
> public class Usuario extends DomainEntity
> {
>  public var nome : String;
> public var login : String;
> public var senha : String;
>  public var email : String;
>  }
> }
>
> -=-=-=-=-=-=-=-=-=-=-=-=-=-=-
> *Metodo da classe UsuarioController.as*
>
> [Mediate(event="UsuarioEvent.SAVE", properties="usuario")]
>  public function save(usuario:Usuario):void {
> this.serviceHelper.executeServiceCall(
>  usuarioUseCase.salva(usuario), *//Se eu chamo esse metodo passando
> usuario da o erro acima, se uso os outros metodos nao da problema (como
> mencionado acima)*
>  usuarioService_noReturn_resultHandler,
> usuarioService_faultHandler
> );
> }
>
>
>
> --
> []'s
> Leonardo
>
> Linux User #488650
> Ubuntu User #27045
> Mais sobre o Ubuntu em português: http://www.ubuntu-br.org/comece
>



-- 
[]'s
Leonardo

Linux User #488650
Ubuntu User #27045
Mais sobre o Ubuntu em português: http://www.ubuntu-br.org/comece

-- 
Você recebeu esta mensagem porque está inscrito na lista "flexdev"
Para enviar uma mensagem, envie um e-mail para [email protected]
Para sair da lista, envie um email em branco para 
[email protected]
Mais opções estão disponíveis em http://groups.google.com/group/flexdev

Responder a