本章的内容笔者没接触过,也应该不会用到,所以有些含义不清楚是什么意思,可以去看 原文

    可以将 Spring ApplicationContext 部署为 RAR 文件,将上下文及其所有需要的 Bean 类和库 JARs 封装在一个 Java EE RAR 部署单元中。这相当于引导一个独立的 ApplicationContext(只托管在 Java EE 环境中),能够访问 Java EE 服务器的设施。RAR 部署是部署无头 WAR 文件的一个更自然的选择—实际上,一个没有任何 HTTP 入口点的 WAR 文件,只用于在 Java EE 环境中引导 Spring ApplicationContext。

    RAR 部署对于那些不需要 HTTP 入口,而只由消息端点和预定作业组成的应用环境来说是理想的。这种情况下的 Bean 可以使用应用服务器资源,如 JTA 事务管理器和 JNDI 绑定的 JDBC 数据源实例和 JMS ConnectionFactory 实例,也可以向平台的 JMX 服务器注册—所有这些都是通过 Spring 的标准事务管理和 JNDI 以及 JMX 支持设施实现的。应用组件还可以通过 Spring 的 TaskExecutor 抽象与应用服务器的 JCA WorkManager 互动。

    关于 RAR 部署中涉及的配置细节,请参见 SpringContextResourceAdapter 类的 javadoc。

    对于作为 Java EE RAR 文件的 Spring ApplicationContext 的简单部署:

    1. 将所有的应用程序类打包成一个 RAR 文件(这是一个标准的 JAR 文件,有一个不同的文件扩展名)。
    2. 将所有需要的库 JARs 添加到 RAR 存档的根目录。
    3. 添加一个 META-INF/ra.xml 部署描述符(如 SpringContextResourceAdapter 的 javadoc 所示)和相应的 Spring XML Bean 定义文件(通常是 META-INF/applicationContext.xml)。
    4. 将生成的 RAR 文件放入你的应用服务器的部署目录。

    这种 RAR 部署单元通常是独立的。它们不向外部世界暴露组件,甚至不向同一应用程序的其他模块暴露。与基于 RAR 的 ApplicationContext 的交互通常是通过它与其他模块共享的 JMS 目的地进行的。一个基于 RAR 的 ApplicationContext 也可以,例如,安排一些工作或对文件系统中的新文件做出反应(或类似的)。如果它需要允许来自外部的同步访问,它可以(例如)导出 RMI 端点,这些端点可能被同一台机器上的其他应用模块使用。