Dwr3.0纯注解(纯Java Code配置)配置与应用浅析一之零配置文件化

//Annotation configuration dwr servlet
	private void initializeDwrServlet(ServletContext container) {
		DwrServlet dwrServlet = new DwrServlet();
		ServletRegistration.Dynamic dynamic = container.addServlet("dwr-invoker", dwrServlet                );
		dynamic.setLoadOnStartup(2);
		dynamic.setInitParameter("debug", "true");
		dynamic.setInitParameter("pollAndCometEnabled", "true");
		dynamic.setInitParameter("activeReverseAjaxEnabled", "true");
		dynamic.setInitParameter("maxWaitAfterWrite", "1800000");
		dynamic.setInitParameter("disconnectedTime", "60000");
		dynamic.setInitParameter("classes", dwrAnnotationClasssConfiguration());
		dynamic.addMapping("/dwr/*");
	}
	
	// Configure Dwr Annotation Classes,comma separated
	private String dwrAnnotationClasssConfiguration() {
		StringBuffer config = new StringBuffer();
		config.append("com.g360.bean.reconsole.opcost.AnnualOpCostRequestController");
		config.append(",");
		config.append("com.g360.bean.security.SessionExpiredParam");
		return config.toString();
	}

上面个人配置是基于注解版的Dwr Servlet配置(将web.xml里面的servlet配置转换为了纯Java代码配置),固然也包括前端和后端直接交互的类(javascript

com.g360.bean.reconsole.opcost.AnnualOpCostRequestController,com.g360.bean.security.SessionExpiredParam
前端

)也是使用注解配置的(Dwr注解配置,包括@RemoteProxy,@RemoteMethod),这对于有些注解配置基础的同窗来讲可能比较容易看懂,对于初次接触的有什么不懂的能够给我留言哦;
java

com.g360.bean.security.SessionExpiredParam的注解配置以下所示:web

@Component("sessionExpiredParam")
@RemoteProxy(creator = SpringCreator.class, scope = ScriptScope.APPLICATION, name = "remote", creatorParams = @Param(name = "beanName", value = "sessionExpiredParam")) 
public class SessionExpiredParam
{
  
  private static final Logger LOGGER = LoggerFactory.getLogger(SessionExpiredParam.class);
  
  public boolean isSessionExpire (String sessionId)
  {
    return null == ConstantCacheService.getCacheConstant(sessionId);
  }
  
  @RemoteMethod
  public void setEnableDwrUpdate(String sessionId)
  { 
    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);
  }
  
}

这就是至关于dwr.xml配置文件中以下所示:后端

<!DOCTYPE dwr PUBLIC
    "-//GetAhead Limited//DTD Direct Web Remoting 3.0//EN"
    "http://getahead.org/dwr/dwr30.dtd">

<dwr>
  <allow>
    <create creator="new" javascript="remote" scope="application">
       <param name="class" value="com.g360.bean.security.SessionExpiredParam"/> 
    </create>  
  </allow>
</dwr>

对于com.g360.bean.reconsole.opcost.AnnualOpCostRequestController来讲道理同样,这里就很少作说明了;session

对于使用DwrServlet来讲要使用纯注解配置(不使用dwr.xml)必定要注意在初始化参数时必定要配置 classes这个参数,并且这个参数是这个注解类的全路径名,有多个的话就使用逗号分隔,这个是特别重要的哦,由于Dwr3.0好像还不支持包扫描,不知道是须要什么配置才能实现仍是怎么的,若是有哪位仁兄正好看见,也正好知道的话请留言麻烦告诉一下,感激涕零啊!欢迎你们有什么不明白的地方或者有什么不对的地方,请随时留言;
app

相关文章
相关标签/搜索