2013-03-02 4 views
0

하나의 GWT 프로젝트에서 새로운 RemoteService 구현을 재사용하려고 애써 왔습니다. 여기에 큰 그림이 있습니다.2 개의 GWT 프로젝트간에 RemoteService 구현 공유

나는 smartgwt-mobile 프로젝트를 가지고 있으며, 우리는 똑같은 프로젝트의 데스크탑 버전을 일반 smart-gwt로 사용하기로했습니다. 이 새로운 응용 프로그램의 GUI는 분명히 다르지만 서버 측 코드는 완전히 동일합니다.

RemoteService 인터페이스, 비동기 버전 및 전체 서버 패키지를 새로운 소스 구조 내의 다른 프로젝트에있는 패키지 폴더에 연결하거나 (GWT 플러그인을 사용하여 Eclipse를 사용하고 있습니다) 추가하거나 빌트인 코드 경로를 빌드 경로의 필터링 된 소스 폴더로 가져오고 Eclipse 종속성 검사기를 만족하지만 GWT 컴파일러는 차용 한 코드를 찾을 수 없으므로 모듈 .gwt.xml 파일에 "상속"선언을 추가해야한다고 제안합니다 .

이 작업을 수행하고 다시 컴파일하면 두 번째 모듈 .gwt.xml 파일이 다른 프로젝트에 영향을주기 때문에 수용 할 수없는 빌린 코드의 루트에 있어야합니다.

GWT 모듈 설명서를 읽었으나 이러한 체계를 구현하는 방법을 찾지 못했습니다. 내가 성취하려고하는 것을 실제로하는 것이 불가능할 수도 있습니다.

문제가 해결된다면 GWT RemoteService 모듈을 정의하는 세 번째 프로젝트를 만들어서 모바일 및 데스크톱 smartgwt 프로젝트에서 상속 받게됩니다.

누구든지이 문제를 해결하는 방법에 대한 제안이 있습니까? 난 그냥 이미하고 있어요, 때문에 왜

답변

1

는 I'l는 "third project that simply defines a GWT RemoteService module that then will be inherited by both the mobile and desktop smartgwt projects"

에 동의합니다. 네, 분명히 모든 내 DB 비즈니스 로직 메소드를 가지고있는 DAO 프로젝트 (DB 레이어)입니다.

그리고 항상 DAO layerdata에서 services(ex.webservices)으로 분리하여 관리하는 것이 좋습니다.

+0

입력 해 주셔서 감사합니다. 프로젝트간에 코드를 공유하는 간단한 방법이 있기를 바랬지 만, 다른 제안이 없으므로 두 GWT 프로젝트에서 공유하는 RemoteService 프로젝트를 만들 계획입니다. – Gert

+0

그리고 코드 보전을 위해 더 작은 덩어리로 Upvote를 사용하는 것이 좋을 것입니다. –

+0

기본적으로 내 게시물에서 인용하여 대답합니다. 비록 내가 이것을 기존의 RemoteService 코드에 링크하는 것에 관한 나의 질문에 대한 대답이라고 생각하지는 않는다. 나는 분명히 내가 별도의 프로젝트를 만들 수 있다는 것을 알고 있었지만,이 특별한 경우에 나는 또 다른 프로젝트를 다시 만드는 것을 피하려고 노력했다. 다른 제안이 없다는 것은 나에게 쉬운 방법이 없다는 표시입니다. 나는 너의 대답을 upvote 것입니다. – Gert

0

그래서 문제를 해결 한 방법은 다음과 같습니다. 기존 GWT 프로젝트 소스 폴더에 연결하는 문제는 GWT 컴파일러가 항상 GWT 모듈 정의 파일 (.gwt.xml)을 찾을 것으로 기대한다는 것입니다. 나는 이클립스 의존성 해결자가 아무런 문제가 없다고하더라도, GWT 컴파일러가 행복하다는 식으로 소스 폴더에 링크 할 수 없었다.

그래서 GWT Eclipse 플러그인을 사용하여 세 번째 프로젝트를 만들었습니다. "Create Sample Code"옵션의 선택을 취소하여 빈 GWT 프로젝트로 끝났습니다. 그런 다음 '추가'> '새로 만들기'> '기타'> 'Google'> '모듈'을 선택하고 모듈 이름을 입력하십시오. 'myModule', 패키지 이름, 예 : 'com.myCompany.myModule'을 클릭하고 '마침'을 클릭하십시오. GWT 새 모듈 마법사가 'com.myCompany.myModule.client'라는 패키지와 하위 패키지를 만들고 'com.myCompany.myModule.server'라는 파일을 직접 만들었습니다.

이제 원격 서비스 및 관련 클래스 (구현 및 비동기 버전)와 RemoteService 코드가 빌려온 원래 프로젝트의 모든 서버 측 코드를 복사하여 새 프로젝트에 붙여 넣었습니다. 곧 모든 의존성을 만족 시켰고 새로운 Smart-GWT 웹 앱 프로젝트에서 Build Path 대화 상자를 열고 GWT RemoteService 모듈 프로젝트를 프로젝트 탭에 포함 시켰습니다. 마지막으로 할 일은 .gwt에 상속 요소를 추가하는 것입니다.XML 파일 :

<inherits name='com.myCompany.myModule.MyModule'/>

짜잔 : 그것은 모든 작업이 완료되었습니다. 'GWT Compile Project'를 선택하면 경고없이 dev 모드로 컴파일되고 실행됩니다.

이제 첫 번째 프로젝트에서 공유 코드를 삭제하고 모듈에서 상속해야합니다. 이는 방금 내가 한 작업의 반복입니다.

결국 내가 상상했던 것보다 훨씬 고통스럽지 않으므로이 방법을 권장합니다.

관련 문제