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