アノテーション付きメソッドを呼び出すと@Remove
、クライアントがステートフル EJB のインスタンスをもう必要とせず、呼び出し後に削除できることを EJB コンテナーに通知することを理解しています。
ただし、Oracle JEE チュートリアルでは、このメソッドを使用してインスタンスを「クリーン」にします。たとえば、ここを参照してください。
@Stateful
public class CartBean implements Cart {
// ...
List<String> contents;
// ...
@Remove
public void remove() {
contents = null;
}
}
( https://docs.oracle.com/javaee/6/tutorial/doc/bnbod.htmlより)
メンバーList<String> contents;
はに設定されてnull
いますが、これを行う理由がわかりません。インスタンスが削除された場合、これらの種類の参照はすべて削除されませんか?
インスタンスが解放されたときにいくつかのビジネス タスクを実行する必要があると想像できますが、メソッドの呼び出し後は、それらのタスクを実行できる@Remove
いくつかのメソッドを多かれ少なかれ直接呼び出します。@PreDestroy
では、なぜ@Remove
sth like だけでなく、メソッドにこの特別なメカニズムがあるのでしょうか。EJBContainer.remove(myBean)
アノテーションの目的を明確にしてください@Remove
。また、このメカニズムが必要な理由が明らかなわかりやすいユースケースの例をいくつか挙げていただけますか?