• 一个机器上运行两个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(); 

  • 相关阅读:
    第三方库添加记录
    xcode之语法高亮效果消失解决办法
    将excel记录导入ms sql
    eWebEditor在IE8,IE7下所有按钮无效之解决办法
    关于对数据库中重复记录的操作
    javascript如何取得RadioButtonList的值
    水晶报表分页并自动插入空白行
    如何防止SQL注入
    VC++视频教程下载地址
    如何显示最近过生日的记录
  • 原文地址:https://www.cnblogs.com/CooderIsCool/p/4728989.html
Copyright © 2020-2023  润新知