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!!!
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.
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:
É 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
[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]
é 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:
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