Ich habe ein Stateful Session Bean. Dieses sieht folgendermaßen aus:
---------------------------------------------------------------------------------------------------------------
---------------------------------------------------------------------------------------------------------------
Meine Frage:
Was soll ich mit der ejbPassivate Methode machen?
Wenn ich nämlich nichts in ejbPassivate mache erhalte ich folgenden Fehler:
---------------------------------------------------------------------------------------------------------------
19:29:32,078 WARN [TransactionImpl] Transaction TransactionImpl:XidImpl[FormatI
d=257, GlobalId=MAYCOM/87, BranchQual=, localId=87] timed out. status=STATUS_ACT
IVE
19:36:21,515 WARN [AbstractInstanceCache] failed to passivate, id=ejzz1evq-4
javax.ejb.EJBException: Could not passivate; failed to save state; CausedByExcep
tion is:
oracle.jdbc.driver.OracleConnection
at org.jboss.ejb.plugins.StatefulSessionFilePersistenceManager.passivate
Session(StatefulSessionFilePersistenceManager.java:404)
at org.jboss.ejb.plugins.StatefulSessionInstanceCache.passivate(Stateful
SessionInstanceCache.java:93)
at org.jboss.ejb.plugins.AbstractInstanceCache.tryToPassivate(AbstractIn
stanceCache.java:180)
at org.jboss.ejb.plugins.LRUEnterpriseContextCachePolicy$OveragerTask.ru
n(LRUEnterpriseContextCachePolicy.java:419)
at java.util.TimerThread.mainLoop(Timer.java:512)
at java.util.TimerThread.run(Timer.java:462)
java.io.NotSerializableException: oracle.jdbc.driver.OracleConnection
at java.i
bjectOutputStream.writeObject0(ObjectOutputStream.java:1075)
at java.i
bjectOutputStream.defaultWriteFields(ObjectOutputStream.java
:1369)
at java.i
bjectOutputStream.writeSerialData(ObjectOutputStream.java:13
41)
at java.i
bjectOutputStream.writeOrdinaryObject(ObjectOutputStream.jav
a:1284)
at java.i
bjectOutputStream.writeObject0(ObjectOutputStream.java:1073)
at java.i
bjectOutputStream.writeObject(ObjectOutputStream.java:291)
at org.jboss.ejb.plugins.StatefulSessionFilePersistenceManager.passivate
Session(StatefulSessionFilePersistenceManager.java:395)
at org.jboss.ejb.plugins.StatefulSessionInstanceCache.passivate(Stateful
SessionInstanceCache.java:93)
at org.jboss.ejb.plugins.AbstractInstanceCache.tryToPassivate(AbstractIn
stanceCache.java:180)
at org.jboss.ejb.plugins.LRUEnterpriseContextCachePolicy$OveragerTask.ru
n(LRUEnterpriseContextCachePolicy.java:419)
at java.util.TimerThread.mainLoop(Timer.java:512)
at java.util.TimerThread.run(Timer.java:462)
---------------------------------------------------------------------------------------------------------------
Kann mir jemand helfen??
mfg manuel
---------------------------------------------------------------------------------------------------------------
Code:
public abstract class ConnectionManagerBean implements javax.ejb.SessionBean {
private Connection con = null;
private String benutzerName = null;
private String passwort = null;
private boolean loggedIn = false;
public void ejbCreate(String benutzerName, String passwort){
this.benutzerName = benutzerName;
this.passwort = passwort;
}
public boolean doLogin(){
// do_Something
//...
}
public boolean doLogout(){
try {
con.close();
}
catch(SQLException e) {
System.out.println("ERROR: Couldn't close Connection");
e.printStackTrace();
loggedIn = true;
return false;
}
loggedIn = false;
return true;
}
public Connection getConnection(){
return this.con;
}
public void ejbRemove(){
try {
con.close();
}
catch(SQLException e) {
System.out.println("ERROR: Couldn't close Connection");
e.printStackTrace();
return;
}
this.benutzerName = null;
this.passwort = null;
this.loggedIn = false;
}
public void ejbCreate(){
}
public void ejbPassivate(){
}
}
Meine Frage:
Was soll ich mit der ejbPassivate Methode machen?
Wenn ich nämlich nichts in ejbPassivate mache erhalte ich folgenden Fehler:
---------------------------------------------------------------------------------------------------------------
19:29:32,078 WARN [TransactionImpl] Transaction TransactionImpl:XidImpl[FormatI
d=257, GlobalId=MAYCOM/87, BranchQual=, localId=87] timed out. status=STATUS_ACT
IVE
19:36:21,515 WARN [AbstractInstanceCache] failed to passivate, id=ejzz1evq-4
javax.ejb.EJBException: Could not passivate; failed to save state; CausedByExcep
tion is:
oracle.jdbc.driver.OracleConnection
at org.jboss.ejb.plugins.StatefulSessionFilePersistenceManager.passivate
Session(StatefulSessionFilePersistenceManager.java:404)
at org.jboss.ejb.plugins.StatefulSessionInstanceCache.passivate(Stateful
SessionInstanceCache.java:93)
at org.jboss.ejb.plugins.AbstractInstanceCache.tryToPassivate(AbstractIn
stanceCache.java:180)
at org.jboss.ejb.plugins.LRUEnterpriseContextCachePolicy$OveragerTask.ru
n(LRUEnterpriseContextCachePolicy.java:419)
at java.util.TimerThread.mainLoop(Timer.java:512)
at java.util.TimerThread.run(Timer.java:462)
java.io.NotSerializableException: oracle.jdbc.driver.OracleConnection
at java.i
at java.i
:1369)
at java.i
41)
at java.i
a:1284)
at java.i
at java.i
at org.jboss.ejb.plugins.StatefulSessionFilePersistenceManager.passivate
Session(StatefulSessionFilePersistenceManager.java:395)
at org.jboss.ejb.plugins.StatefulSessionInstanceCache.passivate(Stateful
SessionInstanceCache.java:93)
at org.jboss.ejb.plugins.AbstractInstanceCache.tryToPassivate(AbstractIn
stanceCache.java:180)
at org.jboss.ejb.plugins.LRUEnterpriseContextCachePolicy$OveragerTask.ru
n(LRUEnterpriseContextCachePolicy.java:419)
at java.util.TimerThread.mainLoop(Timer.java:512)
at java.util.TimerThread.run(Timer.java:462)
---------------------------------------------------------------------------------------------------------------
Kann mir jemand helfen??
mfg manuel