DWR完成推送需要哪些依赖?

本文详细介绍了构建推送系统所需的web.xml配置、dwr.xml配置及关键注意事项,包括使用DWR实现WebSocket式推送,利用Hibernate与Maven构建推送功能,并解决相关依赖冲突。重点突出了如何配置和优化系统以实现高效、稳定的实时消息推送。
构建一个推送的步骤:

一、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等。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值