一个机器上运行两个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.这是 个很头疼的问题.对于一些代码量几百行的小程序,我不可能要求其 ...
随机推荐
- Java 管道PipedInputStream PipedOutStream PipedReader PipedWriter
java中的管道流(pipeStream)是一种特殊的流,用于在不同线程间直接传送数据.一个线程发送数据到输出管道,另外一个线程从输入管道中读取数据.通过使用管道,实现不同线程间的通信,而不必借助类似 ...
- because its MIME type ('text/html') is not executable, and strict MIME type checking is enabled
spring security 配置问题,静态资源未被允许访问
- yaml文件 *.yml 写法简介
YAML(Yet Another Markup Language)(发音 /ˈjæməl/ ) 一种基于Unicode容易阅读,容易和脚本语言交互的,用来表达资料序列的编程语言. 适应场景 脚本语言: ...
- Vue之VueRouter
Vue之VueRouter实现原理 <!DOCTYPE html> <html lang="en"> <head> <meta chars ...
- uniquefu Python+Selenium学习--select
场景 在处理下拉框(select)的时候selenium给我们提供了一系列的便捷方法,我们只需要使用selenium.webdriver.support.select.Select类来稍微封装一下就好 ...
- AIO编程
AIO编程,在NIO基础之上引入了异步通道的概念,并提供了异步文件和异步套接字通道的实现,从而在真正意义上实现了异步非阻塞,之前我们学习的NIO只是非阻塞而并非异步.而AIO它不需要通过多路复用器对注 ...
- mysql系列(3)之 DML语句
DML操作指的是对数据库中表记录的操作,主要包括表记录的插入(insert).更新(update).删除(delete)和查询(select). 1.插入
- stark组件之搜索【模仿Django的admin】
一.先看下django的admin是如何做搜索功能的 配置一个search_fields的列表就可以实现搜索的功能 class testbook(admin.ModelAdmin): # 第一步,定义 ...
- nodejs项目进程管理器之pm2
如果用pm2作为nodejs的进程管理器的话,参考以下两篇文章 程序员小卡:http://www.cnblogs.com/chyingp/p/pm2-documentation.html 官方:htt ...
- linux命令学习之:ls
ls命令用来显示目标列表,在Linux中是使用率较高的命令.ls命令的输出信息可以进行彩色加亮显示,以分区不同类型的文件.语法 ls(选项)(参数) 选项说明 -a:显示所有档案及目录(ls内定将档案 ...