Poiz ehh..

Uma coneção c/ banco de dados não é serializable. Vc não pode puxar ele 
por uma coneção RMI.

sven

Ricardo Santana wrote:

> Olá pessoal
> 
> Estou desenvolvendo uma aplicação Servidora que utiliza RMI e quando tento
> devolver um objeto Connection para o
> Cliente recebo essa mensagem:
> 
> java.rmi.UnmarshalException: error unmarshalling return; nested exception
> is:
>         java.io.WriteAbortedException: Writing aborted by exception;
> java.io.Not
> SerializableException: sun.jdbc.odbc.JdbcOdbcConnection
> 
> Espero que alguém possa me dizer algo!
> 
> Obrigado!
> 
> Ricardo Santana
> 
> 
> Aqui está a classe do objeto que estou tentando devolver:
> 
> /*
> * Alterado: Ricardo Santana - 07/11/2000.
> * Objetivo: Incluir a propriedade de Tipo de Conexão.
> *           Extender a classe Init para obter todas as variáveis
> *           declaradas nela.
> *
> * Alterado: Ricardo Santana - 12/11/2000.
> * Objetivo: Utilizar a constante que representa o separador do id. de
> conexão.
> */
> package com.netgrafos.database;
> 
> import java.sql.*;
> import java.io.Serializable;
> import com.netgrafos.*;
> 
> /**
> * Definiçao da estrutura de Controle de Conexões (Connections) para o
> Gerenciador de
> * Conexões.
> *
> * @author Ricardo Santana - 17/08/2000.
> * @version 1.1 - Multiplataforma - NETGrafos Technology.
> * @see query
> */
> file://public class DBConnectionObject extends Init {
> public class DBConnectionObject extends Init implements Serializable {
> 
>  /**
>  * Identificação da conexão. Formato: "D:C", onde
>  * D = Id. Banco de Dados e C = Id. da Conexão.
>  */
>  private String id;
> 
>  /**
>  * Objeto Connection.
>  */
>  private /*transient*/ Connection connection;
> 
>  /**
>  * Tipo de conexão.<br>
>  * Normal = Sujeita a verificação de tempo de ociosidade ou
>  * Permanente = Não sujeita a essa verificação.
>  */
>  private int type;
> 
>  /**
>  * Situação da Conexão.
>  */
>  private int situation;
> 
>  /**
>  * Data e Hora de Criação da Conexão (Em milisegundos).
>  */
>  private long age;
> 
>  /**
>  * Obtém a Identificação da conexão.
>  *
>  * @return Identificador da conexão.
>  */
>  public String getId() {
>   return id;
>  }
> 
>  /**
>  * Atribui a Identificação da conexão.
>  *
>  * @param sId Identificador da conexão.
>  */
>  public void setId(String sId) {
>   if(sId != null) {
>    // Consiste o conteúdo passado.
>    if(sId.trim().equals("") || sId.indexOf(SEP_CONNECTION_ID) == 0 ||
> Strings.occurs(sId, SEP_CONNECTION_ID)  > 1) {
>     sId = null;
>    }
>   }
> 
>   // Somente manipula se o conteúdo for válido.
>   if(sId != null)
>    id = sId;
> 
>   return;
>  }
> 
>  /**
>  * Atribui a Situação da conexão.
>  *
>  * @return Situação da conexão.
>  */
>  public int getSituation() {
>   return situation;
>  }
> 
>  /**
>  * Atribui a Situação da conexão.
>  *
>  * @param iSituation Situação da conexão.
>  */
>  public void setSituation(int iSituation) {
>   if(iSituation < CON_STATUS_FREE || iSituation > CON_STATUS_AVAILABLE)
>    iSituation = CON_STATUS_FREE; // Torna a conexão livre.
> 
>   situation = iSituation;
> 
>   return;
>  }
> 
>  /**
>  * Obtém o tempo de vida da conexão desde a abertura ou o último acesso.
>  *
>  * @return Idade da conexão.
>  */
>  public long getAge() {
>   return age;
>  }
> 
>  /**
>  * Atribui o tempo de vida da conexão desde a abertura ou o último acesso.
>  *
>  * @param lAge Idade da conexão.
>  */
>  public void setAge(long lAge) {
>   if(lAge < 0L)
>    lAge = 0L;
> 
>   age = lAge;
> 
>   return;
>  }
> 
>  /**
>  * Obtém o tipo da conexão.
>  *
>  * @return Tipo da conexão.
>  */
>  public int getType() {
>   return type;
>  }
> 
>  /**
>  * Atribui o tipo da conexão.
>  *
>  * @param iType Tipo da conexão.
>  */
>  public void setType(int iType) {
>   if(iType != CON_TYPE_NORMAL && iType != CON_TYPE_PERMANENT) {
>    iType = CON_TYPE_NORMAL;
>   }
> 
>   type = iType;
> 
>   return;
>  }
> 
>  /**
>  * Obtém a referência ao objeto de comunicação com o Banco de Dados.
>  *
>  * @return Objeto da conexão.
>  */
>  public Connection getConnection() {
>   return connection;
>  }
> 
>  /**
>  * Atribui uma referência ao objeto de comunicação com o Banco de Dados.
>  *
>  * @param oConnection Objeto de conexão.
>  */
>  public void setConnection(Connection oConnection) {
>   connection = oConnection;
> 
>   return;
>  }
> 
>  /**
>  * Inicializa a estrutura.
>  *
>  * @param lDBId   Identificação do Banco de Dados.
>  * @param lConnId Identificador da conexão.
>  * @param oConn   Objeto Connection.
>  * /
>  private DBConnectionObject() {
>   Id         = null;
>   Situation  = CON_STATUS_FREE;
>   Connection = null;
>   Age        = 0L;
>   Type       = CON_TYPE_NORMAL;
>  }
>  */
> 
>  /**
>  * Inicializa a estrutura.
>  *
>  * @param lDBId   Identificação do Banco de Dados.
>  * @param lConnId Identificador da conexão.
>  * @param oConn   Objeto Connection.
>  */
>  public DBConnectionObject(long lDBId, long lConnId, Connection oConn) {
>   id         = ("" + lDBId) + SEP_CONNECTION_ID + lConnId;
>   situation  = CON_STATUS_FREE;
>   connection = oConn;
>   age        = System.currentTimeMillis();
>   type       = CON_TYPE_NORMAL;
>  }
> }
> 
> 
> ------------------------------ LISTA SOUJAVA ---------------------------- 
> http://www.soujava.org.br  -  Sociedade de Usuários Java da Sucesu-SP 
> dúvidas mais comuns: http://www.soujava.org.br/faq.htm
> regras da lista: http://www.soujava.org.br/regras.htm
> para sair da lista: envie email para [EMAIL PROTECTED] 
> -------------------------------------------------------------------------
> 
> 


------------------------------ LISTA SOUJAVA ---------------------------- 
http://www.soujava.org.br  -  Sociedade de Usuários Java da Sucesu-SP 
dúvidas mais comuns: http://www.soujava.org.br/faq.htm
regras da lista: http://www.soujava.org.br/regras.htm
para sair da lista: envie email para [EMAIL PROTECTED] 
-------------------------------------------------------------------------

Responder a