dwr 反转 轮询以及后台调用前台js方法

web.xml


		dwr-invoker
		com.wxl.app.service.MyDwrServlet
		
			debug
			true
		
		
			logLevel
			DEBUG
		
		
			activeReverseAjaxEnabled
			true
		
		
			org.directwebremoting.extend.ServerLoadMonitor
			org.directwebremoting.impl.PollingServerLoadMonitor
		
		
			disconnectedTime
			1000
		
	
	
		dwr-invoker
		/dwr/*
	

配置轮询参数,activeReverseAjaxEnabled设置反转,PollingServerLoadMonitor是使用轮询,disconnectedTime是轮询的时间周期

dwr.xml

 

	
		
		
			
		
		
			
		
		
			
		
	

java

package com.wxl.app.service;

import org.directwebremoting.Browser;
import org.directwebremoting.ScriptBuffer;
import org.directwebremoting.ScriptSessions;

public class MessageService {
	public void sendMessage(String message) {
		final ScriptBuffer script = new ScriptBuffer();
		script.appendCall("show", message);
		Browser.withCurrentPage(new Runnable() {
			public void run() {
				ScriptSessions.addScript(script);
			}
		});
	}
}
Browser.withCurrentPage()方法会把当前页面的所有ScriptSession绑定到当前线程。在run方法中的ScriptSessions是之前绑定到线程的sessions。

jsp


<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%
	String path = request.getContextPath();
	String basePath = request.getScheme() + "://"
			+ request.getServerName() + ":" + request.getServerPort()
			+ path + "/";
%>



	
		

		My JSP 'reverse.jsp' starting page

		
		
		
		
		
		
		
		
			
		
	

	
		This is my JSP page.
		
		
		

注意要调用
dwr.engine.setActiveReverseAjax(true);
以及

dwr.engine.setNotifyServerOnPageUnload(true);

关于dwr 反转的几个重要类:

WebContextFactory get()方法返回WebContext

WebContext的几个重要方法



ServerContextFactory get()方法返回ServerContext

ServerContext的几个方法

getContainer()方法返回Container

Container的几个方法

Browser的几个方法

ScriptSessions的几个方法

Util的几个方法


你可能感兴趣的:(dwr)