JCA 리소스 어댑터를 쓰고 있습니다. 또한 JCA 사양의 연결 관리 부분을 완전히 이해하려고 노력 중입니다. 생각한 실험으로,이 어댑터의 유일한 클라이언트는 다른 컴퓨터에있는 Swing Java 응용 프로그램 클라이언트 일 것입니다. 또한 자원 어댑터가 네트워크를 통해 "엔터프라이즈 정보 시스템"(EIS)과 통신 할 것이라고 가정하십시오.Java 커넥터 아키텍처 (JCA)의 네트워크 경계는 어디에 있습니까?
JCA 사양을 이해하면 .rar 파일이 응용 프로그램 서버에 배포됩니다. 응용 프로그램 서버는 .rar 파일의 ManagedConnectionFactory 인터페이스 구현을 만듭니다. 그런 다음 연결 팩토리를 생성하도록 요청합니다. 연결 팩토리는 사용자가 자원에 대한 연결을 확보하는 데 사용할 JNDI에 배치되는 불투명 한 객체입니다. (JDBC의 경우, 연결 팩토리는 javax.sql.DataSource입니다.)
연결 팩토리는 응용 프로그램 서버가 제공하는 ConnectionManager에 대한 참조를 보유해야하며, 이는 다시 필요합니다 직렬화 가능. 이것은 의미가 있습니다. 연결 팩토리를 JNDI에 저장하려면 직렬화 가능해야하며 ConnectionManager에 대한 참조를 유지하려면 ConnectionManager도 직렬화 가능해야합니다. 그러면이 작은 객체 그래프가 응용 프로그램 클라이언트의 JNDI 트리에 설치됩니다.
이것은 내가 기만적으로 시작하는 곳입니다. ConnectionManager - 연결 관리, 공유, 풀링 등을 처리하기로되어있는 응용 프로그램 서버에서 제공하는 부분입니다 -이 시점에서 클라이언트에 전적으로 존재합니까? 그 일의 1 개 (살)은 ManagedConnection 인스턴스를 작성하는 것이고, ManagedConnection은 Serializable 일 필요는 없으며, 사용자 연결 처리는 또한 Serializable 일 필요는 없다. 이는 전체 연결 풀링 기계가 애플리케이션 클라이언트에게 도매로 배송되고 JNDI 트리에 채워진다는 것을 의미합니다.
이는 모두 클라이언트 측의 JCA 상호 작용이 응용 프로그램 서버의 서버 측 구성 요소를 우회 함을 의미합니까? JCA API의 네트워크 경계는 어디에 있습니까?
감사합니다. 당신이 설명하는 것은 글래스 피쉬가 실제로 구현하는 방법이지만 JBoss가 구현하는 방식은 아닙니다. 나는 기본적으로 펀트 한 JCA 스펙의 저자들에게 JCA는 서버 측 기능만을위한 것이라고 말했다. –
정확하게. 클라이언트 응용 프로그램은 직접 연결을 가져서는 안됩니다. 클라이언트 측에서 이러한 것들에 대한 지원은 앱마다 다를 수 있습니다. 서버에서 앱으로. 섬기는 사람. – ewernli
Btw, 정확히 당신의 문제는 무엇입니까? – ewernli