JavaCompute 노드 클래스 로딩
JavaCompute 노드는 노드에서 Java 클래스 특성으로 정의된 Java™ 클래스를 로드하고 실행합니다. 이 클래스는 JAR (Java archive) 파일에 다른 필수 클래스와 함께 배치된다.
- JavaCompute 노드를 포함하는 메시지 플로우의 컨테이너가 있는 막대 파일에 JAR 파일을 배치할 수 있습니다.
- JAR 파일을 하나 이상의 애플리케이션 또는 공유 라이브러리에서 참조하는 공유 라이브러리의 통합 서버 에 직접 배치할 수 있습니다.
- 하나 이상의 애플리케이션 또는 공유 라이브러리에서 참조하는 공유 라이브러리의 막대 파일에 JAR 파일을 배치할 수 있습니다.
공유 라이브러리의 자바 클래스
공유 라이브러리를 사용하여 여러 솔루션 간에 자바 클래스를 공유하거나 분리를 제공할 수 있습니다.
공유 라이브러리에 배치된 Java 클래스는 통합 서버-와이드 클래스 로더에서 사용할 수 없습니다. 자바 파일을 포함하는 공유 라이브러리를 배치하면 해당 공유 라이브러리에 대해 새 클래스 로더가 작성됩니다. 이 클래스 로더는 공유 라이브러리에 있는 모든 자바 클래스와 참조되는 모든 공유 라이브러리의 자바 클래스를 포함하고 있다. 한 공유 라이브러리 클래스 로더에서 다른 공유 라이브러리 클래스 로더로의 위임은 존재하지 않습니다. 공유 라이브러리 클래스 로더의 Java 클래스는 통합 서버-와이드 클래스 로더의 Java 클래스에서 분리됩니다. 마찬가지로, 통합 서버-와이드 클래스 로더의 Java 클래스는 공유 라이브러리 클래스 로더의 Java 클래스에서 분리됩니다.
자바 클래스는 다른 공유 라이브러리가 참조하는 공유 라이브러리에 포함되어 있는 경우 여러 클래스 로더에 존재할 수 있습니다. 이를 포함하는 공유 라이브러리를 다시 배치하여 해당 Java 클래스를 업데이트하면 해당 Java 클래스가 포함된 모든 공유 라이브러리에 대한 모든 클래스 로더가 삭제되고 다시 작성된다.
통합 서버-와이드 클래스 로더
JavaCompute 노드를 포함하는 플로우의 컨테이너에 있는 막대 파일에 배치된 Java 클래스는 통합 서버-와이드 클래스 로더에 의해 로드됩니다. 새 JAR 파일 또는 변경된 JAR 파일이 배치될 때마다 통합 서버-wide 클래스 로더가 삭제되고 현재 배치된 모든 JAR 파일로 다시 작성됩니다. 동시에 모든 JavaCompute 노드는 이들 내에서 사용되는 Java 클래스를 새로 고치고 모든 Java 정적 변수를 다시 작성합니다. 노드에서 대체 클래스 로더를 사용할 수 있도록 하는 JavaClassLoader configurable service 특성을 사용하여 이 작동을 수정할 수 있습니다. 자세한 정보는 구성 가능 서비스를 사용하여 JavaCompute 노드 클래스 로딩의 내용을 참조하십시오.
통합 서버-와이드 클래스 로더는 먼저 필수 클래스에 대해 전개된 모든 JAR 파일을 검색합니다. 필수 클래스를 찾을 수 없는 경우 공유 클래스 로더를 따릅니다. 공유 클래스 로더는 통합 노드 시스템의 일련의 디렉토리를 검색하여 JAR 파일을 찾으면 이 파일을 로드합니다. JavaCompute 노드가 사용해야 하는 클라이언트 라이브러리와 같이 반복적으로 배치할 필요가 없는 필수 JAR 파일을 설치하는 데 사용할 수 있습니다. 자세한 정보는 자바 공유 클래스 로더의 내용을 참조하십시오.
배치된 JAR 파일 또는 공유 클래스 디렉토리에 설치된 JAR 파일에서 필수 클래스를 찾을 수 없는 경우, 제공된 모든 통합 노드를 포함하는 클래스 로더 (예: 이 클래스 로더에는 jplugin2.jar가 포함되어 있음), 클래스 경로 및 마지막으로 JVM (Java Virtual Machine) 시스템 클래스 로더가 선택됩니다.
한 클래스 로더에서 다른 클래스 로더로의 위임은 한 방향으로만 발생할 수 있습니다. 클래스가 공유 클래스 로더에서 분석되는 경우 통합 서버-와이드 클래스 로더에서 직접 클래스를 작성할 수 없습니다.