我试图创建一个小的c++ Visual Studio Forms(通过CPPCLR_WinformsProjekt)应用程序,本质上是一个浏览器,但它也启动了一个本地Tomcat 8.5服务器,在其web应用程序文件夹中有一个WAR文件,并将您重定向到本地主机页面。我在Windows上工作。
我的问题是-通过c++库启动Tomcat服务器的最佳方式是什么?
编辑:我开始解决这个问题的方法是简单地将tomcat文件夹与WAR文件压缩到Visual Studio项目中。在执行时,文件被解压缩,我正在考虑有一个system(*start tomcat command*)
.
注意:我知道我可以通过cmd启动Tomcat,但我需要通过c++让它工作。
[我假设你是在Windows系统下,但在unix系统上也有类似的方法。]
在c++程序中,您可以执行shell所能执行的所有命令,因此启动Tomcat的最简单方法是使用CreateProcess来执行catalina.bat(或startup.bat
)。这也是最容易配置的方式:用户可以根据需要调整setenv.bat
。
当然,如果您想省略*.bat
文件,您可以:
- 使用
java.exe
和适当的参数实例化JVM:在系统类路径中至少需要bin/bootstrap.jar
(通常是bin/tomcat-juli.jar
),并使用start
参数调用org.apache.catalina.startup.Bootstrap
的主方法。 - 或通过调用API使用
jvm.dll
实例化JVM,方法与procrun
类似。
我不认为这些方法比*.bat
脚本有任何优势。要停止一个现代的Tomcat,只需发送kill信号。
编辑:如果您计划只启动一个特定的web应用程序,那么一个功能完备的Tomcat可能有些多余。你可以:
- 要么使用Tomcat Embedded,这意味着编写一个类并调用它的
main
方法而不是Boostrap#start
。优点是,你只需要分发一堆jar文件和WAR不需要传统的Tomcat安装目录结构 - 或者用户使用Spring Boot