DynamicLinkerFactory

DynamicLinkerFactory (동적 링커 팩토리)

DynamicLinker 객체를 만들기 위한 팩토리 클래스입니다. 동적 링커는 Dynalink의 중심 객체로, 여러 GuardingDynamicLinker 객체들로 구성되어 콜 사이트 연결을 조율합니다.

출처: Java API Reference

본문

일반적인 동적 링커는 팩토리 사용자가 setPrioritizedLinkers(...)로 명시적으로 만들어 둔 모든 GuardingDynamicLinker 객체와, 자동으로 발견된 링커들, 그리고 마지막으로 setFallbackLinkers(...)로 설정한 링커들로 구성됩니다. 마지막 범주에는 보통 BeansLinker가 포함돼요.

기본 생성자로 팩토리를 만든 뒤, 여러 setXxx() 메서드로 설정하고 createLinker()로 현재 설정에 따른 동적 링커를 하나 이상 만들어 사용합니다.

설정 메서드

  • setPrioritizedLinker(...) / setPrioritizedLinkers(...) — 우선순위가 높은 가드형 동적 링커를 하나 또는 여러 개 설정해요. 이 링커들은 자동 발견된 링커들보다 먼저 호출 기회를 얻습니다.
  • setFallbackLinkers(...) — 폴백 가드형 동적 링커를 설정합니다. 보통 여기에 BeansLinker를 넣어 다른 링커가 처리하지 못한 객체를 받아요.
  • setClassLoader(ClassLoader) — 사용 가능한 가드형 동적 링커를 자동 발견하는 데 사용할 클래스 로더를 설정합니다.
  • setAutoConversionStrategy(MethodTypeConversionStrategy) — 자동 타입 변환 전략을 나타내는 객체를 설정해요.
  • setInternalObjectsFilter(MethodHandleTransformer) — 이 팩토리가 만든 동적 링커의 링커 서비스에서 LinkerServices.filterInternalObjects(MethodHandle)의 구현으로 동작할 메서드 핸들 변환기를 설정합니다.
  • setPrelinkTransformer(GuardedInvocationTransformer) — 사전 연결(pre-link) 변환기를 설정해요.
  • setSyncOnRelink(boolean) — 콜 사이트가 재연결된 후 MutableCallSite.syncAll(MutableCallSite[])를 호출할지 설정합니다.
  • setUnstableRelinkThreshold(int) — 불안정 재연결 임계값을 설정합니다. 콜 사이트가 재연결된 횟수가 이 값에 도달하면 불안정하다고 간주되어 이후의 링크 요청에 그 사실이 표시돼요.

주요 메서드

  • createLinker() — 현재 설정에 기반해 새 동적 링커를 만듭니다.
  • getAutoLoadingErrors() — 마지막 createLinker() 호출 동안 자동 발견된 링커를 로딩하면서 만난 ServiceConfigurationError 목록을 반환합니다.

더 알아보기

Java 공식 API