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

 更新时间:2016年04月28日 10:04:34   作者:源-代码  
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配置文件中如下所示:

<!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来说道理一样,这里就不多做说明了;

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


相关文章

  • 浅谈Java8对字符串连接的改进正确姿势

    浅谈Java8对字符串连接的改进正确姿势

    这篇文章主要介绍了Java8:对字符串连接的改进,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-10-10
  • SpringBoot与单元测试JUnit的结合操作

    SpringBoot与单元测试JUnit的结合操作

    这篇文章主要介绍了SpringBoot与单元测试JUnit的结合操作,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-10-10
  • idea中acitviti使用acitBPM插件出现乱码问题及解决方法

    idea中acitviti使用acitBPM插件出现乱码问题及解决方法

    这篇文章主要介绍了idea中acitviti使用acitBPM插件出现乱码问题及解决方法,通过将File Encodings内容设置为UTF-8,本文通过图文展示,需要的朋友可以参考下
    2021-06-06
  • SpringSecurity实现访问控制url匹配

    SpringSecurity实现访问控制url匹配

    本文主要介绍了SpringSecurity实现访问控制url匹配,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-08-08
  • ssm整合shiro使用详解

    ssm整合shiro使用详解

    这篇文章主要介绍了ssm整合shiro使用详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-04-04
  • Java实现的各种排序算法(插入排序、选择排序算法、冒泡排序算法)

    Java实现的各种排序算法(插入排序、选择排序算法、冒泡排序算法)

    本文是小编给大家带来的java各种排序算法知识,包括插入排序、选择排序算法、冒泡排序算法,代码简单易懂,需要的朋友可以参考下
    2016-08-08
  • IDEA 当前在线人数和历史访问量的示例代码

    IDEA 当前在线人数和历史访问量的示例代码

    这篇文章主要介绍了IDEA 当前在线人数和历史访问量的实例代码,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-08-08
  • Jmeter如何基于命令行运行jmx脚本

    Jmeter如何基于命令行运行jmx脚本

    这篇文章主要介绍了Jmeter如何基于命令行运行jmx脚本,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-07-07
  • spring boot 自定义starter的实现教程

    spring boot 自定义starter的实现教程

    下面小编就为大家分享一篇spring boot 自定义starter的实现教程,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2017-12-12
  • 这么优雅的Java ORM没见过吧!

    这么优雅的Java ORM没见过吧!

    这篇文章主要介绍了Java ORM的相关资料,帮助大家更好的理解和使用Java,感兴趣的朋友可以了解下
    2021-01-01

最新评论