Creators 用于实例化服务端的远程对象。
Filters 用于拦截对远程对象的调用。这可以发生在调用之前与之后。这可以用于 日志、安全、参数检查,甚至对DWR调用增加额外的延迟。
public class NotifyRestrictedAccessFilter {
public Object doFilter(Object obj, Method method, Object[] params, AjaxFilterChain chain) throws Exception {
//if params include monitored sentence
//then send mail to security officials
… code here …
return chain.doFilter(obj, method, params);
}
}
dwr.xml 中的配置:
<allow>
<create creator="new" javascript="GetAreaDetails">
<param name="class" value="org.area.NumberedArea"/>
<filter class="org.filters.NotifyRestrictedAccessFilter"/>
</create>
...
</allow>
dwr.xml 中 指定了 Signatures,它们被用来告诉DWR正确地处理集合框架中的那些类型,例如 java.util.List。如果我们有一个远程方法,它的签名是 void setAddresses(List address),DWR是没有办法知道List中的元素类型是String的,所以,这是就需要在dwr.xml中加上这么一句:
<signatures>
<![CDATA[
import java.util.List;
import myclasses.AllAddresses;
AllAddresses.setAddresses(List<String> allAddresses);
]]>
</signatures>