zoukankan      html  css  js  c++  java
  • quartz 两次执行问题

    最近发现网站(xiayule.net)越写越大,有些东西已经难以维护了,想要添加个功能,都得斟酌半天

    项目中有很多可重构的地方,小重构一直进行,大的不敢动,毕竟没有很多时间做测试。

    最后,决定精简代码。。。。

    能不用的框架、工具统统去掉,Struts慢慢用Spring MVC来代替,xml配置使用注解来代替。

    狂改代码一通后,着实觉得有些可惜,毕竟很多是自己费了很多心思的,幸亏有做笔记的习惯。

    呃,言归正传,以下是笔记内容, 推荐直接看解决方案。

    quartz 两次执行问题是由于tomcat设置不当引起的,说白了,并非是 quartz 的原因,而是spring的配置被加载了两遍。

    为了能够访问网站根,即直接输入http://localhost:8080就能访问应用,我是这样配置的tomcat

     <Engine name="Catalina" defaultHost="localhost" jvmRoute="tomcat1">
    
    <!--    <Engine name="Catalina" defaultHost="localhost">-->
    
          <!--For clustering, please take a look at documentation at:
              /docs/cluster-howto.html  (simple how to)
              /docs/config/cluster.html (reference documentation) -->
    
          <Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster"/>
    
          <!-- Use the LockOutRealm to prevent attempts to guess user passwords
               via a brute-force attack -->
          <Realm className="org.apache.catalina.realm.LockOutRealm">
            <!-- This Realm uses the UserDatabase configured in the global JNDI
                 resources under the key "UserDatabase".  Any edits
                 that are performed against this UserDatabase are immediately
                 available for use by the Realm.  -->
            <Realm className="org.apache.catalina.realm.UserDatabaseRealm"
                   resourceName="UserDatabase"/>
          </Realm>
    
          <Host name="localhost"  appBase="webapps"
                unpackWARs="true" autoDeploy="true" >
    
        <!-- SingleSignOn valve, share authentication between web applications
             Documentation at: /docs/config/valve.html -->
        <!--
        <Valve className="org.apache.catalina.authenticator.SingleSignOn" />
        -->
    
        <!-- Access log processes all example.
             Documentation at: /docs/config/valve.html
             Note: The pattern used is equivalent to using pattern="common" -->
        <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
               prefix="localhost_access_log." suffix=".txt"
               pattern="%h %l %u %t &quot;%r&quot; %s %b" />
        <Context path="" docBase="getll" debug="0" reloadable="true"/>
      </Host>
    </Engine>

    关键是这一句

    <Context path="" docBase="getll" debug="0" reloadable="true"/> 

    其中 Context path="" 表明了网站的根, dacBase是我的项目打包目录。这会导致我的web应用又被重新加载了一遍(webapps里面的项目本身就会被加载一遍),所以导致了项目中的bean都有两份。

    因此,尝试另一种配置根目录的方法。将项目放在webapps外的文件夹,然后指定其位置

    <Host name="localhost"  appBase="webapps" unpackWARs="true" autoDeploy="true"
            xmlValidation="false" xmlNamespaceAware="false">
            ......
            <Context path="" docBase="/home/tan/getllWebApp/getll"/>
    </Host>

    还有一点要注意,就是我的设置成 `<Context path="" docBase="/home/tan/getllWebApp/getll.war"/>` 无效,只能设置成解压后的文件夹

    第二天: 发现有时候应用程序不能启动

    解决方案:
    鉴于前两次的失败,最后决定最终方案,删除掉原先配置的<Context path="" docBase="/home/tan/getllWebApp/getll"/>, 如果没有,就不用删了,直接将应用解压到 webapp/ROOT 里面(需删除ROOT内的原内容)

    一切解决,重复执行两次的问题消失啦。

  • 相关阅读:
    关于hive开窗函数的问题
    MFC三种不同方式实现图形的保存和重绘---方法一:通过集合类CPtrArray保存点的坐标
    win8 安装VC++ 6.0 出现错误的解决方法
    在数组中进行二分查找找出某数在数组中的下标
    编写自定义的字符串一致性匹配方法,只要两个字符串包含同样的字符, 不管字符的顺序如何,都认为两个字符串一致,如:”aabbcc”和”abcabc”被认为是一致的
    若干个数 以“字符串形式‘从键盘输入,将其转换为 double 型,并求平均数
    使用IO技术,创建一个目录,然后复制一个文件到该目录!实现复制的功能。(在博客园上传的第一份代码)
    easyui datagrid editor可选type
    MVC统计在线人数
    替换SQL字段中的换行符,回车符
  • 原文地址:https://www.cnblogs.com/tanhehe/p/4147349.html
Copyright © 2011-2022 走看看