开发者社区> 问答> 正文

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

我以前是将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的内部运作机制。

展开
收起
kun坤 2020-06-03 11:29:22 732 0
1 条回答
写回答
取消 提交回答
  •      将 java 项目做成一个 windows 服务,通常只适用于非 web 项目,而 web 项目对容器和外部环境有很强的依赖,非常麻烦,不建议这么使用。 jfinal 只是建议在开发环境下使用 JFinal.start(...) 的方式来启动项目,在开发环境下,因为有 eclipse 这类 IDE 的支持,自然解决了 jar 包以及类文件的依赖问题,但想将整个项目打包成 jar 并且运行起来很是麻烦。######看来是我想多了……

    2020-06-03 11:29:29
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
《云服务器运维之Windows篇》 立即下载
TAKING WINDOWS 10 KERNEL 立即下载
ECS运维指南之Windows系统诊断 立即下载