Home [Spring] 1.15.5. Deploying a Spring ApplicationContext as a Java EE RAR File

[Spring] 1.15.5. Deploying a Spring ApplicationContext as a Java EE RAR File

1.15.5. Deploying a Spring ApplicationContext as a Java EE RAR File

It is possible to deploy a Spring ApplicationContext as a RAR file, encapsulating the context and all of its required bean classes and library JARs in a Java EE RAR deployment unit. This is the equivalent of bootstrapping a stand-alone ApplicationContext (only hosted in Java EE environment) being able to access the Java EE servers facilities. RAR deployment is a more natural alternative to a scenario of deploying a headless WAR file — in effect, a WAR file without any HTTP entry points that is used only for bootstrapping a Spring ApplicationContext in a Java EE environment.

  • Spring ApplicationContext를 RAR 파일로 배포하여 컨텍스트와 필요한 모든 bean 클래스 및 라이브러리 JAR을 Java EE RAR 배치 장치에 캡슐화할 수 있다.
  • 이는 Java EE 서버 시설에 액세스할 수 있는 독립 실행형 ApplicationContext(Java EE 환경에서만 호스팅)를 부트스트래핑하는 것과 같다.
  • RAR 배포는 헤드가 없는 WAR 파일, 즉 사실상 Java EE 환경에서 Spring ApplicationContext를 부팅하는 데만 사용되는 HTTP 진입점이 없는 WAR 파일을 배치하는 시나리오에 대한 보다 자연스러운 대안이다.

RAR deployment is ideal for application contexts that do not need HTTP entry points but rather consist only of message endpoints and scheduled jobs. Beans in such a context can use application server resources such as the JTA transaction manager and JNDI-bound JDBC DataSource instances and JMS ConnectionFactory instances and can also register with the platform’s JMX server — all through Spring’s standard transaction management and JNDI and JMX support facilities. Application components can also interact with the application server’s JCA WorkManager through Spring’s TaskExecutor abstraction.

  • RAR 배포는 HTTP 진입점이 필요하지 않고 오히려 메시지 endpoints과 예약된 작업으로만 구성된 애플리케이션 컨텍스트에 이상적이다.
  • 이러한 맥락의 beans은 JTA 트랜잭션 관리자, JNDI-bound JDBC DataSource 인스턴스 및 JMS ConnectionFactory 인스턴스와 같은 애플리케이션 서버 리소스를 사용할 수 있으며, Spring의 표준 트랜잭션 관리 및 JNDI 및 JMX support facilities을 통해 플랫폼의 JMX 서버에 등록할 수도 있다.
  • 애플리케이션 구성요소는 스프링의 TaskExecutor 추상화를 통해 애플리케이션 서버의 JCA WorkManager와도 상호작용할 수 있다.

See the javadoc of the SpringContextResourceAdapter class for the configuration details involved in RAR deployment.

For a simple deployment of a Spring ApplicationContext as a Java EE RAR file:

  • Spring ApplicationContext를 Java EE RAR 파일로 단순 배포하는 경우:
    1. Package all application classes into a RAR file (which is a standard JAR file with a different file extension). .Add all required library JARs into the root of the RAR archive. .Add a META-INF/ra.xml deployment descriptor (as shown in the javadoc for SpringContextResourceAdapter) and the corresponding Spring XML bean definition file(s) (typically META-INF/applicationContext.xml).
      • 모든 응용 프로그램 클래스를 RAR 파일(파일 확장자가 다른 표준 JAR 파일)로 포장.
      • 필요한 모든 라이브러리 JAR을 RAR 아카이브의 루트에 추가.
      • META-INF/ra.xml 배포 descriptor(javadoc for SpringContextResourceAdapter 에서 보여지는) 및 해당 Spring XML bean 정의 파일(들) (META-INF/applicationContext.xml) 추가.
    2. Drop the resulting RAR file into your application server’s deployment directory.
      • resulting RAR 파일을 애플리케이션 서버의 배포 디렉터리에 Drop.

Such RAR deployment units are usually self-contained. They do not expose components to the outside world, not even to other modules of the same application. Interaction with a RAR-based ApplicationContext usually occurs through JMS destinations that it shares with other modules. A RAR-based ApplicationContext may also, for example, schedule some jobs or react to new files in the file system (or the like). If it needs to allow synchronous access from the outside, it could (for example) export RMI endpoints, which may be used by other application modules on the same machine.

  • 그러한 RAR deployment units는 대개 독립적으로 되어(self-contained)있다.
  • 그들은 외부 세계에 구성 요소를 노출시키지 않을 뿐만 아니라 심지어 같은 응용 프로그램의 다른 모듈에도 노출시키지 않는다.
  • RAR 기반 ApplicationContext와의 상호작용은 보통 그것이 다른 모듈과 공유하는 JMS 목적지를 통해 일어난다.
  • 예를 들어 RAR 기반 ApplicationContext는 일부 작업을 예약하거나 파일 시스템(또는 이와 유사한 파일)의 새 파일에 반응할 수 있다.
  • 외부에서 동기식 액세스를 허용해야 할 경우, (예를 들어)같은 기계의 다른 애플리케이션 모듈에서 사용할 수 있는 RMI endpoints를 내보낼 수 있다.


This post is licensed under CC BY 4.0 by the author.

리액트 v17.0 RC: 새 기능 없음

[Spring] 1.16. The BeanFactory