我不知道什么是 aar 存档文件以及它们与战争有何不同。我读到它们有点可转换。什么时候用哪一个?有什么优缺点和限制。
2 回答
.war 是一个 Web 存档,您可以将其部署到任何 Java EE 应用程序服务器。
.aar 是一个特定的axis2 工件,您可以将其部署在已经部署了Axis2 标准Web 应用程序的应用程序服务器中。
您仍然可以使用“嵌入式”模式在标准 Web 应用程序中部署 Axis2 应用程序,包括多个服务,如下所述:http ://wso2.com/library/90 。从 .aar 模式转换为嵌入模式包括提取所有文件并小心地将它们放在嵌入模式的正确位置。
.aar 的 Pro 是 @renat-gilmanov 回答的热门部署。
.war(嵌入式)的 Pro 是
- 在生产环境中更易于部署和管理:只需在任何应用服务器上部署一个 .war,而不必遵循复杂的部署过程。
- 您可以在同一个 .war 中包含更多 servlet,例如客户端应用程序。
轴存档 (.aar)
Axis 2 服务打包为 Axis Archive (.aar)。这是一个 JAR 文件(使用 jar 或 zip 实用程序创建),其中 services.xml 文件打包在存档的 META-INF 目录中。
例如,StockQuoteService 打包为 StockQuoteService.aar 时将具有以下结构:
./stock/StockQuoteService.class
./META-INF/services.xml
在 Axis2 中部署服务非常简单;只需将 .aar 文件复制到 servlet 容器中axis2 Web 应用程序的axis2/WEB-INF/services 目录即可。对于 Tomcat,它将是 $TOMCAT_HOME/webapps/axis2/WEB-INF/services。
基本原理
服务是一个相当小的软件。请考虑以下问题:
- 服务生命周期,因为您需要部署/重新部署/取消部署您正在开发的一个或多个服务
- 与每个部署的应用程序相关的容器开销
- 由并行部署的多个 Axis2 实例引起的开销
- 松耦合架构
- ...
基本上,Axis2 建议将 *.aar 视为轻量级应用程序。它共享相同的 Axis2 实例,无需停止整个业务即可轻松管理和重新部署。
假设您开发了一个复杂的系统。作为一名优秀的开发人员和架构师,您决定使用服务作为最小功能块来构建松散耦合系统。分解进行得很顺利,所以你有大约 100 个服务。顺便说一句,这很好,因为您将能够:
- 简化开发
- 并行开发一些服务
- 简化测试
- ...
问题是您是否愿意将所有这些服务开发为单独的应用程序(战争)?我希望你不会。使用像 Axis Archives 这样的轻量级方法会更容易、更高效。
请注意,Axis 允许您像 Tomcat 对应用程序一样管理服务生命周期。
当涉及到企业级应用程序时,可用性是一个大问题。即使是很短的停机时间也可能是非常有害的,因此重新启动服务器不是一个好的选择。您需要在不关闭系统的情况下更新系统。这就是热部署和热更新的用武之地。
热部署是在系统启动并运行时部署新服务的能力。例如,假设您有两个服务——service1 和 service2——启动并运行,并且您在不关闭系统的情况下部署了一个名为 service3 的新服务。部署 service3 是一个热部署场景。
热更新是在不关闭系统的情况下对现有 Web 服务进行更改的能力。这是一个重要功能,在测试环境中是必需的。