org.directwebremoting.servlet.DwrServlet

 org.directwebremoting.servlet.DwrServlet的相关的配置说明

 

1)  官网下载相关的jar包,dwr.jar

2)  在web.xml中进行配置

<!-- dwr -->

<servlet>

       <servlet-name>dwr-invoker</servlet-name>

       <servlet-class>org.directwebremoting.servlet.DwrServlet</servlet-  class>

       <init-param>  

            <param-name>crossDomainSessionSecurity</param-name>  

            <param-value>false</param-value>  

       </init-param>

    </servlet>

    <servlet-mapping>

<servlet-name>dwr-invoker</servlet-name>

       <url-pattern>/dwr/*</url-pattern>

    </servlet-mapping>

对其中的参数crossDomainSessionSecurity  允许进行跨域的访问,默认是false的,因为这样的话会导致一些风险

 

安全参数

 

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攻击)

 

 

Ajax服务器加载时保护参数

 

pollAndCometEnabled

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

 

maxWaitingThreads   
开始版本:2.0 
默认值:100 
描述:最大等待线程数量。   
 
preStreamWaitTime   
开始版本:2.0 
默认值:29000(单位:毫秒) 
描述:对一个打开流前的反应,等待的最大时间。
 
postStreamWaitTime   
开始版本:2.0 
默认值:1000(单位:毫秒) 
描述:对一个打开流后的反应,等待的最大时间。

 

其他参数

 

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标签。

3)  在WEB-INF下面配置dwr.xml文件

<?xml version="1.0"encoding="UTF-8"?>

<!DOCTYPE dwr PUBLIC "-//GetAheadLimited//DTD Direct Web Remoting 2.0//EN""http://getahead.org/dwr/dwr20.dtd">

<dwr>

    <init>

 

    </init>

    <allow>

       /////////如下可以建立多个

        ///// staffsService 我们指定这个调用的js的名称,对应的方法在那个类中

       <createcreator="new" javascript="staffsService">

        <param name=”class”

value=”cn.com.inxite.web.controller.StaffsController”>

</create>

          

        /////当然下面的我们也可以进行配置多个

       <!--以下为向javaScript公布的java类 此处以下类型转换 -->

          <convert converter="bean"

           match="cn.com.inxite.kernel.entity.Staffs"/>

    </allow>

</dwr>

 

3)  Jsp 界面的调用

       <script type='text/javascript'

     src='<%=request.getContextPath()%>/dwr/interface/getTzgw.js'>

     </script>

    <script type='text/javascript'

    src='<%=request.getContextPath()%>/dwr/engine.js'></script>

    <script type='text/javascript'

     src='<%=request.getContextPath()%>/dwr/util.js'></script>

 

如上需要导入上面的三个js,对于 getTzgw.js其中,getTzgw 是我们在dwr中需要进行配置的,名称要一致。这样在我们的js中我们就可以调用了例如:

function objFunc(obj){

       if(obj==null || obj==''){

           return false;

       }

       getTzgw.method(obj,callbackChangeTzgw);

}

 FunctioncallbackChangeTzgw(data){

 /////可以根据data的返回类型进行相应的处理

/////或者进行其他的操作,这里也可以在调用其他的dwr的情况再进行异步调用

////该函数为回调函数

}

 

///////当然我们也可以这么写,对于那些在objFunc方法总得局部变量可能没法

//////传递的情况

function objFunc(obj){

       if(obj==null || obj==''){

           return false;

       }

       getTzgw.method(obj,functioncallback(data){

           //////在这里可以进行处理

});

}

 

 

按照你的方法配置后报错SEVERE: Servlet threw load() exception java.io.IOException: Missing config file: '/WEB-INF/dwr.xml' at org.directwebremoting.impl.DwrXmlConfigurator.setServletResourceName(DwrXmlConfigurator.java:78) at org.directwebremoting.impl.StartupUtil.configureFromDefaultDwrXml(StartupUtil.java:616) at org.directwebremoting.impl.StartupUtil.configureContainerFully(StartupUtil.java:730) at org.directwebremoting.servlet.DwrServlet.configureContainer(DwrServlet.java:113) at org.directwebremoting.servlet.DwrServlet.init(DwrServlet.java:72) at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1173) at org.apache.catalina.core.StandardWrapper.load(StandardWrapper.java:993) at org.apache.catalina.core.StandardContext.loadOnStartup(StandardContext.java:4149) at org.apache.catalina.core.StandardContext.start(StandardContext.java:4458) at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:791) at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:771) at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:526) at org.apache.catalina.startup.HostConfig.deployDirectory(HostConfig.java:987) at org.apache.catalina.startup.HostConfig.deployDirectories(HostConfig.java:909) at org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:495) at org.apache.catalina.startup.HostConfig.start(HostConfig.java:1206) at org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:314) at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:119) at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1053) at org.apache.catalina.core.StandardHost.start(StandardHost.java:722) at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1045) at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:443) at org.apache.catalina.core.StandardService.start(StandardService.java:516) at org.apache.catalina.core.StandardServer.start(StandardServer.java:710) at org.apache.catalina.startup.Catalina.start(Catalina.java:583) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:606) at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:288) at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:413)
最新发布
11-12
<?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" version="3.0"> <display-name></display-name> <context-param> <param-name>contextConfigLocation</param-name> <param-value> classpath*:applicationContext*.xml classpath*:*Context.xml </param-value> </context-param> <context-param> <param-name>webAppRootKey</param-name> <param-value>rms.root</param-value> </context-param> <context-param> <param-name>log4jConfigLocation</param-name> <param-value>/WEB-INF/classes/log4j.properties</param-value> </context-param> <context-param> <param-name>log4jRefreshInterval</param-name> <param-value>60</param-value> </context-param> <listener> <listener-class>org.springframework.web.util.Log4jConfigListener</listener-class> </listener> <listener> <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> </listener> <listener> <listener-class>com.hg.filter.UrlAuthListen</listener-class> </listener> <listener> <listener-class>com.hg.filter.WebConfigListener</listener-class> </listener> <filter> <filter-name>openSessionInViewFilter</filter-name> <filter-class>org.springframework.orm.hibernate4.support.OpenSessionInViewFilter </filter-class> <init-param> <param-name>singleSession</param-name> <param-value>true</param-value> </init-param> </filter> <filter-mapping> <filter-name>openSessionInViewFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> <filter> <filter-name>struts2</filter-name> <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class> </filter> <filter-mapping> <filter-name>struts2</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> <filter> <filter-name>XssFilter</filter-name> <filter-class>com.hg.aop.XssFilter</filter-class> </filter> <filter-mapping> <filter-name>XssFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> <!-- dwr 配置 --> <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>activeReverseAjaxEnabled</param-name> <param-value>true</param-value> </init-param> <init-param> <param-name>crossDomainSessionSecurity</param-name> <param-value>false</param-value> </init-param> <init-param> <description>How quickly do scriptSessions timeout?</description> <param-name>scriptSessionTimeout</param-name> <param-value>1800000</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> <listener> <listener-class>org.directwebremoting.servlet.EfficientShutdownServletContextAttributeListener</listener-class> </listener> <!-- dwr 配置 --> <welcome-file-list> <welcome-file>index.jsp</welcome-file> </welcome-file-list> </web-app>具体解释一下web.xml的配置
07-08
[root@yfw ~]# cd /opt/openfire [root@yfw openfire]# # 回到临时目录 [root@yfw openfire]# cd /tmp [root@yfw tmp]# [root@yfw tmp]# # 下载官方构建版本(示例,需替换为真实 URL) [root@yfw tmp]# wget https://github.com/romanrue/openfire-rest-api-plugin/releases/latest/download/restapi.jar --2025-10-02 22:37:34-- https://github.com/romanrue/openfire-rest-api-plugin/releases/latest/download/restapi.jar Resolving github.com (github.com)... 20.205.243.166 Connecting to github.com (github.com)|20.205.243.166|:443... connected. HTTP request sent, awaiting response... 404 Not Found 2025-10-02 22:37:35 ERROR 404: Not Found. [root@yfw tmp]# [root@yfw tmp]# # 或者如果你有本地构建的 jar [root@yfw tmp]# cp /path/to/your/restAPI-1.11.0-SNAPSHOT.jar restapi.jar cp: cannot stat '/path/to/your/restAPI-1.11.0-SNAPSHOT.jar': No such file or directory [root@yfw tmp]# [root@yfw tmp]# # 部署到 Openfire [root@yfw tmp]# cp restapi.jar /opt/openfire/plugins/restapi.jar cp: cannot stat 'restapi.jar': No such file or directory [root@yfw tmp]# chown openfire:openfire /opt/openfire/plugins/restapi.jar chown: cannot access '/opt/openfire/plugins/restapi.jar': No such file or directory [root@yfw tmp]# chmod 644 /opt/openfire/plugins/restapi.jar chmod: cannot access '/opt/openfire/plugins/restapi.jar': No such file or directory [root@yfw tmp]# systemctl start openfire [root@yfw tmp]# [root@yfw ~]# cd /opt/openfire [root@yfw openfire]# tail -f /opt/openfire/logs/openfire.log 2025.10.02 22:38:40.509 INFO [PluginMonitorTask-2]: org.jivesoftware.openfire.spi.ConnectionListener[component-directTLS] - Started. 2025.10.02 22:38:40.514 INFO [PluginMonitorTask-2]: org.jivesoftware.openfire.spi.ConnectionListener[connection_manager] - Started. 2025.10.02 22:38:40.518 INFO [PluginMonitorTask-2]: org.jivesoftware.openfire.spi.ConnectionListener[connection_manager-directTLS] - Started. 2025.10.02 22:38:40.522 INFO [PluginMonitorTask-2]: org.jivesoftware.openfire.spi.EncryptionArtifactFactory - Creating new SslContextFactory instance 2025.10.02 22:38:40.529 INFO [PluginMonitorTask-2]: org.jivesoftware.openfire.http.HttpSessionManager - Starting instance 2025.10.02 22:38:40.648 INFO [PluginMonitorTask-2]: org.jivesoftware.openfire.http.HttpBindManager - HTTP bind service started 2025.10.02 22:38:41.808 INFO [socket_c2s-thread-2]: org.jivesoftware.util.cache.CacheFactory - Created cache [org.jivesoftware.util.cache.DefaultLocalCacheStrategy] for Locked Out Accounts 2025.10.02 22:38:42.085 INFO [socket_c2s-thread-2]: org.jivesoftware.util.cache.CacheFactory - Created cache [org.jivesoftware.util.cache.DefaultLocalCacheStrategy] for Sequences 2025.10.02 22:39:23.036 INFO [Jetty-QTP-AdminConsole-29]: org.directwebremoting.log.startup - Starting: DwrServlet v3.0.3-dev on jetty/10.0.18 / JDK 11.0.13 from Red Hat, Inc. at 2025.10.02 22:39:23.078 INFO [Jetty-QTP-AdminConsole-29]: org.directwebremoting.log.startup - Starting: Using container abstraction org.directwebremoting.server.servlet3.Servlet30ContainerAbstraction
10-03
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值