实际代码位于无法访问互联网的服务器上,因此我将在此处使用伪代码来尝试解释我想要完成的任务。
我有一个名为MyCoolHMI的项目 其中包含一个GWT网站,其中包含多个客户端/服务器/共享子包 对于此示例,我在MyCoolHMI /com/src/foods/cookies/client/ShowCookieList.java中工作
我在同一工作区中有另一个名为IGotYerCookies的项目,其中包含允许访问the_best_cookies表的数据库DAO / DTO。 dao和dto名为com.src.gotyercookies.database.TheBestCookiesDAO.java和com.src.gotyercookies.database.TheBestCookiesDTO.java 我需要调用TheBestCookiesDAO.getBestCookie(),它返回包含来自ShowCookieList.java的前3个cookie的List。
我需要做什么才能(除了类路径的东西)ShowCookieList.java使用TheBestCookiesDAO和TheBestCookiesDTO?。
我编写了Service和ServiceAsync类,并将它们放在MyCoolHMI / com / src / foods / cookies / shared中,用于DAO和DTO。 我还为DAO和DTO编写了ServiceAsyncImpl,并将它们与IGotYerCookies中的TheBestCookiesDAO / DTO放在同一目录中。
当我从回调中回来时,我无法解决如何处理DTO的问题,或者如何设置安排实际调用以获得回复...
最终服务器是Impl类必须去的地方,共享是Service和ServiceAsync结束的地方。然后我不得不在web.xml文件中添加一个条目。
答案 0 :(得分:2)
您将无法在客户端使用这些类。最简单的解决方案是使用GWT RPC来访问这些对象。阅读本页http://www.gwtproject.org/doc/latest/tutorial/RPC.html,了解如何使用GWT RPC。
您可以在客户端访问它
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;
}
}