Dwr3.0純粋な注釈(純粋なJava Code構成)構成とアプリケーションの浅い分析の3つの後端の逆呼び出しフロントエンド

2018 ワード

前2編ではDwrゼロ配置文化化とフロントエンド呼び出しバックエンドの方法を紹介しましたが、皆さんはすでに熟練しているはずです.次に、バックエンドがどのようにフロントエンドを逆方向に呼び出すjs方法を検討します.
前の2編で述べたように、Dwrで2つのサービスコンポーネントを登録しました.1つはremoteで、もう1つはページで使用されているcontrollerです.このremoteはページがロードされると呼び出されます.これにより、セッションとページScriptSessionがバインドされ、後でscriptSessionIdを使用してページ指向プッシュを行うのに便利になります.
セッションとページScriptSessionを作成する方法(ページがロードされたばかりのときに呼び出されます):

ScriptSession scriptSession = WebContextFactory.get().getScriptSession(); 
String jsessionId = scriptSession.getHttpSessionId(); 
String dwrSessionId = scriptSession.getId(); 
LOGGER.info(String.format("set jsessionId = [%s],dwrsession = [%s] push enabled",jsessionId,dwrSessionId)); 
ConstantCacheService.putCacheConstant(Constants.PUSH_ID+jsessionId, dwrSessionId);

            Service  :

@Service("dwrReverseAjaxService")
public class DwrReverseAjaxService {
private static final Logger LOGGER = LoggerFactory.getLogger(DwrReverseAjaxService.class);
public void directWebRemotingWithSession(HttpSession session, final String functionName) 
{Assert.notNull(session, "[Dwr Reverse Ajax] Session can not be null!");
final String scriptSessionId = ConstantCacheService.getCacheConstantValue(Constants.PUSH_ID + session.getId());
LOGGER.info("[DWR Session ID] = " + scriptSessionId + " [Script Function Name] = " + functionName);Browser.withSession(scriptSessionId, new Runnable() {
public void run() {ScriptSessions.addFunctionCall(functionName, "");
}});}}

このサービスはscriptSessionIdを利用して逆位置決めプッシュを行い、このscriptSessionIdは私たちの前のページがロードされたばかりで保存されたグローバルなMapペアを利用しています.
次に、いつ呼び出したいか登録されたこのService beanを使用すればいいです.入力されたパラメータはHttpSessionと呼び出したいフロントエンドJs funciton nameです.同時に、現在のページにこのJs functionが存在し、一般的にはホームページのJsの中のメソッドがアクセスされます.そうしないと、フロントエンドはこのメソッドの未定義のエラーを提示します.
以上、Dwrの簡単なアプリについてですが、初めて使うので、何か間違いがあったら、ご指摘ください.感謝の気持ちでいっぱいです.おかみさんが漂ってください~~~~~;