2014-09-09 2 views
2

Eclipse에서 만든 Maven 웹 프로젝트 (Java)가 있습니다. JDeveloper 12c로 프로젝트를 옮기고 Maven 특성을 비활성화해야만했습니다. JDeveloper에서 프로젝트의 속성을 수정하기 위해 몇 가지 수정해야했습니다.웹 프로젝트를 두 개의 개별 프로젝트/모듈로 분할하는 방법

백엔드 코드 (Service Impl, DAO 및 Entity 클래스)를 여러 다른 프로젝트에서 사용할 수 있으므로 단일 대형 웹 프로젝트를 2 개의 프로젝트로 분리/평가하려고합니다. 하나는 프런트 엔드 용이며 각 프로젝트마다 고유하며 다른 하나는 모든 프로젝트에 공통적 인 백엔드 용입니다.

내가 할 수 있다고 생각하는 몇 가지 방법이 있습니다.

1) 단일 대형 웹 프로젝트에서 2 개의 프로젝트를 만듭니다. 웹 UI 프로젝트 및 웹 백엔드 프로젝트

2) 코드를 그대로 유지하고 maven 모듈 또는 maven overlay 기능을 사용하고 동일한 코드에서 2 회 생성합니다.

다른 프로젝트 나 멀티 모듈 프로젝트에 따라 프로젝트를 처리하지 않았습니다. 이 유형의 아키텍처와 관련하여 좋은 점이나 나쁜 점이 있습니까?

다른 제안 사항이 있거나 이전에 유사한 상황이 발생했는지 알려 주시기 바랍니다. 미리 감사드립니다.

답변

0

많은 하위 프로젝트로 프로젝트를 분할하는 것이 좋습니다. Maven 멀티 모듈 프로젝트 설정 (docs)을 사용할 수 있습니다. 모든 프론트 엔드 프로젝트는 별도의 maven 프로젝트 (부모 pom의 모듈)를 가지며 백엔드를위한 하나의 프로젝트 (모듈)를 갖게됩니다.

요구 사항에 따라 당신은 만들 수 있습니다

  • EJB 항아리에 백엔드와 WAR 아카이브의 모든 프런트 엔드와의 EAR 아카이브,
  • EJB 항아리와 모든 프론트 엔드 프로젝트에 대한 WAR 아카이브 (또는 non-plain-javaee 설정을위한 jar 파일) WEB-INF/lib 안에 있습니다.

멀티 모듈 설정은 몇 가지 장점이 있으며 주된 단점은 단일 mvn 명령을 실행하여 처음부터 전체 응용 프로그램을 빌드 할 수 있다는 것입니다.

+0

감사합니다. Ajan. 프런트 엔드 코드가 EAR에서 2 개의 별도 war 파일로 배포되는 경우 백 엔드 프로젝트의 클래스를 직접 호출 할 수 있습니까? 인증을 위해 사내 타사 라이브러리/병 (Jar)을 사용하고 인증을 위해 스프링 보안을 사용합니다. 프런트 엔드 프로젝트와 백엔드 프로젝트 간의 통신을위한 추가 코드를 작성해야하는지 알고 싶습니다. – Superman9999

+0

다른 WAR 아카이브에서 직접 서비스에 액세스 할 수 없습니다. 그러나 타사 라이브러리를 EAR 아카이브의/lib 폴더에 넣을 수 있습니다 (http://maven.apache.org/plugins/maven-war-plugin/examples/skinny-wars.html 참조). EJB jar에 코드를 넣고 EAR의 루트 폴더에 넣을 수 있습니다. 계약에 따라 EAR의 모든 EJB는 다른 모든 아카이브에서 액세스 할 수 있습니다. EJB를 사용하지 않고 Spring을 사용한다면 공통 논리를 별도의 JAR 아카이브 (별도의 mvn 프로젝트)에 넣고 모든 WAR 아카이브 (단일 WAR 아카이브 = 단일 어플리케이션)에 넣을 수 있습니다. – Arek

관련 문제