2014-12-02 13 views
0

실제 코드는 인터넷에 액세스 할 수없는 서버에 있습니다. 따라서 여기에서 가상 코드를 사용하여 수행하려는 작업을 설명하려고합니다. . 내가 MyCoolHMI 라는 프로젝트가 그 안에 포함 된 한 GWT 웹 응용 프로그램에서 외부 객체를 사용하려면 정확히 무엇이 필요합니까?

내가 MyCoolHMI /com/src/foods/cookies/client/ShowCookieList.java하고 있어요 예를 들어 다수의 클라이언트/서버/공유 서브 패키지 와 GWT 웹 사이트입니다

다른 작업 중에는 the_best_cookies 테이블에 대한 액세스를 허용하는 데이터베이스 DAO/DTO가 포함 된 IGotYerCookies라는 동일한 작업 영역에 다른 프로젝트가 있습니다. dao와 dto는 com.src.gotyercookies.database.TheBestCookiesDAO.java와 com.src.gotyercookies.database.TheBestCookiesDTO.java입니다. ShowCookieList에서 상위 3 개의 쿠키가 들어있는 List를 반환하는 TheBestCookiesDAO.getBestCookie()를 호출해야합니다. 자바.

(클래스 경로 이외의) ShowCookieList.java가 TheBestCookiesDAO 및 TheBestCookiesDTO?를 사용하려면 정확히 무엇이 필요합니까?

필자는 Service 및 ServiceAsync 클래스를 작성하여 DAO 및 DTO를 위해 MyCoolHMI/com/src/foods/cookies/shared에 배치했습니다. 또한 DAO 및 DTO 용 ServiceAsyncImpl을 작성하고 IGotYerCookies에 TheBestCookiesDAO/DTO가있는 동일한 디렉토리에 두었습니다. 그것은 다시 콜백에서 올 때 나는 DTO를 처리하는 방법 주위에 내 머리를 포장 할 수

, 또는 1 개 등을 얻을 수있는 실제 전화를 배치 설정하는 방법 .. 결국 서버에서

은 어디 Impl 클래스는 Service and ServiceAsync가 끝난 곳에서 공유해야했습니다. 그런 다음 web.xml 파일에 항목을 넣어야했습니다.

답변

2

클라이언트 측에서 이러한 클래스를 사용할 수 없습니다. 가장 간단한 해결책은 GWT RPC를 사용하여 해당 개체에 액세스하는 것입니다. GWT RPC 사용 방법에 대한 내용은 http://www.gwtproject.org/doc/latest/tutorial/RPC.html을 참조하십시오. 당신이

BestCookiesServiceAsync service = (BestCookiesServiceAsync) GWT.create(BestCookiesService.class); 

BestCookiesService 인터페이스 클라이언트 부분에서 클라이언트 측에서

@RemoteServiceRelativePath("BestCookiesService") 
public interface BestCookiesService extends RemoteService { 

    // methods 
    // Cookie should implement IsSerializable 
    Cookie[] getBestCookies(); 

} 

BestCookiesServiceAsync 인터페이스 (복사 이전의하지만 AsyncCallbacks과)

public interface BestCookiesServiceAsync { 

    // same methods but with callbacks 
} 

BestCookiesServiceImpl를 액세스 할 수있는 방법

이를 수업. 서버 측에서 첫 번째 인터페이스 구현입니다.

public class BestCookiesServiceImpl extends RemoteServiceServlet implements BestCookiesService { 

    // you can access your DAOs here 
    @Override 
    public Cookie[] getBestCookies() { 
     BestCookiesDAO dao = getBestCookiesDAO(); 
     BestCookiesList list = dao.getBestCookies(); 

     Cookie[] array = new Cookie[list.size()]; 
     for (int i = 0; i < list.size(); i++) { 
      array[i] = new Cookie(list.get(i).getIngredients()); 
     } 

     return array; 
    } 

} 
+0

글쎄, 그게 내가 찾고있어. 내가 추측하는 방법, RPC는 (비록 자바에만 메서드가 있습니다, 우리는 그것을 프로 시저 호출 .. grrrr) 외부 개체를 볼 수 있습니다. 좀 더 자세한 내용을 추가하겠습니다. – JoGotta

+0

ShowCookieList 내에서 getBestCookie 호출의 반환 유형은 무엇입니까? 상위 3 개 쿠키의 구성 요소와 이름이 들어있는 DTO 목록을 반환합니다. 그래서 ShowCookieList 객체 내부에서 DTO 목록을 어떻게 가져 와서 그 메소드에 접근하여 안에 포함 된 이름과 성분을 표시 할 수 있습니까? – JoGotta

+0

BestCookiesService에서 TheBestCookiesDTO getBestCookies() 메서드를 넣으면 TheBestCookiesDTO에 대한 진입 점을 찾을 수 없다는 오류가 표시됩니다. – JoGotta