通过 C++ 启动 Tomcat 8.5 本地主机?最佳做法是什么?
Starting a Tomcat 8.5 localhost through C++? What is the best practice?
我正在尝试创建一个小型 C++ Visual Studio Forms(通过 CPPCLR_WinformsProjekt)应用程序,它本质上是一个浏览器,但它也启动了一个本地 Tomcat 8.5 服务器 WAR 文件在其 web 应用程序文件夹中,并将您重定向到本地主机页面。我正在研究 Windows。
我的问题恰恰是 - 通过 C++ 库启动 Tomcat 服务器的最佳方法是什么?
编辑:我开始解决这个问题的方法是将 tomcat 文件夹和 WAR 文件压缩到 Visual Studio 项目中。执行时,文件被解压缩,我正在考虑 system(*start tomcat command*)
.
注意:我知道我可以通过 cmd 启动 Tomcat,但我需要通过 C++ 让它工作。
[我假设您在 Windows 下,但在 Unix-es 上可以使用类似的方法。]
在 C++ 程序中,您可以执行 shell 可以执行的所有命令,因此启动 Tomcat 的最简单方法是使用 CreateProcess to execute catalina.bat(或 startup.bat
).这也是最容易配置的方式:用户可以根据需要调整 setenv.bat
。
当然,如果您想省略 *.bat
个文件,您可以:
- 要么使用
java.exe
和适当的参数实例化一个 JVM:您至少需要 bin/bootstrap.jar
在系统 class 路径中(通常是 bin/tomcat-juli.jar
)并调用org.apache.catalina.startup.Bootstrap
的主要方法,参数为 start
.
- 或使用
jvm.dll
通过 Invocation API in a similar way as it is done by procrun
. 实例化 JVM
我认为这些方法与 *.bat
脚本相比没有任何优势。要停止现代 Tomcat 只需发送终止信号。
编辑: 如果您打算只启动一个特定的 Web 应用程序,那么成熟的 Tomcat 可能有点矫枉过正。你可以改为:
- 要么使用 Tomcat Embedded,这归结为在 class 上写入并调用其
main
方法而不是 Boostrap#start
。好处是,你只需要分发一堆jar文件和你的WAR,而不需要传统的Tomcat安装目录结构,
- 或用户使用 Spring Boot.
我正在尝试创建一个小型 C++ Visual Studio Forms(通过 CPPCLR_WinformsProjekt)应用程序,它本质上是一个浏览器,但它也启动了一个本地 Tomcat 8.5 服务器 WAR 文件在其 web 应用程序文件夹中,并将您重定向到本地主机页面。我正在研究 Windows。
我的问题恰恰是 - 通过 C++ 库启动 Tomcat 服务器的最佳方法是什么?
编辑:我开始解决这个问题的方法是将 tomcat 文件夹和 WAR 文件压缩到 Visual Studio 项目中。执行时,文件被解压缩,我正在考虑 system(*start tomcat command*)
.
注意:我知道我可以通过 cmd 启动 Tomcat,但我需要通过 C++ 让它工作。
[我假设您在 Windows 下,但在 Unix-es 上可以使用类似的方法。]
在 C++ 程序中,您可以执行 shell 可以执行的所有命令,因此启动 Tomcat 的最简单方法是使用 CreateProcess to execute catalina.bat(或 startup.bat
).这也是最容易配置的方式:用户可以根据需要调整 setenv.bat
。
当然,如果您想省略 *.bat
个文件,您可以:
- 要么使用
java.exe
和适当的参数实例化一个 JVM:您至少需要bin/bootstrap.jar
在系统 class 路径中(通常是bin/tomcat-juli.jar
)并调用org.apache.catalina.startup.Bootstrap
的主要方法,参数为start
. - 或使用
jvm.dll
通过 Invocation API in a similar way as it is done byprocrun
. 实例化 JVM
我认为这些方法与 *.bat
脚本相比没有任何优势。要停止现代 Tomcat 只需发送终止信号。
编辑: 如果您打算只启动一个特定的 Web 应用程序,那么成熟的 Tomcat 可能有点矫枉过正。你可以改为:
- 要么使用 Tomcat Embedded,这归结为在 class 上写入并调用其
main
方法而不是Boostrap#start
。好处是,你只需要分发一堆jar文件和你的WAR,而不需要传统的Tomcat安装目录结构, - 或用户使用 Spring Boot.