As you know, the EJB container offers strong support for "save/load" the state of a stateful bean. The problem arises when you have to deal with nonserializable objects like open sockets, JDBC connections, etc. In these cases, the containter needs a little help. You can provide this by implementing two callback methods, as follows:
//passivation callback method for EJB 3.0
@Stateful
public class any_bean_name{
@PrePassivate
public void passivate(){
//here close JDBC connections, socket connections, ...
//...
}
...
}
//activation callback method for EJB 3.0
@Stateful
public class any_bean_name{
@PostActivate
public void activate(){
//here open JDBC connections, socket connections, ...
//...
}
...
}