Erro Flex: An unknown exception occurred while creating an instance of type

Amigos, bom dia !

Criei uma aplicação JAVA, JPA com Flex.

Esta ocorrendo o erro “An unknown exception occurred while creating an instance of type”

Estou utilizando BlazeDs.

O erro ocorre quando chamo a classe Fachada pelo remoteobject, exatamente no construtor desta classe, onde crio “clienteController = ClienteController.getInstancia()”. Quando removo esta linha funciona normal. Pelo que entendo o VO não permite mais de um construtor, mas eu tenho dois construtores em meu been java Cliente. Isso podeu causar algum problema ?

Eu criei um VO para a minha classe cliente. Ele ficou assim:

package Objetos
{
	import flash.system.System;
	[Bindable]
	[RemoteClass(alias="com.swe.cliente.model.Cliente")]

	public class Cliente
	{

		public var codigo:int;
		public var nome:String;
		public var dataCadastro:Date;
		
		public function Cliente()
		{
			
		}
		
	}
}

Minha classe java Cliente esta assim:

package com.swe.cliente.model;

import java.io.Serializable;
import com.swe.utils.DateUtil;

import java.sql.Date;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.List;

import javax.persistence.Basic;
import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Embedded;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.OneToMany;
import javax.persistence.Table;

@Entity
@Table(name="clientes")
public class Cliente implements Serializable{

	@Id
	@GeneratedValue (strategy = GenerationType.IDENTITY)
	@Column (name="codigo")
	private long codigo;
	
	@Column (name="nome")
	private String nome;
	
	@Column (name="dt_cadastro")
	private Calendar dataCadastro;

	public Cliente(){
		
	}
	
	public Cliente(String nome){
		this.nome = nome;
		this.dataCadastro = DateUtil.parseCalendar(System.currentTimeMillis());
	}
	
	public long getCodigo() {
		return codigo;
	}

	public void setCodigo(long codigo) {
		this.codigo = codigo;
	}

	public String getNome() {
		return nome;
	}

	public void setNome(String nome) {
		this.nome = nome;
	}

	public Calendar getDataCadastro() {
		return dataCadastro;
	}

	@Embedded
	public void setDataCadastro(Calendar dataCadastro) {
		this.dataCadastro = dataCadastro;
	}

	@Override
	public String toString(){
		return "Código "+codigo+" Nome "+nome+" Data Cadastro "+DateUtil.parseString(getDataCadastro());
	}
}

Minha classe ClienteController:

package com.swe.cliente.controller;

import java.util.List;

import com.swe.cliente.dao.ClienteDAO;
import com.swe.cliente.model.Cliente;

public class ClienteController {

	private ClienteDAO clienteDAO;
	private static ClienteController instancia; 
	
	private ClienteController(){
		clienteDAO = ClienteDAO.getInstancia();
	}
	
	public static ClienteController getInstancia(){
		if (instancia == null){
			instancia = new ClienteController();
		}
		return instancia;
	}
	
	public void inserir(Cliente cliente){
		clienteDAO.inserir(cliente);
	}
	
	public void atualizar(Cliente cliente){
		clienteDAO.atualizar(cliente);
	}
	
	public void apagar(Cliente cliente){
		clienteDAO.apagar(cliente);
	}
	
	public Cliente persquisaPorCodigo(long codigo){
		return clienteDAO.persquisaPorCodigo(codigo);
	}
	
	public List<Cliente> listaTodos(){
		return clienteDAO.listaTodos();
	}
	
}

Minha classe ClienteDAO:

package com.swe.cliente.dao;

import java.sql.Date;
import java.util.List;
import java.util.Properties;

import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import javax.persistence.Persistence;
import javax.persistence.Query;

import org.apache.openjpa.util.ExceptionInfo;

import com.swe.cliente.model.Cliente;
import com.swe.utils.dao.DaoUtils;

public class ClienteDAO {

	
	private static ClienteDAO instancia;
	private Properties props; 
	private EntityManagerFactory factory;
	public EntityManager entityManager = null;
		
	private ClienteDAO(){
		initialize();
	}
	
	public static ClienteDAO getInstancia(){
		if (instancia == null){
			instancia = new ClienteDAO();
		}
		return instancia;
	}
	
	private void initialize(){
			if ( entityManager == null || !entityManager.isOpen()){
				props = new Properties(); 
				factory = Persistence.createEntityManagerFactory("openjpa");
				entityManager = factory.createEntityManager();
			}
	}
	
	public void inserir(Cliente cliente){
		entityManager.getTransaction().begin();
		entityManager.persist(cliente);
		entityManager.getTransaction().commit();
	}
	
	public void atualizar(Cliente cliente){
		entityManager.getTransaction().begin();
		entityManager.merge(cliente);
		entityManager.getTransaction().commit();
	}
	
	public void apagar(Cliente cliente){
		entityManager.getTransaction().begin();
		entityManager.remove(cliente);
		entityManager.getTransaction().commit();
	}
	
	public Cliente persquisaPorCodigo(long codigo){
		entityManager.getTransaction().begin();
		Query query = entityManager.createQuery("select clientes from Cliente clientes where clientes.codigo = ?1");
		query.setParameter(1, codigo);
		List results = query.getResultList();
		if (results.size() == 0){
			System.out.println("Sem dados!");
		}
		((Cliente)results.get(0)).toString();
		entityManager.getTransaction().commit();
		return (Cliente)results.get(0);
	}
	
	public List<Cliente> listaTodos(){
		entityManager.getTransaction().begin();
		Query query = entityManager.createQuery("select clientes from Cliente clientes");
		List results = query.getResultList();
		entityManager.getTransaction().commit();
		return results;
	}
}

Meu remoting-config:

<?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="servico">
		<properties>
			<source>com.swe.fachada.Fachada</source>
		</properties>
	</destination>

</service>

O meu mxml:

<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" creationComplete="listaTodos();">

	<mx:RemoteObject id="roFachada" 
		             destination="servico" 
		             result="roResult(event)" 
		             fault="roFault(event)"
		             showBusyCursor="true"
		             />

<mx:Script>
	<![CDATA[
		import Objetos.Cliente;
		import mx.collections.ArrayCollection;
		import mx.rpc.events.FaultEvent;
		import mx.rpc.events.ResultEvent;
		import mx.controls.Alert;
		
		[Bindable]
		private var cliente:Cliente;
		
		[Bindable]
		private var clientes:ArrayCollection = new ArrayCollection();
		
		private function editar(strTipo:String):void{
			botoesModoEdicao(true);
			camposModoEdicao(true);
		} 
		
		private function crudAction(strTipo:String):void{
			botoesModoEdicao(false);
			camposModoEdicao(false);
		}

		private function botoesModoEdicao(boolEdicao:Boolean):void{
			if (boolEdicao){
				btnNovo.enabled = false;
				btnAlterar.enabled = false;
				btnExcluir.enabled = false;
				btnPesquisar.enabled = false;
				btnRefresh.enabled = false;
				btnSalvar.enabled = true;
				btnCancelar.enabled = true;
			}else{
				btnNovo.enabled = true;
				btnAlterar.enabled = true;
				btnExcluir.enabled = true;
				btnPesquisar.enabled = true;
				btnRefresh.enabled = true;
				btnSalvar.enabled = false;
				btnCancelar.enabled = false;
			}
		}
		
		private function camposModoEdicao(boolEdicao:Boolean):void{
			if (boolEdicao){
				inputNome.enabled = true;
				inputDataCadastro.enabled = true;
			}else{
				inputNome.enabled = false;
				inputDataCadastro.enabled = false;
			}
		}
		
		private function btnExcluirClick():void{
			Alert.yesLabel = "Sim";
			Alert.noLabel = "Não";
			Alert.show("Confirma Exclusão ?","Exclusão",1|2,this);
		}
		
		private function btnPesquisarClick():void{
			inputNome.enabled = true;
			botoesModoEdicao(true);
		}
		
		private function roResult(result:ResultEvent):void{
			clientes = result.result as ArrayCollection;
			cliente = clientes.getItemAt(1,1) as Cliente;
		}
		
		private function roFault(restult:FaultEvent):void{
				Alert.show("Erro: " + restult.fault.faultCode + " \n " 
					+ "Detalhe: " + restult.fault.faultDetail + " \n "
					+ "Mensagem: " + restult.fault.faultString, "Busca", Alert.OK, null, null, null, Alert.OK);
		}
		
		private function listaTodos():void{
			roFachada.listaTodosCliente();
			Alert.show("Foi", "Busca", Alert.OK, null, null, null, Alert.OK);
		}

	]]>
</mx:Script>

	<mx:Form x="10" y="51" width="628" height="362" backgroundColor="#F3F1F1">
		<mx:FormItem label="Código" >
			<mx:TextInput id="inputCodigo" text="{cliente.codigo.valueOf()}" enabled="false"/>
		</mx:FormItem>
		<mx:FormItem label="Nome">
			<mx:TextInput id="inputNome" text="{cliente.nome.valueOf()}" enabled="false"/>
		</mx:FormItem>
		<mx:FormItem label="Data de Cadastro" >
			<mx:DateField formatString="DD/MM/YYYY" id="inputDataCadastro" text="{cliente.dataCadastro}" enabled="false" monthNames="['Janeiro', 'Fevereiro', 'Março', 'Abril', 'Maio', 'Junho', 'Julho', 'Agosto', 'Setembro', 'Outubro', 'Novembro', 'Dezembro']"/>
		</mx:FormItem>
	</mx:Form>
	<mx:ApplicationControlBar x="10" y="10" width="628">
		<mx:Button label="Novo" id="btnNovo" click="{editar('novo');}"/>
		<mx:Button label="Alterar" id="btnAlterar" click="{editar('alterar');}"/>
		<mx:Button label="Excluir" id="btnExcluir" click="btnExcluirClick()"/>
		<mx:HBox width="28">
		</mx:HBox>
		<mx:Button label="Ok" id="btnSalvar" enabled="false" click="crudAction('salvar')"/>
		<mx:Button label="Cancela" id="btnCancelar" enabled="false" click="crudAction('cancelar')"/>
		<mx:HBox width="28">
		</mx:HBox>
		<mx:Button label="Pesquisar" id="btnPesquisar" click="btnPesquisarClick()"/>
		<mx:Button label="Refresh" id="btnRefresh" click="listaTodos()"/>
	</mx:ApplicationControlBar>
	
</mx:Application>

Pessoal, por favor me ajudem.

Não sei mais a quem recorrer.

Abraços…

Cara,

Posso estar falando besteira, mas acho que o pacote do seu VO deve ser igual ao pacote do modelo.