2016-11-17 3 views
1

내 개발에 Eclipse Neon 및 Maven을 사용하고 있습니다. 2 가지 주요 프로젝트가 있습니다. 프로젝트 1은 SOAP과 RESTful을 포함한 모든 웹 서비스를 포함한다. 또한 모든 데이터베이스 액세스가 구현됩니다. 프로젝트 2는 Angular 구현 인 UI를 포함합니다. Angular UI는 모든 데이터 액세스에 프로젝트 1의 RESTful 서비스를 사용합니다. 응용 프로그램은 두 프로젝트의 WAR 파일이 들어있는 EAR 파일로 패키지됩니다. (이것은 내 디자인이 아닙니다 !!!)여러 WAR 파일이있는 EAR 파일. 공유 클래스

인증 문제를 처리하는 UI 애플리케이션에는 몇 가지 서블릿 클래스가 있습니다. 지금까지 각 WAR 파일의 클래스는 완전히 독립적이었습니다. 이제 서블릿 클래스 중 하나에서 데이터베이스 테이블의 데이터에 액세스해야한다. 이 기능은 Project 1에 이미 포함되어 있으므로 프로젝트 2의 클래스를 간단히 활용할 수 있습니다.

Eclipse에서 두 프로젝트가 모두 내 작업 공간에 있고 Project 1을 프로젝트 2의 빌드 경로에 추가 했으므로 추가 할 수 있습니다. 그러나 Project 2를 만들려고 할 때 Project 1에서 클래스를 찾을 수 없습니다. Project 1을 Project 2의 내보내기 목록에 추가했지만 아무런 차이가 없었습니다.

필요한 pom 파일을 제공 할 수 있습니다.

나는 무엇을 시도해야할지 모르겠다.

+1

프로젝트 2가 프로젝트 1에 종속 된 경우이 종속성을 추가하려면 [pom 파일 편집] (http://stackoverflow.com/questions/22438304/intermodule-dependencies-in-maven)이 필요합니다. 이 작업을 수행하는 데 도움이 필요하면 불필요한 내용이 생략 된 pom 파일을 제공하는 것이 좋습니다. (즉, Project 2가 웹 서비스를 호스팅하는 프로젝트에 컴파일 타임 종속성을 갖는 것은 이상 할 것입니다. 웹 서비스 프로젝트는 내부 클래스가 아닌 해당 서비스에서 액세스해야합니다.) – DavidS

+0

심각한 응용 프로그램의 아키텍처 그래서 저는 제가하려고했던 것을 포기하고 Angular의 RESTful 서비스와 서블릿 호출을 사용해야했습니다. 나는 그 관심과 흥미를 정말로 고맙게 생각했다. 일부 답변에 대한 의견을 보내고 싶습니다. 때로는 우리 중 많은 사람들이 건축가와 분석가가있는 회사에서 일을 어떻게 진행할지 결정합니다. 개발자는 더 잘 작동 할 것이라고 생각하기 때문에 따라 오거나 변경할 수 없습니다. 우리는 해당 아키텍처의 경계 내에서 변경해야합니다. – OldGuy

+0

제 경우에는 Eclipse 내에서 프로젝트 구성을 변경할 수 없기 때문에 더욱 어려워졌습니다.모든 것은 Maven 설정에서 수행되어야한다. 그래서 여러 번 더 어렵게 만듭니다. Maven에서 성취 할 수 없다면 허용되지 않았습니다. – OldGuy

답변

0

두 응용 프로그램에서 이러한 DB 액세스 기능을 공유하는 한 가지 방법은 간단히 EAR에서 공용 라이브러리로 패키징하는 것입니다.

는 IMO가 동일한 데이터 모델을 수정/여러 응용 프로그램 액세스를 할 수있는 좋은 패턴이 아니에요, 그냥 한 발언

this maven documentation를 참조하십시오. this answer "하나의 데이터베이스를 사용하는 여러 응용 프로그램"질문을 참조하십시오. 자세한 내용은

아마도 기존의 첫 번째 전쟁 (REST 및 SOAP 서비스 포함)에서이 데이터 모델 액세스 논리를 유지하고 두 번째 앱 백엔드가 첫 번째 앱의 새로운 서비스를 사용하게하는 것을 고려해야합니다.

또 다른 옵션은 UI와 백엔드 기능 (서블릿과 API를 함께 제공함)을 제공하여 이러한 모든 웹 응용 프로그램을 단일 패키지 (단일 전쟁)로 패키징하는 것입니다.

편집 :이 응용 프로그램 디자인을 판단 할 수 없어 판단 할 수 없습니다. @David가 지적한 것처럼, 일반적으로 EAR로 패키징 된 다른 용도의 여러 웹 애플리케이션을 보유하는 것은 나쁜 패턴이 아닙니다. 이러한 API가 다양한 유형의 클라이언트 (UI, 백엔드 등)에 대해 만들어진 경우라면 더욱 그렇습니다.

+0

전적으로 동의합니다. 그러나 이것은 단지 하나의 응용 프로그램입니다. 누구든지이 프로젝트를 한꺼번에 두 프로젝트로 구성하여 하나의 귀 파일에 2 개의 전쟁 파일을 작성하기로 결정했습니다. 나는 이것이 디자인의 주춧돌이라는 것에 전적으로 동의한다. 그리고 나와이 프로젝트의 사람들은이 점을 바꿀 수 없습니다. 그래서 우리는 그 문제를 해결해야합니다. Maven에 UI war 파일을 빌드 할 때 서비스 프로젝트의 클래스를 포함시키는 방법을 알아 내면 문제가 해결 될 것입니다. – OldGuy

+0

첫 번째 솔루션 (EAR 공유 라이브러리)을 사용하여 응용 프로그램을 배포하는 방식을 변경할 필요가 없습니다. 그러나 궁금한 점은, 귀하와 귀하의 팀이이 애플리케이션의 디자인을 약간 변경하는 것을 막을 수있는 이유는 무엇입니까? (그런데 나는 그것을 볼 수 없었기 때문에 나는 그 디자인을 판단 할 수 없다.)) –

+3

당신은 디자인에 대해 불평하고있다. @ OldGuy. 그러나 그것의 어느 부분이 당신이 싫어하는 것인지 궁금하다. ** UI 코드는 인터페이스를 통해 비즈니스 로직과 상호 작용하는 훌륭한 디자인 원칙 인 ** : 웹 서비스와 실제로 상호 작용합니다. 웹 서비스를 둘러보고 데이터베이스 코드에 직접 액세스하여 좋은 캡슐화를 계획하고있는 것 같습니다. Rémi는 서블릿에 사용할 새로운 REST/SOAP 서비스를 추가하는 것이 좋다고 생각하지만,이 거리에서도 디자인을 판단 할 수는 없습니다. – DavidS

관련 문제