Ricardo,

    A classe sun.jdbc.odbc.JdbcOdbcConnection nao e' serializavel, por
isso nao o teu servidor nao pode retornar o objeto conexao ao cliente.

    Qual a tua intencao em fazer isto? Permitir que o cliente tenha
acesso a uma conexao de banco de dados criada no servidor?

    Se tu quiseres que o cliente tenha uma conexao ao BD, ele mesmo
precisa cria'-la (ai' tu tens uma arquitetura de duas camadas), e
entao porque usar RMI? Outra alternativa e' prover uma forma pela qual
tu crias um objeto servidor RMI que serve de ponte para o cliente
acessar um BD via JDBC no servidor, e existe um driver chamado
RMI-JDBC que faz exatamente isso.

    Qualquer duvida...

        Rafael Chaves
Brainbench MVP for Java 1
http://www.brainbench.com

-----Mensagem original-----
De: Ricardo Santana <[EMAIL PROTECTED]>
Para: [EMAIL PROTECTED] <[EMAIL PROTECTED]>
Data: Quinta-feira, 25 de Janeiro de 2001 16:29
Assunto: [java-list] RMI-Serialization


>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