DWR中文文檔v0.9 03

第2章. web.xml配置
2.1 主要配置
要加入到你的web.xml最少的代碼就是簡單地去申明DWR servlet,沒有它DWR就不起作用。

<servlet> 
<servlet-name>dwr-invoker</servlet-name> 
<servlet-class>org.directwebremoting.servlet.DwrServlet</servlet-class>
 </servlet>
 <servlet-mapping>
 <servlet-name>dwr-invoker</servlet-name>
 <url-pattern>/dwr/*</url-pattern>
 </servlet-mapping>

 在DWR2.x裏,DwrServlets是類org.directwebremoting.servlet.DwrServlet ,儘管uk.ltd.getahead.dwr.DWRServlet仍然可以用。在DWR 1.x你不得不使用後者。 有些額外的servlet參數,在有些地方很重要。尤其debug參數 這個擴展DWR的標準結構是使用<init-params>。放在<servlet>內,就像如下使用

<servlet> 
<servlet-name>dwr-invoker</servlet-name> 
<servlet-class>org.directwebremoting.servlet.DwrServlet</servlet-class> <init-param> 
<param-name>debug</param-name> 
<param-value>true</param-value> 
</init-param>
 </servlet>

 另外,啓動服務時,如果報如下錯。

java.lang.IllegalArgumentException: DefaultContainer can't find a classes

 是DWR2.0 加入了JDK5的註釋(annotations).DwrServlet初始化的時候會去檢查註釋的類,找不到就抱錯了。如果你不用annotations也可以忽略掉這個錯誤。不過看起來總是不爽。解決方案如下

<servlet> 
<servlet-name>dwr-invoker</servlet-name> 
<servlet-class>org.directwebremoting.servlet.DwrServlet</servlet-class> <init-param>
 <param-name>debug</param-name> 
<param-value>true</param-value>
 </init-param> 
<init-param>
 <param-name>classes</param-name>
 <param-value>java.lang.Object</param-value> 
</init-param>
 </servlet>

 

 2.2 常用<init-param>參數列表
2.2.1 安全參數


allowGetForSafariButMakeForgeryEasier

開始版本:2.0 默認值:false 描述:設置成true使DWR工作在Safari 1.x , 會稍微降低安全性。


crossDomainSessionSecurity

開始版本:2.0 默認值:true
描述:設置成false使能夠從其他域進行請求。注意,這樣做會在安全性上有點冒險,參考一下這篇文章,在沒有理解這個後果前不要設置成爲false。


debug

開始版本:1.0 默認值:false 描述:設置成true使DWR能夠debug和進入測試頁面

scriptSessionTimeout

開始版本:2.0 默認值:1800000(30分鐘) 描述:script session 的超時設置

maxCallCount

開始版本:2.0rc2 和 1.1.4 默認值:20 描述:一次批量(batch)允許最大的調用數量。(幫助保護Dos攻擊)


2.2.2 Ajax服務器加載時保護參數


pollAndCometEnabled

開始版本:2.0
默認值:false 描述:設置成true能增加服務器的加載能力,儘管DWR有保護服務器過載的機制。 maxWaitingThreads

開始版本:2.0 默認值:100 描述:最大等待線程數量。

preStreamWaitTime

開始版本:2.0 默認值:29000(單位:毫秒) 描述:對一個打開流前的反應,等待的最大時間

postStreamWaitTime

開始版本:2.0 默認值:1000(單位:毫秒) 描述:對一個打開流後的反應,等待的最大時間

2.2.3 其他參數


ignoreLastModified

開始版本:2.0 默認值:false 描述:默認值支持最後修改,這樣就允許服務器端對客戶端請求較少資源。設置爲true就能屏蔽支持。

scriptCompressed

開始版本:1.1 默認值:false
描述:DWR能夠執行簡單的壓縮,設置爲true可以激活此功能。另外還有一個未公開的有關係的重要參數“compressionLevel”,此參數允許你配置壓縮類型。查看這裏得到更多詳細資料。

 sessionCookieName

開始版本:2.0 默認值:JSESSIONID 描述:DWR通過檢查文檔和提取當前session ID支持URL重寫。一些servlet引擎使用非標準的cookie名。參數允許你改變默認值。

welcomeFiles

開始版本:2.0 默認值:index.html, index.htm, index.jsp 描述:類似於web.xml的<welcome-file-list>標籤

2.3 日誌配置
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
2.4 多個dwr.xml配置和J2EE角色定義
一般來說只需要一個dwr.xml文件,並且會被設爲默認位置WEB-INF/dwr.xml。所以你不需要配置。 有3個原因說明你爲何需要指定不同位置的dwr.xml文件:
 你想保持dwr.xml的文件請參照下面的例子

<param-value>WEB-INF/classes/com/yourco/dwr/dwr.xml</param-value>

 

 你可以有很多的遠程方法類並且希望指定文件。在這個例子裏將指定不同文件開始配置,不同的param-name將重複多次DWR將輪流讀取它們。
 DWR能夠使J2EE URL具有給與不同用戶組不同權限的安全機制。通過起不同名字,URL和權限。
就像如下例子去使用

<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>

 

2.5 插件配置
大多數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()指定的。

DWR1.1插件
 uk.ltd.getahead.dwr.AccessControl
 uk.ltd.getahead.dwr.Configuration
 uk.ltd.getahead.dwr.ConverterManager
 uk.ltd.getahead.dwr.CreatorManager
 uk.ltd.getahead.dwr.Processor
 uk.ltd.getahead.dwr.ExecutionContext
默認的實現大多數在uk.ltd.getahead.dwr.impl包

2.6 測試模式配置
通過添加如下參數,設置debug測試模式

<init-param> 
<param-name>debug</param-name>
 <param-value>true</param-value>
 </init-param>

 

在debug模式裏,DWR將爲每個allow的類(請看下面的dwr.xml配置章節)生成測試頁面。這些能變得非常有用幫助瞭解DWR能做什麼和如何工作。這個模式也能警告你以防止javascript的保留字,或者重載問題。 然而這個模式不應該被用在現場部署,因爲他能給黑客或者攻擊者許多關於服務器的詳細信息。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章