一、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等。 原文链接:https://www.f2er.com/ajax/166575.html