构建一个推送的步骤:
一、web.xml的配置:
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE web-app
PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
"http://java.sun.com/dtd/web-app_2_3.dtd">
<web-app>
<servlet>
<servlet-name>dwr-invoker</servlet-name>
<servlet-class>org.directwebremoting.servlet.DwrServlet</servlet-class>
<!-- 防止DWR CSRF Security Error 添加参数crossDomainSessionSecurity和allowScriptTagRemoting-->
<init-param>
<param-name>crossDomainSessionSecurity</param-name>
<param-value>false</param-value>
</init-param>
<init-param>
<param-name>allowScriptTagRemoting</param-name>
<param-value>true</param-value>
</init-param>
<!-- Comet方式 -->
<init-param>
<param-name>activeReverseAjaxEnabled</param-name>
<param-value>true</param-value>
</init-param>
<init-param>
<!-- 通知DWR 在应用程序启动时初始化 ReverseAjaxTracker 见配置dwr.xml -->
<param-name>initApplicationScopeCreatorsAtStartup</param-name>
<param-value>true</param-value>
</init-param>
<init-param>
<param-name>debug</param-name>
<param-value>true</param-value>
</init-param>
<!-- 激活json/jsonp服务 -->
<init-param>
<param-name>jsonpEnabled</param-name>
<param-value>true</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>dwr-invoker</servlet-name>
<url-pattern>/dwr/*</url-pattern>
</servlet-mapping>
</web-app>
二、dwr.xml配置
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE dwr PUBLIC "-//GetAhead Limited//DTD Direct Web Remoting 3.0//EN" "http://getahead.org/dwr/dwr20.dtd">
<dwr>
<allow>
<!-- 声明为 application级别的只能有一个配置如下的要首先启动的类,如果有第二个将覆盖前一个 -->
<create creator="new" javascript="Comet" scope="application">
<param name="class" value="要首先启动的包名.类名"/>
</create>
<convert converter="bean" match="com.nwd.bean.Position"/>
<convert converter="bean" match="com.nwd.bean.AbstractEntity"/>
</allow>
<!-- 这里映射DWR与脚本的对应类型,可以查看源码dwr中放置了很多类型 -->
<signatures>
<![CDATA[
import java.util.List;
Comet.selectCar(List<String> tids);
]]>
</signatures>
</dwr>
三、要首先启动的包名.类名,这个就是一般的类就可以了。
关键是这里需要定时器,定时遍历scriptsession往浏览器写出信息。
四、如果需要利用Hibernate,尤其要注意包不能多,包多了就会出现org.hibernate.MappingException: An AnnotationConfiguration instance is required to use <mapping class="" />,以及另外一个错误Duplicate Mapping,这个并不是你将Configure改为AnnotationConfigure就能正确的,所以依赖包一定不要多。
利用Maven构建时,我只在pom.xml中配置了以下几个依赖包即可应用推送+Hibernate:
org.hibernate (hibernate-entitymanager.3.6.5.Final.jar)
org.directwebremoting (dwr.3.0.M1.jar)
commons-lang (commons-lang.2.6.jar)
commons-logging (commons-logging.1.1.1.jar)
jetty (servlet-api.2.5-6.02 .jar)
javax.transaction (jta.1.1.jar)
其他依赖包是靠这些配置的依赖包得来的,查看工程下的目录Maven Dependencies可以看到其他包如log4j等。
分享到:
相关推荐
本实例主要关注DWR的消息推送功能,这在创建实时更新的应用如聊天室、股票报价或在线游戏等场景中非常有用。 1. **DWR框架概述** DWR框架的核心是将Java对象暴露给JavaScript,使得前端可以像操作本地对象一样操作...
总的来说,结合DWR和Spring,我们可以构建出一个高效、可扩展的消息推送系统,使得Web应用能够实时地与用户互动,提升用户体验。在实际项目中,还需要考虑安全性、错误处理、性能监控等方面,确保系统的稳定性和可靠...
Direct Web Remoting (DWR) 是一个开源的Java库,它允许JavaScript在浏览器和服务器之间进行...通过理解并实践这个例子,你可以更好地掌握DWR的使用,以及如何在不依赖积分系统的情况下实现服务器到客户端的数据推送。
在实现DWR消息推送时,开发者需要注意以下几点: 1. **配置DWR**:首先,需要在Web应用的`dwr.xml`配置文件中声明允许的远程方法,以便JavaScript可以调用。 2. **创建Java端接口**:定义一个Java接口,包含需要被...
传统的Ajax技术通常依赖于浏览器发起请求,而DWR则允许服务器主动向客户端推送数据,无需等待用户的操作。这种特性使得DWR在实时应用如聊天、股票报价、在线游戏等场景中非常有用。 **消息推送原理** 消息推送的...
这份PPT可以作为深入理解DWR推送技术的补充资料。 另外,`DWR推技术在开发中需要注意的ScriptSession问题 - zhyiwww - BlogJava.mht`文件可能包含了开发者在实际开发过程中遇到的一个常见问题——ScriptSession。...
- **Reverse Ajax**:DWR支持真正的服务器推送,即当服务器有新数据时,会主动推送到客户端,而不需要客户端发起请求。这通常是通过HTTP长连接或WebSocket实现的。 - ** Comet**:DWR也支持Comet技术,这是一种模拟...
总结来说,DWR推技术是实现服务器主动向客户端推送数据的一种高效方式,尤其适用于需要实时数据更新的应用,如股票实时显示。通过反转Ajax,DWR简化了开发流程,提高了用户体验,是现代Web开发中的一个重要工具。
1. **DWR配置**:为了启用Push功能,需要在DWR的配置文件(通常是dwr.xml)中声明允许推送的Java类和方法。这样,这些方法可以直接被JavaScript调用,并且可以被DWR用于推送数据。 2. **服务器端代码**:在Java代码...
通过上述步骤,我们就完成了基于DWR和Spring的服务器主动推送示例。在实际应用中,可能还需要考虑安全性、性能优化等问题,比如限制访问权限、使用异步处理、缓存策略等。在DWRTest1.0这个压缩包中,应该包含了上述...
需要注意的是,虽然DWR3已经是一个较老的框架,但其核心思想——Web上的远程调用和实时推送,仍然是现代Web开发中的重要技术。在实际项目中,开发者可能会选择更新的技术,如WebSockets或者Server-Sent Events (SSE)...
当有新的消息需要推送时,服务器会根据这些信息找到对应用户,并通过DWR的推送机制将消息发送到客户端。 7. **客户端接收**:在JavaScript中设置事件监听器,以便接收到服务器推送的消息后执行相应的处理逻辑,如弹...
DWR的核心特性之一就是反向推送技术,也称为服务器推送,它允许服务器主动将数据推送到客户端,而不仅仅是响应用户的请求。 **反向推送(Reverse Ajax)** 反向推送是相对于传统Ajax请求的一种概念,传统Ajax是...
本项目结合了Spring MVC和Direct Web Remoting (DWR)框架,利用注解的方式实现了一种高效的消息推送机制,支持对单个用户进行精确推送以及向指定成员或群组发送消息。无需额外的配置修改,极大地简化了开发流程。 ...
DWR的推送功能使得开发者能够创建更动态、响应更快的用户体验,而无需过度依赖WebSocket或轮询等其他复杂的技术。通过这个简单的例子,你可以逐步掌握这一强大的工具,并将其应用到自己的项目中。
6. **维持会话状态**:为了确保在用户浏览不同页面时仍能接收到推送,需要使用DWR的`scriptSession`来保持连接,并在页面间传递会话信息。每次页面加载或刷新时,需要重新初始化`scriptSession`。 7. **实现推送...
使用DWR进行Comet推送数据时,首先需要在项目中集成DWR库。`pom.xml`文件通常会包含DWR的依赖项,例如: ```xml <groupId>org.directwebremoting <artifactId>dwr 版本号 ``` 接下来,我们需要配置DWR的`dwr....
在"**DWR推送功能实现实例(前段,后台函数互调)**"中,我们将深入探讨如何利用DWR来实现实时的双向通信。 **DWR的基本原理**: DWR的核心是通过动态生成JavaScript库,使JavaScript可以直接调用Java对象的方法。...
通常,一个简单的DWR推送示例会包括以下组件: 1. **DWR Engine**:这是DWR的核心组件,负责处理JavaScript与Java之间的通信。在服务器端,你需要在web.xml中配置DWR Engine,指定允许访问的类和方法。 2. **...
DWR的推技术是其核心特性之一,允许服务器主动向客户端推送数据,而不仅仅依赖于传统的HTTP请求-响应模型。 标题中的“dwr推技术官方实例”是指DWR提供的关于其推技术的实际操作示例,这些示例可能涵盖了DWR 2.0.4...