怎样用命令行启动JFinal网站,并将其安装为一个Windows Service?

阿斯蓝 发布于 2015/02/17 13:47
阅读 767
收藏 1

我以前是将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的时候。

假设以上的main方法放置于网站A项目的net.nitrogen.ates.dashboard.App类中,那么用于启动的命令行是

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的内部运作机制。

加载中
0
JFinal
JFinal
     将 java 项目做成一个 windows 服务,通常只适用于非 web 项目,而 web 项目对容器和外部环境有很强的依赖,非常麻烦,不建议这么使用。 jfinal 只是建议在开发环境下使用 JFinal.start(...) 的方式来启动项目,在开发环境下,因为有 eclipse 这类 IDE 的支持,自然解决了 jar 包以及类文件的依赖问题,但想将整个项目打包成 jar 并且运行起来很是麻烦。
阿斯蓝
阿斯蓝
看来是我想多了……
返回顶部
顶部