jetty部署WEB程序上下文启动两次,定时任务启动两次

将web程序部署到webapps目录下,导致定时任务启动两次,后来查看上下文启动,发现真的启动了两次,contextpath如下:

1. /

2. mycms

我到webapps目录结构如下:

mycms/

website.xml

其中website.xml文件是jetty的xml部署描述符,因此jetty启动后会启动两次,一次是website.xml部署文件启动的,另一次是jetty容器自动识别webapps/mycms/WEB-INF/web.xml标准Servlet应用启动的。

解决方法:

1. 更改部署方式,删除website.xml部署描述文件,重命名mycms文件夹为root,这样启动的contextpath为“/”

2. 删除mycms文件夹,配置标准的war包,将website.xml文件中的war属性指向war包所在路径

 

P.S.: jetty部署方式(摘自参考资料)

 jetty支持多种部署方式,比如servlet规范中的满足以上内容条件的war包,jetty自己提供的xml部署描述符,或者直接就是一个满足servlet规范的文件夹(war包本来也是要解压的)

(1)简单部署,直接将war包或者解压的war目录放入jetty.home/webapps目录下,然后启动,jetty的部署扫描器会找到部署的内容,然后自动设置contextPath为该war包或war目录的名字即可完成部署,但要注意war的名字,当war的名字为root.war或者文件夹的名字为war的时候,contextPath就是root,在浏览器中访问的时候就不需要输入contextPath了,而直接访问根目录,比如http://localhost:8080/就可以访问到root.war这个应用了,当你的jetty只需要部署这一个应用,将其命名为root.war还是可以滴.

    当你需要使war包的名字和contextPath不同,这时候怎么办呢?就是第二种方式:

(2)XML部署描述符,这种方式就是在webapps目录中不放除了xml文件描述符之外的任何war包或者war目录,jetty部署扫描器能自动加载到这个xml文件,然后通过xml文件中定义的WebAppContext实例中的war和contextPath属性来找到你的war包或者war目录,比如这样一个xml文件:

    

      /mycontext

      /home/wilsonp/myapp/myapp.war

    

(3)war包部署

 

 

参考资料:

http://blog.51cto.com/1730634/1588447

你可能感兴趣的:(Java)