Java EE 시스템을 구성하는 방법은 무엇입니까? 적용이라는 용어는 어떻게되어 귀의 내용이 정의됩니까?

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

문제

Java EE 5로 개발 된 대형 소프트웨어 시스템의 빌드 시스템과 디렉토리 구조를 설계하는 과정에 있습니다. 빌드 시스템은 Ant를 사용하여 구현됩니다.

우리는 주제별로 그룹화되는 여러 서비스가 있습니다. 각 서비스는 웹 서비스 또는 EJB를 제공합니다. 각 서비스는 전용 응용 프로그램 서버 클러스터에서 실행됩니다. 따라서 여러 클러스터가 있으며 이러한 클러스터 중 일부는 주제별로 논리적으로 그룹화 할 수 있습니다.

나는 일반적인 정의와 예제를 읽었지만 여전히 Java EE 용어에 대해 혼란스러워합니다.

  • Java EE 응용 프로그램이란 무엇입니까? 따라서 귀 파일의 내용은 무엇입니까?
  • Java EE 프로젝트 란 무엇입니까? (이 용어는 NetBeans와 Java Blueprints 가이드 라인 프로젝트 협약에 의해 사용됩니다.

이 귀에 우리의 완전한 시스템이 포함되도록 모든 EJB와 전쟁 모듈 패키지 파일을 하나의 귀에 넣어야합니까?

아니면 이러한 서비스 그룹을 논리적으로 만 그룹화하지만 기술적으로는 그룹화되지 않았음에도 불구하고 각 서비스 그룹을 한쪽 귀에 넣습니까?

아니면 각 서비스에 대해 별도의 귀를 조립합니까? 즉, 단일 EJB JAR 파일과 때로는 EJB 및 전쟁 파일 만 포함하는 경우가 가장 많습니까?

아니면 응용 프로그램의 개념을 무시하고 단지 각 응용 프로그램 서버 클러스터에 대해 정확히 하나의 배포 파일을 갖도록 EJB 및 WAR 파일을 작성합니까?

내 주요 질문은 다음과 같습니다. 포장 귀 파일의 장점은 무엇입니까?

내가 지금 보았을 때, 귀 EJB와 전쟁 파일이 필요하며, 또한 개미 건물 시스템과 소스의 디렉토리 구조에 중첩 된 하위 프로젝트의 개념이 있습니까?

편집 : 답변 해 주셔서 감사합니다! 귀에 포장 된 응용 프로그램은 다소 원자 서브 시스템 인 것 같습니다. 그래서 나는 중첩 된 하위 프로젝트 구조 (제작 시스템과 소스의 디렉토리 구조에만 볼 수 있음)와 다소 많은 양의 귀를 가질 것이라고 생각합니다. 및/또는 전쟁 모듈 및 단일 서비스 구현 (단일 응용 프로그램 서버 클러스터에 배포 됨).

도움이 되었습니까?

해결책

각 귀에 넣기로 결정한 것은 조직 및 기술 문제에 의해 관리된다고 생각합니다.

귀의 가장 중요한 기술적 역할은 런타임 환경에서 클래스 로더 루트라고 생각합니다. 이것은 일반적으로 다른 버전의 라이브러리와 자신의 클래스를 다른 귀에 배포 할 수 있음을 의미합니다. 즉, 컨테이너 루트 클래스 경로를 공정하게 비워 두어야합니다 (또는 컨테이너 공급 업체가 제공 한)는 하나의 Phyical 컨테이너가 충돌하는 라이브러리를 사용하여 여러 응용 프로그램을 서비스 할 수 있기 때문입니다. 공통 코드베이스를 사용하여 여러 가지 다른 응용 프로그램을 개발하는 경우 좋은 소식입니다. 서로를 엉망으로 만들지 않고도 동일한 서버 농장에 많은 프로젝트를 배포 할 수 있습니다.

일반적으로 귀보다 작은 소프트웨어 단위를 배포하지 않습니다. 각 귀는 다소 완전히 자체 포함 할 수 있습니다. 나는 일반적으로 소유 조직이 응용 프로그램이나 하위 시스템으로 생각하는 것을 반영 할 수있게 해줍니다. 일반적으로 여러 귀에 동일한 구성 요소를 패키지 할 수 있습니다.

다른 팁

여기에 많은 질문이 있습니다.

Java EE 프로젝트는 Java EE 기술을 사용하는 귀 또는 전쟁 배치입니다. JSPS와의 전쟁이 있고 관계형 데이터베이스의 JDBC 액세스가있는 경우 Java EE 프로젝트입니다. 원래 의도는 귀 파일이 "엔터프라이즈"였으며 이는 EJB를 의미했다는 것입니다. 귀 파일에는 EJB, 전쟁, 항아리, 전체 엔칠 라다가 포함되어 있습니다.

서비스 측면에서 생각은 조금 다릅니다. 유지 보수가 완료되면 함께 포장 된 구성 요소가 함께 가져 와야하기 때문에 배포는 신중하게 고려할 가치가 있다고 생각합니다.

따라서 서비스를 패키지하는 방법에 대해주의 깊게 생각하십시오. 그것은 전부 또는 전혀 담요 대답이 아닙니다, IMO. 귀하의 서비스가 수행하는 작업과 서비스가 어떻게 사용될 수 있는지 살펴보아야합니다. 패키지 및 배치 방법을 결정해야합니다.

논리적 및 조직적 고려 사항이 모두 작동합니다. 각 귀에는 특정 기능과 관련된 모든 조각이 포함됩니다. 우리는 항상 각 귀가 자체적으로 포함되어 있고 하나 이상의 컨테이너에 배치 될 수 있다고 가정 할 수 있습니다. 내가 항상 따라온 전형적인 접근법은 각 귀에 하나 이상의 항아리와 전쟁을 포함하는 것입니다. 각 전쟁 또는 항아리에는 일부 주요 구성 요소 또는 관련 구성 요소 세트가 포함되어 있습니다. 귀는 응용 프로그램의 구성 요소 및 웹 앱이 포함 된 엔터프라이즈 애플리케이션을 나타냅니다. 예를 들어 내가 참여한 결제 처리 시스템이 있습니다. 귀에는 결제 처리 시스템을 실행하는 데 필요한 모든 것이 포함되어 있습니다. 여기에는 6 개의 항아리와 3 개의 전쟁이 포함되었습니다. 각 JAR은 기능의 일부 기능 또는 논리적 그룹화를 나타냅니다. 각 전쟁은 웹 앱을 나타 냈습니다. 항아리의 구성의 예 :

  • 핵심 기능을위한 항아리
  • EJBS 용 항아리
  • 고급 금융 수학 작품을위한 항아리
  • 우리의 보안 조각 등을위한 항아리. 여러 항아리가있는 항아리는 다른 사람들이 다른 조각을 개발하여 다른 일식 프로젝트에서 일하고 필요에 따라 모두 결합했다는 사실에 의해 지시되었습니다. 단단하고 빠른 규칙은 없으며 팀과 상황에 맞는 모든 것이 있습니다.
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top