Duvida Serializable - urgente

Galera, to com o seguinte problema,
tenho q passar uma classe como parametro pra um ejb, e por isso implemento a interface Serializable, so q nessa classe eu tenho um objeto Connection e esta dando o seguinte erro:

error marshalling arguments; nested exception is:
java.io.NotSerializableException: sun.jdbc.odbc.JdbcOdbcConnection

como posso passar esse driver como parametro? Por favor eh urgente!!
obrigado!!!

pq tu nao passa os dados necessários pra conexão pro EJB ao invéz da connection toda? isso é meio gambiarra… :roll:

Você tem que adicionar esta classe ao arquivo de configuração onde você indica quais classes devem ser serializadas.

Infelizmente tenho q passar a connection td matheus, pois esse Ejb faz parte de um sistema q trabalha assim com servlets e ja existe td uma estrutura q faz q funcione assim.

que arquivo eh esse bejeto?

obrigado

refectoring detected :grin:

Heheheh… gostei da idéia…

Realmente Paulo, passar um objeto conexão ao EJB eh meio estranho, mesmo pq a ideia de um EJB e q vc nao se preocupe com a conexão, o container faz isso pra vc… :okok:

Acho que vc não está entendendo o Serializable.

É o objeto que vc passa como parâmetro que deve implementar Serializable, e não a classe que chama o método.
No seu caso, Connection NÃO É SERIALIZABLE, não tem como passa-la para um EJB, você precisa criar a conexão dentro do seu business method em seu EJB.

seguinte, vou explicar meu sistema pra vcs entenderem meu problema.

O ejb faz parte de um sistema q originalmente trabalhava e ainda traba com servlet.

O negocio eh o seguinte, eu tenho uma classe java chamada table q se conecta ao banco, essa conecçao eh passada pra ela na hora q ela eh instanciada em uma outra classe. Eu passo uma classe que junto com varias outras faz essa connecçao. Entao ao passar essa classe como parametro pra minha table minha conecçao esta aberta. Isso eh feito pq essa conecçao varia, pode ser de varios bancos.

agora entra o ejb em cena, o ejb vai fazer o papel dessa table, onde tenho q fazer as mesmas coisas so q com ejb, vou precisar usar essa mesma classe para abrir a conecçao, entao precisaria passa-la pro ejb, mas parece q isso nao eh possivel, estou usando BMP e estou com esse problema, pois nao sei como abrir a conecçao com o banco. Se alguem entendeu agora, me ajude.
valeu

faz essa tal de table um singleton e a chame de dentro do EJB para obter a conexão

Cara desculpa se a pergunta pode parecer besta, mas o q eh singleton, pode medar um exemplo de como faria isso?
agradeceria muito

[quote=“paulokarol”]Cara desculpa se a pergunta pode parecer besta, mas o q eh singleton, pode medar um exemplo de como faria isso?
agradeceria muito[/quote]

http://www.google.com.br/search?hl=pt-BR&q=singleton+example&btnG=Pesquisa+Google&meta=

Relaxa… é um design pattern

é só colocar o construtor da sua classe como private e incluir um método static synchronize que retorne uma instancia dessa classe (sempre a mesma instância, crie uma var estatica)

Exemplo

public class Table
{
    private static Table instance = null;
    private Table(){}
    public static synchronize Table getInstance()
    {
        if (instance == null)
        {
            instance = new table();
        }
        return instance;
    }
    ...
    seus metodos publicos, etc
    ....
}

Assim é só você chamar Table.getInstance() de dentro de seus EJBs para obter a sua classe que faz alguma coisa…

Amigos, obrigado pelas ajudas, mas infelizmente meu problema ainda existe, vou me resumir a exatamente o ponto q esta me dando dor de cabeça pra ver se alguem me ajuda, seguinte, como estou usando BMP eu tenho q incluir no banco, nao o conteiner, nao eh isso? Entao seguinte, como em td jdbc tenho a seguinte linha:

connection = pResource.connection;
statement = connection.createStatement();

pResource eh uma classe minha q recebo como parametro com a Connection, isso NAO ESTA DENTRO DO EJB. as la dentro eu tenho isso:

recordsAffected = statement.executeUpdate(command);

isso q esta me tirando o sono, como nao posso passar a connection pro ejb, como vou poder criar um statement e dar um executeUpdate se esses valores chegam nulos no meu ejb. So isso q quero saber como abrir a conexao fora do ejb e usa-la dentro dele?
obrigado

de dentro do EJB vc chama a classe que gerencia as conexões, por isto que essa classe é um Singleton.

dentro do ebj:

MinhaClasse connectionManager = MinhaClasse.getInstance();
Connection con = connectionManager.getConnection();