この図は、EJB 3.0ステートフル・セッションBeanを起動するサーブレットまたはJavaクライアント、およびEJBクライアントを示しています。EJBコンテナには、リモート・コンポーネント・インタフェースおよびBeanインスタンスがあります。リモート・コンポーネント・インタフェースCartは、@Remoteでアノテーションが付けられたPlain Old Java Interfaceです。BeanインスタンスCartBeanは、@Statefulでアノテーションが付けられたPlain Old Java Objectです。Beanインスタンスは、オプションのメソッドinitialize@PostConstructでアノテーションを付けて、そのメソッドを、コンテナがこのEJBのインスタンスの作成後に起動するメソッドとして指定します。Beanインスタンスは、オプションのメソッドdoneShopping@Removeでアノテーションを付けて、そのメソッドを、コンテナがEJBの特定のインスタンスを削除するために起動するメソッドとして指定します。ホーム・インタフェースはありません。EJBコンテナがインスタンス化を処理します。サーブレットまたはJavaクライアントは、JNDIを使用してCartのインスタンスを"java:comp/env/Cart"でルックアップします。EJBクライアントは、Cartインスタンス変数に@EJBでアノテーションを付けることにより、リソース・インジェクションを使用します。どちらの場合も、EJBコンテナがインスタンス化を処理し、ナローイングは不要です。どちらのクライアントも、Cartインタフェースを使用して、addItemなどのメソッドをCartBeanに対して起動できます。終了すると、クライアントはCartのメソッドdoneShoppingを起動します。