JCA (Java Connector Architecture)의 네트워크 경계는 어디에 있습니까?

StackOverflow https://stackoverflow.com/questions/2237389

  •  19-09-2019
  •  | 
  •  

문제

JCA 리소스 어댑터를 작성하고 있습니다. 또한 JCA 사양의 연결 관리 부분을 완전히 이해하려고 노력합니다. 사고 실험으로서,이 어댑터의 유일한 클라이언트는 다른 기계에 위치한 스윙 Java 응용 프로그램 클라이언트라고 생각합니다. 또한 리소스 어댑터가 네트워크를 통해 "EIS (Enterprise Information System)"(EIS)와 통신 할 것이라고 가정합니다.

JCA 사양을 이해하면 .RAR 파일이 응용 프로그램 서버에 배포됩니다. 응용 프로그램 서버는 .RAR 파일의 ManagedConnectionFactory 인터페이스 구현을 만듭니다. 그런 다음 사용자가 리소스에 대한 연결을 얻기 위해 사용하기 위해 JNDI에 배치 된 불투명 객체 인 연결 공장을 생성하도록 요청합니다. (JDBC의 경우 Connection Factory는 javax.sql.datasource입니다.)

Connection Factory는 응용 프로그램-서버-지원 ConnectionManager에 대한 참조를 유지해야하며, 이는 일련화 할 수 있어야합니다. 연결 공장이 JNDI에 저장 될 수 있도록 순서대로 순서대로 일련화 할 수 있어야하며 ConnectionManager에 대한 참조를 유지하려면 ConnectionManager도 직렬화 할 수 있어야합니다. 따라서이 작은 객체 그래프는 응용 프로그램 클라이언트의 JNDI 트리에 설치됩니다.

여기서 내가 queasy를 시작하는 곳입니다. ConnectionManager는 Connection Management, Sharing, Pooling 등을 처리 해야하는 응용 프로그램 서버에서 제공하는 작품입니까? 그 작업 중 하나는 ManageDConnection 인스턴스를 작성하는 것이며 관리를 일련화 할 필요는 없으며 사용자 연결 핸들도 일련화 할 필요가 없습니다. 이는 전체 연결 풀링 기계가 응용 프로그램 클라이언트에게 도매를 배송하고 JNDI 트리로 채워 졌음을 시사합니다.

이 모든 것이 클라이언트 측에서 JCA 상호 작용이 응용 프로그램 서버의 서버 측 구성 요소를 우회한다는 것을 의미합니까? JCA API의 네트워크 경계는 어디에 있습니까?

도움이 되었습니까?

해결책

이 모든 것이 클라이언트 측에서 JCA 상호 작용이 응용 프로그램 서버의 서버 측 구성 요소를 우회한다는 것을 의미합니까? JCA API의 네트워크 경계는 어디에 있습니까?

Afaik, 그렇습니다. 로컬 JNDI가 있으며 로컬 JNDI는 로컬 연결을 반환합니다. JNDI의 다른 종류의 객체에 대해서는 동일합니다. 그러한 구성 값 (env-entry). 물론, EJB를 찾으면 공장은 원격 콩으로 프록시를 반환하지만 JNDI는 여전히 내 지식으로 현지입니다.

클라이언트는 자체 수영장을 포함합니다. 이것은 당신이 지적했듯이, 클라이언트에서 얻은 연결이 서버 측 기계를 피할 것임을 의미합니다.

분산 거래를 시작하면 더욱 악화됩니다. 클라이언트는 a를 얻을 수 있습니다 UserTransaction 클라이언트 측에서 분산 트랜잭션을 시작하고 중지하려면 (모든 App. 서버가이를 지원하는 것은 아닙니다). 트랜잭션 컨텍스트는 원격 EJB 로의 호출 중에 전파됩니다. 그런 다음 분산 트랜잭션은 클라이언트 측 연결 및 서버 측 연결에 걸쳐있을 수 있습니다.

J2EE 철학에 따르면, 응용 프로그램 클라이언트는 일반적으로 거래를 사용하지 않고 직접 연결을 얻어야합니다. 원격 EJB와 전적으로 통신해야합니다.

사양은 더 복잡한 시나리오에 대해서는 명확하지 않으며 주변에 많은 정보가 없습니다. 사양은 예를 들어 응용 프로그램 서버에 노출을 요구하지 않습니다. UserTransaction 고객에게.

내가 여기에 쓴 것은 적어도 Glassfish에 적용되지만 모든 응용 프로그램 서버에서 이러한 기능을 일관된 구현에 의존하지는 않습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top