一个机器上运行两个tomcat
一.
在一台计算机上配置2个tomcat是可以的,关键是tomcat里的server.xml文件中三个端口必须不同。需要修改conf/server.xml使两个tomcat占用的端口不相同,在缺省配置的情况下,tomcat使用了三个端口:
shutdown端口: <Server port="8005" shutdown="SHUTDOWN">
http端口:<Connector port="8080" maxHttpHeaderSize="8192" maxThreads="150" minSpareThreads="25" maxSpareThreads="75" enableLookups="false" redirectPort="8443" acceptCount="100" connectionTimeout="20000" disableUploadTimeout="true" />
AJP端口:<Connector port="8009" enableLookups="false" redirectPort="8443" protocol="AJP/1.3" /> 这样,不仅两个tomcat里的应用不会互相影响,而且两个tomcat程序也可以分别升级。
但同时运行2个tomcat时,可能出现一个异常:
java.net.BindException: Address already in use: JVM_Bind
at java.net.PlainSocketImpl.socketBind(Native Method)
这是需要在进程中kill掉javaw.exe
二.Dwr总结
DWR的配置说明,网上已经是N多了,所以具体的配置这里不再讲了,不过有一点还得说明一下,关于DWR1.1.3升级到DWR2.0时配置中有二个地方得修改:
1、DWRServlet的包名有所改变,应该将uk.ltd.getahead.dwr.DWRServlet改成org.directwebremoting.servlet.DwrServlet
2、增加一个初始化参数(不加时报这个异常★java.lang.IllegalArgumentException: DefaultContainer can't find a classes,原因DWR2.0 加入了JDK5的注释(annotations).DwrServlet初始化的时候会去检查注释的类)
Java代码
<init-param >
<param-name>classes </param-name>
<param-value>java.lang.Object</param-value>
</init-param>
<load-on-startup>100</load-on-startup>
另外提醒一下,在开发过程中要将debug设成true会受益不小,接下来的内容中会讲到。
当所有的配置完成之后,我们在浏览器地址栏上输http://localhost:8080/<context>/dwr/就可以进入调式页面,上面有写到怎样在页面应用中布置,还可以看到你在DWR.xml文件中定义的对象,并允许你运行服务器上对象的方法进行测试。
页面应用:
将DWR应用到页面的时候,初学者经常会遇到这样的问题,明明将DWRUtil.js导进来了,使用时浏览器报对象错误,原因是引用的路径错了,举DWRUtil.js的例子,正确的路径是在<context>/dwr/DWRUtil.js,你可以在调试页面中找到正确路径,我在使用的过程中,会在页面<head>标签
内加入下列内容
Java代码
<%
String path = request.getContextPath();
String basePath = request.getScheme() + "://"
+ request.getServerName() + ":" + request.getServerPort()
+ path + "/";
%>
<base href="<%=basePath%>">
这样引用的时候就跟书上写的一样从dwr/DWRUtile.js就可以了。使用自已定义的一些方法最后是在页面被加载完成之后,原因也很简单,当调用方法返回数据操作DOM时,有可能Element还没有被加载到页面,这时就会报错。主要就是初始化数据的时候会遇到这类问题,解用方法也很简单,跟onload事件帮定就可以了,如
Java代码
function init(){
var userId="402881a10eace4c0010eace4cc4a0001";
var typeId="402881a10ebc9a16010ebc9a1cc50001";
DWRUtil.useLoadingImage("images/progressbar_green.gif");
DWRUser.getUserById(userId,doUser);
}
if(window.attachEvent()){//页面加载完成后初始化
window.attachEvent("onload",init);
}else if(window.addEventLister){
window.addEventLister("load",init,false);
}else{
window.onload=init;
}
如果有多个远程访问的方法被调用时可以采用批量调用,以此来减少对服务器的访问次数节省往返服务器的时间,具体的应用举列
Java代码
DWREngine.beginBatch();//批量调用减少对服务器的访问次数
DWRUtil.useLoadingImage("images/progressbar_green.gif");
DWRUser.getUserById(userId,doUser);
DWRArticleType.getTypeByUserId(userId,doArticleTypeList);
DWRArticleComment.getLastCommentByUserId(userId,doArticleLastComment);
DWRArticle.getArticleList(userId,typeId,"1",doArticleList);
DWREngine.endBatch();
一个机器上运行两个tomcat的更多相关文章
- 如何在一台机器上运行2个Tomcat
比如:有两个版本的tomcat,一个5.*,一个6.*,此时由于两个工程分别部署在两个 版本的tomcat下,需要同时启动两个tomcat,以下是方法: 1.特别要注意:不要设置CATALINA_HO ...
- 一台电脑上运行两个tomcat
1.建立两个文件夹,tomcat1,tomcat2,分别在里面放入tomcat7文件(非安装版) 2.改配置 tomcat1中的配置就不用改了,直接用默认配置 tomcat2中的配置要改要,改conf ...
- 一台机器上安装两个tomcat
1.使用压缩版的tomcat不能使用安装版的. 2.第一个tomcat的配置不变. 3.增加环境变量CATALINA_HOME2,值为新的tomcat的地址:增加环境变量CATALINA_BASE ...
- 在同一个机器上运行两个jboss修改配置
http://blog.sina.com.cn/s/blog_8ebe17aa0101mnft.html 解决办法:修改 \jboss-4.0.4.GA\server\default\conf 目录下 ...
- 在一台电脑上运行两个或多个tomcat
在一台电脑上运行多个tomcat 在本例中,使用两个tomcat做示例 工具/原料 tomcat 安装好jdk,并且配置好环境变量 方法/步骤 首先去apache下载一个tomcat, ...
- 解决一台机器同时运行多个Tomcat服务
http://www.cnblogs.com/itolssy/archive/2008/09/09/1278041.html 如果不加任何修改,在一台服务器上同时运行两个Tomcat服务显然会发生端口 ...
- 在没装VS2010的机器上运行VS2010开发的C++程序
在VS2010下写了一个win32控制台应用程序,编译ok.exe,需要依赖osg相关动态库 第一次编译的是Debug版本的,直接将ok.exe和osg相关dll文件拷贝到没有安装VS2010机器上运 ...
- 如何在同一台服务器上部署两个tomcat
因为测试的需要,有时我们必须在同一个服务器上部署两个tomcat,然后去做应用的部署,那么很多同学可能会觉得比较为难,找的资料也比较的不齐全,那么今天华华就来给大家讲讲如何部署2个tomcat,并能够 ...
- VS2010生成的文件在别的机器上运行提示“丢失MSVCR100D.dll”<转>
用vs2010编写的程序经常会发生的一个问题.在自己的机器上运行的好好的,但是在别的机器上就会发生没有找到MSVCR100D.dll.这是 个很头疼的问题.对于一些代码量几百行的小程序,我不可能要求其 ...
随机推荐
- 网站访问者UA检测及跳转
/*!* UA检测及跳转*/;(function(){ var whatdevice = {}; var myUA = window.navigator.userAgent.toLowerCase() ...
- K-邻近算法简单例子
from numpy import * import operator import matplotlib.pyplot as plt def creatDataset(): group = arra ...
- 思维+并查集 hdu5652
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5652 题意: 输入T,接下来T个样例,每个样例输入n,m代表图的大小,接下来n行,每行m个数,代表图, ...
- ADB 运行原理
ADB基本命令和简介 ADB就是Android Debug Bridge,Android调试桥的意思,很形象.需要在电脑上安装SDK Platform Tools 对应的版本才能使用 基于ADB的工具 ...
- WEB 自动化思路
前期做了一个关键字驱动模型的WEB自动化项目,特意写文章归纳和总结下. 框架架构图 已经实现的部分: 1. 读写excel数据模板 2.配置中心,支持properties,xml格式的配置文件 3.参 ...
- 牛客网Wannafly挑战赛15 B车辆安排(模拟)AND C 出队(规律)
传送门 :B题:点我 C题: 点我 题目描述 有n个队伍,每个队伍的人数小于等于5,每辆车最多坐5个人,要求一个队伍的人都在一辆车上,求最少的车数 输入描述: 第一行n第二行n个数,表示每个队伍的人数 ...
- 填坑专记-手脱FSG壳
妈呀,脱FGS壳真的是坎坷颇多,多亏吾爱破解前辈们的帮忙.我一定要记录下来,省的以后再无法解决. 已经查看是FSG壳了.找到入口也容易了.重点就是脱壳并修复好它. 脱壳 OEP为: 使 ...
- stark组件之批量操作【模仿Django的admin】
一.先看下django的admin是如何实现批量操作 首先在配置类中定义一个函数 然后我们为这个函数对象设置一个属性,这个属性主要用来显示在select标签中显示的文本内容 最后把函数对象放到一个ac ...
- Pyqt5的事例讲解
1.第一个gui程序 import sys from PyQt5.QtWidgets import QApplication from PyQt5.QtWidgets import QMainWind ...
- java 编解码
decoder:解码--> 将文件内容转换为字符对象: encoder:编码-->将字符对象转换为字节或者字节数组: ASCII (American Standard for Infor ...