2012-04-25 2 views
6

enter image description hereEJB3 기업 신청 - 건축/디자인

위의 그림에 나타낸 바와 같이, 나는 입구 역할을하고 3 웹을 보유하고 EJB3 엔터프라이즈 응용 프로그램 (EAR 파일),이 동일한 데이터 스토어와 통신하고 트랜잭션하는 응용 프로그램 (WAR 파일)입니다. 이 3 개의 웹 애플리케이션은 포틀릿 구현이 아니지만 엔터프라이즈 애플리케이션의 지속성 계층을 통해 데이터 저장소와 상호 작용하는 일반 웹 애플리케이션입니다. 이러한 웹 응용 프로그램은 독립적으로 개발되므로 일부는 엔터프라이즈 응용 프로그램의 웹 서비스를 사용하고 일부는 EJB 클라이언트를 사용합니다. 또한

, 아래 그림과 같이 이러한 웹 어플리케이션 (웹 앱 1, 웹 앱 2 및 웹 앱 3)를 교체하고 통신 및 데이터베이스와 거래하는 독립 기업의 앱을 사용하는 다른 옵션이있다 :

enter image description here

자, 내 질문은 다음과 같습니다.

1) 위의 두 가지 옵션 중에서 가장 좋은 옵션은 무엇입니까?

2) 클라이언트로 작동하는 웹 응용 프로그램을 독립 Enterprise Apps (EAR 파일)로 대체 할 때 어떤 영향을 줍니까?

3) 트랜잭션 처리, SSO 기능, 확장 성 및 기타 요인에 대한 더 나은 모델은 무엇입니까?

4) 다른 더 우수한 모델이 있습니까?

EDIT :

1) EAR 파일과 상호 작용하는 바람직한 방법은 상기 제 1 모델에서, - 웹 서비스 또는 EJB 클라이언트 JAR 파일/라이브러리 (인터페이스 및 유틸리티 클래스)?

2) 두 모델 모두 메모리 사용량 (서버 RAM)과 성능이 어떻게 다른가요? 어떤 큰 차이가 있습니까?

+1

왜이 두 가지 옵션을 고려하고 있습니까? 예를 들어 다른 배포 옵션에 맞습니까? 또한 옵션 2에서 데이터 액세스를 분할하는 방법 - 각 EAR이 자신의 데이터에 대해 "소유권"을 갖습니까? 아니면 전체 EAR 전체가 전체 데이터 세트에 대해 전체 읽기/쓰기 액세스를 가질 수 있습니까? 별도의 경우 트랜잭션 경계는 어디에 있습니까? 각 EAR은 자신의 경계에만 관심을 가져야합니까? 어떤 유형의 데이터 저장소가 있으며 병목 현상이 될 것입니다. 귀하의 신청서가 우세하게 읽혀 지거나 쓰여져 있습니까? 미안, 모든 질문에 대해 - 나는 이것이 내 자신의 무지를 반영하지 않기를 바란다! – Romski

+0

Romski : 나는이 두 가지 옵션을 내 호기심으로 생각하고 베스트 프랙티스가 무엇인지 알아 내고 우리의 요구에 더 잘 맞습니다. 귀하의 질문에 관해서는 각 EAR에 소유권이 있습니다. 그것들은 다른 기능을 다루거나 다른 비즈니스상의 이유로 그 방법으로 설계/개발됩니다. 모든 응용 프로그램은 주로 읽기 및 쓰기가 가능하며 현재 RDBMS를 사용합니다. – bchetty

+0

또한 원래 게시물의 '수정'부분을 확인하십시오. – bchetty

답변

3

당신이 너무 추상적이어서 나는 그것을 또한 할 것입니다. 우리가 "Portal", "Enterprise Apps"등등으로 모든 윙윙 거리는 단어를 제거한다면 ... 결국 우리는 3 개의 웹 앱과 공통 라이브러리 또는 프레임 워크 (엔터프라이즈 애플리케이션)를 갖게됩니다.

자사의 앱을 쉽게 볼 수 있습니다. 세 개의 웹 앱을 개발해야하는 세 명의 개발자가 있습니다. 앱을 제작하는 데 유용한 몇 가지 공통 코드를 제공합니다. 사용할 모델은 제공 할 코드의 종류에 따라 다릅니다.

1- 귀하는 일부 utils 및 공통 비즈니스 코드만을 제공합니다. 귀하의 필요에 맞는 전형적인 도서관이 될 수 있습니다. (Java EE 환경에서는 단일 데이터 저장소에 대한 세션 팩토리를 공유하는 지속성 캐시 레벨 2의 이점을 어떻게 활용할 수 있는지 고려해야합니다)

2.- 공유 서비스를 지속성, 캐시, 보안, 감사로 제공합니다 , 등등 ... 첫 번째 옵션으로 서비스 계층이 필요합니다. 하나의 인스턴스 만 필요하므로 공유 상태가됩니다.

3 - 더 일반적인 경우는 공통 비즈니스에 대한 일부 비즈니스 API와 서비스 계층을 제공하는 것입니다.

시나리오에 대해보다 복잡한 솔루션을 사용해야하는 요구 사항을 나타내지는 않습니다.

편집 :

이 선호되는 경우에 대해 RMI (EJB를 클라이언트) 또는 웹 서비스. 필자는 항상 rmi를 사용하여 지리적으로 가까운 애플리케이션을 전달합니다. 그것은 사용 간단하고 프로토콜은 webservices 훨씬 더 빠릅니다 (구글에서 rmi webservices 성능을 검색하는이 주제에 비해 많은 비교를 읽을 수 있습니다).
한편 rmi는 네트워크 대기 시간에 더 민감하며 특별한 방화벽 구성이 필요하며 웹 서비스와 더 많이 결합됩니다. 따라서 제 3 자에게 서비스를 제공하거나 지리적으로 희소 한 서버를 연결하는 경우 웹 서비스 또는 REST를 선호합니다.

처음에는 마지막 질문과 관련하여 동일한 서버에 하나 또는 10 개의 응용 프로그램을 배포하는 데 차이가 없습니다. 배포 비용은 응용 프로그램 사용에 대한 오버 헤드에 비해 중요하지 않습니다. 물론 이것을 일반적인 가정으로 받아 들여야합니다. 물론 응용 프로그램을 배포하는 방법과 크기는 메모리 사용량 및 기타 요인에 영향을 미칩니다.

귀하는이 결정을 필요할 때 쉽게 변경할 수 있다는 점을 고려해야합니다. 따라서 간단한 솔루션으로 시작할 수 있다고 말한 것처럼 응용 프로그램을 배포하는 데 문제가 발생하면 귀를 쉽게 재구성 할 수 있습니다.

+0

FidoX : 답변 주셔서 감사합니다. 원래 게시물의 '수정'부분을 확인하십시오. – bchetty

0

저는 Fedox와 동의하는 경향이 있습니다. 만약 다른 솔루션보다 하나의 솔루션을 선택해야 할 이유가 없다면 (비즈니스 이유, 기술적 이유 등) 최소한의 저항 경로를 선택할 수 있습니다. 내 마음에 그것은 첫 번째 해결책이 될 것입니다.

일반적으로 간단하게 시작하고 필요에 따라 복잡성을 추가하십시오. 당신의 솔루션은 맥락없이 의미가 없습니다. 은행 응용 프로그램은 블로그와 다른 고려 사항이 필요합니다.

희망이 그것은 가치가 수백만이다 매우 성공적인 프로젝트, Vitria's BusinessWare라는 새로운 플랫폼이 있습니다

0

을하는 데 도움이됩니다.
이제 우리는 이론적으로 어떻게 작동하는지 알아 보겠습니다.
프로젝트는 데이터베이스와 연결되고 웹 서비스는 EJB와 연결됩니다. 우리는 다음을 배울 수 그들의 개념에서 : 다른 웹 -에

  • 웹 서비스 : 그 작업

    1. 메인 EJB 무 상태 빈을 생성 (API은)의 메시지 를 전달하는 것입니다 서비스

    2. 웹 서비스 - 웹 응용 프로그램
    3. 웹 응용 프로그램 - 다른 웹 서비스
  • EJB의 목적은 기본 데이터베이스 에서 먼저 유효성 검사를 수행 한 다음 다른 모듈로 호출을 전달합니다.

  • EJB는 DB
  • 의 모든 프로세스를 제어 할 받아 무료 전송에

  • 만이 EJB 개 모듈까지 메시지 대기열을 연결
  • EJB을 확보 할 수있는 DB에 액세스 할 수 있습니다
  • EJB은 메시지를 보낼 위치를 결정합니다.
  • +0

    제발 누군가가 왜 downvote를 얻었는지 설명해 주시겠습니까? – GingerHead

    +0

    Mike : 내가 원하는 것을 찾지는 못했지만 노력에 대한 답을 upvoted. 그래서 나는 다시 너를 상상할 수 없다. :( – bchetty