2010-06-22 4 views
0

클라이언트 [임베디드 서버] -server - (- 서버) - (...) 접근 방식을 사용하는 Java에서 응용 프로그램을 개발해야합니다. (커밋되거나 자동으로 전송되는 데이터)클라이언트의 EJB

워크 플로 (엔티티, 유효성 검사, 논리, 세션)는 모든 곳에서 동일합니다. 서버 - 서버 연결에서 EJB-s (엔티티 및 세션 Bean, 나중에는 메시지 구동 Bean)를 사용하는 것이 논리적 인 것처럼 보입니다. 클라이언트는 로컬 "서버"또는 사용자 설정을 기반으로 한 하나 이상의 실제 서버와 통신합니다 (서버는 많은 서버와 통신 할 수 있음).

(로컬 Java EE 서버를 실행하지 않고 클라이언트 설치 및 메모리 사용을 피하기 위해) EJB 프레임 워크를 로컬로 사용할 수 있습니까? 그렇다면 좋은 해결책으로 간주됩니까? 아니면 클라이언트에 다른 로직을 구현하고 설정에 따라 전환해야합니까? 어느 것이 더 쉬울까요?

+0

** 클라이언트에서 ** EJB를 실행하거나 EJB를 호출해야합니까? –

+0

EJB (서버 파트)에서 모든 것을 구현해야하므로 "왜 두 인터페이스/구현이 같은 일을하는 지?"라고 생각했습니다. – Dutow

+0

대부분의 IDE를 사용하여 Stateless 세션빈에서 웹 서비스를 만들 수 있습니다. –

답변

0

예, 가능합니다. EJB 3.1 spec은 Java EE 응용 프로그램 서버없이 Java SE 응용 프로그램에서 사용할 수있는 임베디드 EJB 컨테이너 (20 장)를 정의합니다.

그러나 EJB 3.1 이전에는 쉽게 삽입 할 수있는 컨테이너가 있습니다. Apache의 OpenEJB

이것이 좋은지 나쁜지는 논란의 여지가 있지만 기존 EJB가 있고 로컬로 사용하고 싶다면 왜 그런지 생각해보십시오. 다른 사람들은 아마도 Spring을 선호 할 것입니다. 그러나 그것에 대해 많은 경험을 할 수는 없으므로 그것에 대해 언급 할 수는 없습니다.

+0

나는 스프링과 웹/mvc 프레임 워크를 데이터베이스와 응용 프로그램 분리로 테스트했습니다. 그것은 (좋은) 클라이언트 - 서버 - 서버에 대한 지원을하고 있습니다 ...이 같은 의사 소통은? 이 경우 클라이언트에서 직접 서버 데이터베이스에 쓰는 것이 좋지 않습니다. – Dutow

0

로컬에서 Java EE 서버를 사용하지 않고도 클라이언트에서 EJB를 호출 할 수 있습니다.

모든 Java EE 서버에는 Java EE 서버에 연결하는 데 필요한 클래스가 들어있는 클라이언트 jar가 있습니다. jndi.properties 파일을 사용하여 JNDI 서버에 대한 구성을 제공하거나 초기 JNDI 컨텍스트를 가져 오기 전에 시스템 속성을 설정해야합니다.

원본 사양이 클라이언트/서버 환경에서 대상으로 만들어졌으며 n 계층 웹 응용 프로그램에서 실수로 종료되었다고 생각합니다.

로컬 컴퓨터에 배포해야하는 경우 Java EE 서버에 응용 프로그램을 배포하는 것이 좋습니다. JBoss 또는 글래스 피쉬는 모듈 식이며 실행하기에 그다지 중요하지 않습니다. 필요없는 모듈을 버리고 앱을 배포하십시오.

관련 문제