Apcoordinator ユーザーズガイド
|
目次
|
D.3 リモート共通インタフェースの利用
リモート共通インタフェースを利用することで、Apcoordinatorを利用して開発したEJB/Webサービスや、一般的なEJB/Webサービスを同じインタフェースで呼び出すことが可能です。詳細はリモート共通インタフェースを参照してください。
Strutsアプリケーションでリモート共通インタフェースを利用するためには、com.fujitsu.uji.ext.InitialCallFactory
クラスを利用してCallFactory
オブジェクトを取得してください。
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.struts.action.Action;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionMapping;
import com.fujitsu.uji.ext.CallFactory;
import com.fujitsu.uji.ext.InitialCallFactory;
public class MyAction extends Action {
public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request,
HttpServletResponse response) throws Exception {
...
try{
CallFactory factory = (CallFactory)InitialCallFactory.createFactory(servlet);
Call call = factory.createCall("myejb");
ResponseBean responseBean = (ResponseBean)call.invoke(dataBean, "verb");
} catch(Throwable e){
...
}
...
}
}
|
EJBのセション情報の同期機能を利用する場合は、あらかじめ同期するオブジェクトをセションスコープにセットしておく必要があります。このとき、オブジェクトはjava.io.Serializable
インタフェースを実装したものとし、オブジェクトに関連付ける名前にはcom.fujitsu.uji.SessionProfile.SYNCDATAHOLDERKEY
を使用してください。
セションスコープにセットするクラスの例を次に示します。この例ではセションに保持する情報としてユーザIDを使用しています。
public class SynchronizedData implements java.io.Serializable {
protected String userId = null;
public String getUserId(){
return userId;
}
public void setUserId(String userId){
this.userId = userId;
}
}
|
セション情報の同期機能を利用した場合のリモート共通インタフェースの利用例を次に示します。
CallFactory
オブジェクトの生成にはInitialCallFactory#createFactory(Servlet, HttpSession)
を使用してください。
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.struts.action.Action;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionMapping;
import com.fujitsu.uji.ext.CallFactory;
import com.fujitsu.uji.ext.InitialCallFactory;
public class MyAction extends Action {
public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request,
HttpServletResponse response) throws Exception {
...
SynchronizedData syncData = new SynchronizedData();
HttpSession session = request.getSession();
session.setAttribute(SessionProfile.SYNCDATAHOLDERKEY, syncData);
try{
CallFactory factory = (CallFactory)InitialCallFactory.createFactory(servlet, session);
Call call = factory.createCall("myejb");
ResponseBean responseBean = (ResponseBean)call.invoke(dataBean, "verb");
} catch(Throwable e){
...
}
...
}
}
|
All Rights Reserved, Copyright © 富士通株式会社 2000-2005