dwr的dwr.xml文件存放问题 持续更新

来源:互联网 发布:巨星知我心txt百度云 编辑:程序博客网 时间:2024/05/17 22:10

初步使用dwr,对很多里面的东西不熟,在写demo的过程中,将dwr.xml文件放在了resource文件下面,导致打包的时候文件被部署到classes文件下面,这样dwr在默认情况下是读取不到的,在网上查询了一下,并看了一下dwr的加载源码,发现dwr默认是在Web容器的WEB-INF下面自动加载dwr.xml文件的,那么是否可以存放其他地方了,答案是当然的。下面是我在网上看到的一些详细的讲解,特此转帖过啦。

转自:http://www.blogjava.net/flyingis/archive/2006/11/18/81898.html


Multiple dwr.xml files and J2EE security

 

Generally speaking you will only need one dwr.xml file and that will be in the default position: WEB-INF/dwr.xml. So you can leave this paramter out.

There are 3 reasons why you might wish to specify a different position for dwr.xml:

 

一般情况下,你只需要一个 dwr.xml 文件,并且保存在默认的位置: WEB-INF/dwr.xml 。因此你可以不用做过多的考虑。但是,有三个原因让你可能将 dwr.xml 放在其它的位置:

 

1. You wish to keep dwr.xml with the files that it gives access to. In which case the section might have a param-value something like <param-value>WEB-INF/classes/com/yourco/dwr/dwr.xml</param-value>.

 

1. 你希望将 dwr.xml 放在可以访问的地方。这种情况下可能会有 param-value 标签,如 <param-value>WEB-INF/classes/com/yourco/dwr/dwr.xml</param-value> 。

 

2. You may have a large number of remoted classes and wish to keep the definitions in separate files. In this case you will have the section above repeated several times each with a different param-name that begins 'config' and each pointing at a different file. DWR will read them all in turn.

 

2. 也许你需要大量的远程类(的方法、属性)在客户端访问,希望将它们分别定义在不同的文件中。这时,你需要将上面的代码片断复制在多处,并在 config 中使用不同的 param-name 指定每个文件。 DWR 将依次读取。

 

3. DWR can use J2EE URL security built into the servlet spec to give different groups of users access to different functions. You simply define more than one dwr servlet by repeating the stanza at the top of the page with different names, urls and permissions.

 

3.DWR 能在指定的 servlet 中使用 J2EE URL 链接的安全机制,使不同的用户组访问不同的方法。你可以在文件的顶部使用不同的名称、 url 链接和许可权限,简单重复 dwr servlet 代码来实现这种安全机制。

 

If you do wish to use it then the syntax is as follows:

 

如果你确实需要使用该安全机制,代码构造如下:

 

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

 

Where config***** means any param-name that begins with the string 'config'. This parameter can be specified as many times as required, however the param-name should be different for each.

 

config***** 代表命名以 'config' 开始的 param-name 。只要保证没有重复的 param-name ,该参数可以根据需要被声明多次。

 

An example configuration to use J2EE servlet security is as follows:

 

下面是基于 J2EE servlet 安全机制的配置示例:

 

<servlet>
<servlet-name>dwr-user-invoker</servlet-name>
<servlet-class>uk.ltd.getahead.dwr.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>uk.ltd.getahead.dwr.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>

同时在写demo的时候,我发现,把dwr.xml文件放到class目录或者和spring资源文件一起放的其他路径,而不是WEB-INF下时,不管是绝对路径还是使用classpath:都不行,具体原因还不知道为啥。

原创粉丝点击