2011-09-14 4 views
3

현재 GlassFish에 배포 된 엔터프라이즈 응용 프로그램을 작성 중입니다. GlassFish 3.1에 배포 된 EJB 내에서 cassandra 백엔드와 통신 할 수있는 올바른 방법을 찾으려고합니다. 나는 Pelops를 사용하여 Cassandra와 대화 할 것을 권합니다.Java EE (GlassFish)에서 Cassandra 사용

면책 조항 : 저는 Java EE 및 엔터프라이즈 응용 프로그램 서버 및 EJB의 개념을 처음 사용합니다. 이 프로젝트의 목적 중 하나는 이러한 주제를 배우는 것입니다. 이것은 최고의 관행에 대한 올바른 방향으로 지시되거나 최선의 관행을 찾아야하는 곳을 지적하고자하는이 질문의 범위를 벗어납니다. 지금까지 Google은이 주제에 대해별로 도움이되지 않았으며 일관성이 없었습니다.

좀 더 구체적으로 말해서 cassandra 용 JCA 커넥터를 작성해야합니까? Pelops를 통해 cassandra와 통신하는 싱글 톤 EJB를 사용합니까? 내 EJB에서 pelops를 직접 사용 하시겠습니까? (비록 당신이 ejbs에서 소켓 연결을 만들어야한다고 생각하지는 않지만) 완전히 다른 것?

답변

1

우리가 EJB를 구현하지 않아도 Glassfish 3.1에 백엔드를 배포하고 내부적으로 우리는 Cassandra와 대화하는 작은 라이브러리를 만들었습니다. 그것은 매우 적극적으로 개발

https://github.com/rantav/hector

:

는 지금 연결하고 카산드라 작업을위한 가장 많이 사용되는 라이브러리는 헥터입니다. EJB에서 사용하는 것을 본 적이 없지만 사용했고 매우 견고합니다. Pelops가 어떻게 개발 될지 모르겠다. 우리가 처음에 헥터를 사용하지 않은 이유를

우리가 여기서 개발 된 우리의 요구에 맞게 매우 사용자 정의 응용 프로그램입니다 것을, 즉.

는만큼 당신이 EJB의 클라이언트 소켓을 사용할 때, 당신은 안전해야, EJB에 대한 제한은 애플리케이션 서버에 의해 처리되어야한다 서버 소켓입니다. 그러나 다른 필요 사항이 있으면 JCA를 작성해야합니다.

2

EJB 스펙은 EJB가 소켓이 아닌 서버 소켓을 여는 것을 금지합니다. 그러나 EJB가 스레드를 만들지 못하게합니다. Pelops (또는 Hector)가 풀링을 처리 할 스레드를 생성합니까? 이러한 라이브러리 풀링 않는 두 있기 때문에, 그들은 확실히 나에게 자원 어댑터 층에 속하는 뭔가 기분이

따로 법률의 편지. 수명주기가 컨테이너에 의해 제어되는 EJB에 대해서는 긴장 될 것이고 수명주기가 다소 독립적 인 연결 풀과 같은 리소스에 매달려서 길어질 수 있습니다.

EJB의 대부분의 구현은 상당히 용인합니다. 따라서 EJB에서 직접 Pelops/Hector를 사용하는 것이 구조적으로 올바른지 아닌지에 관계없이 작동 할 가능성이 큽니다.

나는 세계에서 항상 시간을 보내고 있다면, 나는 그 라이브러리 중 하나를 포장하는 자원 어댑터를 쓸 것입니다. 그러나 이것은 실질적인 수익을 무시할 수있는 상당한 자원의 투자 일 것입니다.