微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

Dwr对我来说最重要的功能点就是反向Ajax调用,通俗来将就是后端可以直接调用前端的JS方法(只要在所能访问的范围内),这也就是Dwr的真正来由,当然它也有最基本的前端直接调用后端的特性,省去了我们经常的一般Ajax调用

//Annotation configuration dwr servletprivate 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 separatedprivate 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代码配置),当然也包括前端和后端直接交互的类(

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

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

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

@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配置文件中如下所示:

对于com.g360.bean.reconsole.opcost.AnnualOpCostRequestController来说道理一样,这里就不多做说明了;

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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐