リモート共通インタフェースを利用することで、Apcoordinatorを利用して開発したEJBや、一般的なEJBを同じインタフェースで呼び出せます。
JavaServer Facesアプリケーションでリモート共通インタフェースを利用するためには、com.fujitsu.uji.ext.InitialCallFactoryクラスを利用してCallFactoryオブジェクトを取得してください。
import javax.faces.context.ExternalContext; import javax.faces.context.FacesContext; import javax.servlet.ServletContext; import com.fujitsu.uji.ext.Call; import com.fujitsu.uji.ext.CallFactory; import com.fujitsu.uji.ext.InitialCallFactory; import com.fujitsu.uji.ResponseBean; public class MyBean { public String doAction(){ ... try{ FacesContext fc = FacesContext.getCurrentInstance(); ExternalContext ec = fc.getExternalContext(); ServletContext sc = (ServletContext)ec.getContext(); CallFactory factory = (CallFactory)InitialCallFactory.createFactory(sc, this.getClass().getClassLoader()); Call call = factory.createCall("myejb"); ResponseBean responseBean = (ResponseBean)call.invoke(dataBean, "verb"); } catch(Throwable e){ ... } ... } }
ポイント
リモート共通インタフェースは、com.fujitsu.uji.DataBeanを継承したBean(以降、データBeanと呼びます)を引数としてEJBを呼び出します。そのため、リモート共通インタフェースを利用する場合は、managed beanをデータBeanとして作成しておくと便利です。