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]
-------------------------------------------------------------------------