`

DWR 一些注意的地方

    博客分类:
  • DWR
阅读更多

在2。0之前,配制文件中的主类用:org.directwebremoting.servlet.DwrServlet

在后面主类用:uk.ltd.getahead.dwr.DWRServlet

 

------------------------------------------------------------------------------------------------------------

启动服务时,如果报如下错。
java.lang.IllegalArgumentException: DefaultContainer can't find a
classes

 

原因是:DWR2.0 加入了JDK5的注释(annotations).DwrServlet 初始化的时候会去检查注释的类,找不到就
抱错了。如果你不用annotations也可以忽略掉这个错误。不过看起来总是不爽。解决方案如下

在配制文件中加入下面的参数

  <init-param>
         <param-name>classes</param-name>
         <param-value>java.lang.Object</param-value>
</init-param>

 

-------------------------------------------------------------------------------------------------------------

 

 配制文件中几个可能用到的参数

scriptSessionTimeout
开始版本:2.0
默认值:1800000(30分钟)
描述:script session 的超时设置

 

maxCallCount
开始版本:2.0rc2 和 1.1.4
默认值:20
描述:一次批量(batch)允许最大的调用数量。(帮助保护Dos攻击)

 

Ajax服务器加载时保护参数

pollAndCometEnabled
开始版本:2.0

默认值:false
描述:设置成true能增加服务器的加载能力,尽管DWR 有保护服务器过载的机制。

 

maxWaitingThreads
开始版本:2.0
默认值:100
描述:最大等待线程数量。

 

preStreamWaitTime
开始版本:2.0
默认值:29000(单位:毫秒)
描述:对一个打开流前的反应,等待的最大时间

 

postStreamWaitTime
开始版本:2.0
默认值:1000(单位:毫秒)
描述:对一个打开流后的反应,等待的最大时间

 

welcomeFiles
开始版本:2.0
默认值:index.html, index.htm, index.jsp
描述:类似于web.xml的<welcome-file-list>标签

 

 

通过添加如下参数,设置debug测试模式  
<init-param>
  <param-name>debug</param-name>
  <param-value>true</param-value>
</init-param>

说明:

在debug模式里,DWR将为每个allow的类(请看下面的dwr.xml配置章节)生成测试页面。这些能变得非
常有用帮助了解DWR能做什么和如何工作。这个模式也能警告你以防止javascript 的保留字,或者重载问
题。
然而这个模式不应该被用在现场部署,因为他能给黑客或者攻击者许多关于服务器的详细信息。

 

-------------------------------------------------------------------------------------------

 

日志配制

 

DWR工作在JDK1.3中不支持java.util.logging,但我们并不强迫任何人都去使用commons-logging 或者
log4j,所以在使用HttpServlet.log()方法时 DWR将正常工作,如果没有日志类的话。然而如果DWR可以
使用,那么它将使用日志。

Commoms-Logging
由于大多数servlet 容器都使用它,几乎每个人都将使用commons-logging。所以如果你的webapp不明确
使用commons-logging,它将被默认设为可以使用。
 
在这些日志将被一些配置文件所约束,比如java.util.logging或者log4j,可以去查看他们各自的文档获得
详情。
 
HttpServlet.log()
如果你正在使用HttpServlet.log(), 以下的代码用来控制DWR日志
 
<init-param>
 <param-name>logLevel</param-name>
 <param-value>DEBUG</param-value>
</init-param>
 
值可以是:FATAL,ERROR,WARN(默认),INFO,DEBUG

 

-------------------------------------------------------------------------------------------------------------------

 

一般工程中要写一个 dwr.xml文件,并且会被设为默认位置WEB-INF/dwr.xml。所以你不需要配置。

有3个原因说明你为何需要指定不同位置的dwr.xml文件:

1。 你想保持dwr.xml的文件请参照下面的例子
<param-value>WEB-INF/classes/com/yourco/dwr/dwr.xml</param-value>
2。 你可以有很多的远程方法类并且希望指定文件。在这个例子里将指定不同文件开始配置,不同
的param-name将重复多次 DWR将轮流读取它们。 
3。 DWR能够使J2EE URL具有给与不同用户组不同权限的安全机制。通过起不同名字,URL和权
限。

关于3,下面给出一个例子:

<init-param>
  <param-name>config*****</param-name>
  <param-value>WEB-INF/dwr.xml</param-value>
  <description>What config file do we use?</description>
</init-param>

 

用一个字符串 config  作为开始,设置param-name,每个param-name必须不同。

 

<servlet>
  <servlet-name>dwr-user-invoker</servlet-name>
  <servlet-class>
    org.directwebremoting.servlet.DwrServlet
  </servlet-class>
  <init-param>
    <param-name>config-user</param-name>
    <param-value>WEB-INF/dwr-user.xml</param-value>
  </init-param>
</servlet>
<servlet>
  <servlet-name>dwr-admin-invoker</servlet-name>
  <servlet-class>
    org.directwebremoting.servlet.DwrServlet
  </servlet-class>
  <init-param>
    <param-name>config-admin</param-name>
    <param-value>WEB-INF/dwr-admin.xml</param-value>
  </init-param>
</servlet>

 

<servlet-mapping>
  <servlet-name>dwr-admin-invoker</servlet-name>
  <url-pattern>/dwradmin/*</url-pattern>
</servlet-mapping>
<servlet-mapping>
  <servlet-name>dwr-user-invoker</servlet-name>
  <url-pattern>/dwruser/*</url-pattern>
</servlet-mapping>
 
<security-constraint>
  <display-name>dwr-admin</display-name>
  <web-resource-collection>
 
  <web-resource-name>dwr-admin-collection</web-resource-name>
    <url-pattern>/dwradmin/*</url-pattern>
  </web-resource-collection>
  <auth-constraint>
    <role-name>admin</role-name>
  </auth-constraint>
</security-constraint>
<security-constraint>
  <display-name>dwr-user</display-name>

 

  <web-resource-collection>
    <web-resource-name>dwr-user-collection</web-resource-name>
    <url-pattern>/dwruser/*</url-pattern>
  </web-resource-collection>
  <auth-constraint>
    <role-name>user</role-name>
  </auth-constraint>
</security-constraint>

 

 

---------------------------------------------------------------------------------------------------------------

 

插件配置 

 

 大多数DWR 的功能是可以作为插件的,所以就通过替换默认的类可以改变DWR 的功能。你可以通过包
含<init-param>去覆盖默认的实现。举个例子:

<init-param>
  <param-name>
    org.directwebremoting.extend.ServerLoadMonitor
  </param-name>
  <param-value>com.example.MyCustomServerLoadMonitor</param-value>
</init-param>

 

 

 

 

DWR2.0插件    org.directwebremoting.Container     org.directwebremoting.WebContextFactory.WebContextBuilder     org.directwebremoting.ServerContextFactory.ServerContextBuilder     org.directwebremoting.servlet.UrlProcessor    

org.directwebremoting.extend.AccessControl    

org.directwebremoting.extend.AjaxFilterManager     org.directwebremoting.extend.ConverterManager    

org.directwebremoting.extend.CreatorManager     org.directwebremoting.extend.DebugPageGenerator     org.directwebremoting.extend.HtmlCallMarshaller    

org.directwebremoting.extend.HtmlPollHandler    

org.directwebremoting.extend.PageNormalizer    

org.directwebremoting.extend.PlainCallMarshaller    

org.directwebremoting.extend.PlainPollHandler    

org.directwebremoting.extend.Remoter    

org.directwebremoting.extend.ScriptSessionManager     org.directwebremoting.extend.ServerLoadMonitor 


默认的实现大多数在org.directwebremoting.impl 包,细节是在ContainerUtil.setupDefaults()指定的。

 

 

----------------------------------------------------------------------------------------------------

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

分享到:
评论

相关推荐

    ajax的DWR框架入门例子

    在上面的例子中,`function(response)`就是处理服务器返回数据的地方。 在调试过程中,我们需要注意以下几点: 1. **日志记录**:DWR提供了丰富的日志记录功能,可以帮助我们追踪问题。在开发阶段,开启详细的日志...

    初学dwr时做的一个项目实例(代码全)

    因此,需要注意权限控制,防止未授权的调用,以及防止XSS、CSRF等攻击。 总的来说,这个DWR项目实例是初学者探索远程调用技术的好起点,通过实践可以深入理解DWR的工作机制,为以后的Web开发打下坚实的基础。

    DWR.xml配置文件说明书(含源码)

    这里有两个地方需要注意: 仅仅通过反射方法没有办法知道集合元素中的类型,所以上面的两个converter能将任何集合转换成相对javascript而言有意义的对象.然而没有办法将不同的集合类类型分别采用不同的转换方法.因为...

    dwr官方资料和搜集资料大全

    使用DWR时,需要注意安全问题,比如防止跨站请求伪造(CSRF)和跨站脚本攻击。同时,通过合理配置和优化,可以提高DWR应用的性能,减少不必要的网络通信。 9. **版本升级与社区支持** DWR有持续的版本更新,新...

    DWR+JPA DWR直接访问SERVICE层,并直接处理DAO返回的BEAN.doc

    在本文中,我们将深入探讨如何使用DWR与JPA结合,直接访问SERVICE层并处理DAO返回的BEAN,以及在这样做时需要注意的关键点。 首先,当我们在SERVICE层定义了MANAGER方法后,这些方法通常封装了业务逻辑。通过DWR,...

    推技术实现服务器向jsp页面推动数据

    【推技术实现服务器向jsp页面推动数据】 ...然而,有些场景下我们需要服务器主动向客户端推送...需要注意的是,DWR虽然简化了服务器推送的实现,但在高并发或大规模应用中,可能需要考虑其他更高效的技术,如WebSocket。

    下载与解压项目应用

    此外,还涵盖了Java编程中的一些基础操作,如zip文件解压、创建TXT文件、删除文件夹及文件以及文件重命名。以下将详细阐述这些知识点。 首先,DWR(Direct Web Remoting)是一种允许JavaScript在浏览器端与服务器端...

    struts2+hibernate+spring源码

    Struts2,Spring,Hibernate,DWR,JavaMail,以及少部分正则表达式。其实都是非常基础简单的应用,目的就是让大家看看这些框架是如何协同工作的。开发平台为:Winxp2+JDK1.5+Tomcat5.5+MySQL5.0。 以下是本例子的...

    使用了2年Struts开发项目后的总结

    在我两年的Struts开发经验中,我发现它在处理业务逻辑、控制流程以及与视图层交互方面表现出色,但也有一些挑战和需要注意的地方。 首先,Struts提供了强大的动作调度机制,通过Action类来处理HTTP请求。每个Action...

    绝好的日期控件My97DatePicker3.0.1

    增强日期范围限制 可以使用#year# #month# #day# #lastDay# 如:本月最后一天#year#-#month#-#lastDay# 明年今天(注意有运算的地方,比如+1,必须用{}) : {#year#+1}-#month#-#day# 函数 #F{function} ...

Global site tag (gtag.js) - Google Analytics