我以前是将JFinal网站部署到tomcat中运行的,不过最近发现如下方式(手册、jfinal_demo_for_maven中使用的启动方式)
public static void main(String[] args) { JFinal.start("src/main/webapp", 80, "/", 5); }灵活得多啊!可以指定context root,端口号,context path。最后一个参数扫描间隔,设为5方便开发热部署立即看效果,设为0就是生产环境。 我的问题产生于我想把这种启动方式安装为一个Windows Service的时候。
java -cp "(假设classpath已经设定好了)" net.nitrogen.ates.dashboard.App "(context root path)" 80 "/" 0于是我用Apache Daemon的Procrun( http://commons.apache.org/proper/commons-daemon/procrun.html)安装了一个服务并启动成功了并且网站可以正常访问。但是该怎么stop呢?仅仅调用
JFinal.stop();够吗?JFinal类中还有一个stopPlugins方法但调不到。 之所以想在生产环境上采用这种方式启动并做成一个Windows Service的原因: 1、可以任意指定context root,端口号,context path,这个最开始说过了。 2、开发时可以即时加载更改立马在浏览器里看到效果。 3、做成service方便Jenkins部署,步骤:取代码->maven build->停掉网站A的service->以相同方式在相同端口号和context path启动包含maintenance页面的网站B(就是“本站正在维护”的消息页面)->拷贝正确的文件夹覆盖掉context root->停掉B的service->启动A的service->Done! 4、这种方式和部署到tomcat是冲突的,想要部署到tomcat就必须移除jetty-server-xxx.jar。 这样做是否违背了JFinal作者发明这种启动方式的初衷? 还望各位多多指教。谢谢! 我主要是想探索一下,顺便借机想熟悉一下JFinal的内部运作机制。
将 java 项目做成一个 windows 服务,通常只适用于非 web 项目,而 web 项目对容器和外部环境有很强的依赖,非常麻烦,不建议这么使用。 jfinal 只是建议在开发环境下使用 JFinal.start(...) 的方式来启动项目,在开发环境下,因为有 eclipse 这类 IDE 的支持,自然解决了 jar 包以及类文件的依赖问题,但想将整个项目打包成 jar 并且运行起来很是麻烦。######看来是我想多了……
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。