java - 在 GWT Web 应用程序中使用外部对象到底需要什么

标签 java gwt gwt-rpc

实际代码位于无法访问互联网的服务器上,因此我将在此处使用伪代码来尝试解释我想要完成的任务。

我有一个名为 MyCoolHMI 的项目 其中包含一个带有多个客户端/服务器/共享子包的 GWT 网站 对于此示例,我正在 MyCoolHMI/com/src/foods/cookies/client/ShowCookieList.java

我在同一个工作区中有另一个项目,名为 IGotYerCookies,其中包含一个数据库 DAO/DTO,允许访问 the_best_cookies 表。 dao 和 dto 称为 com.src.gotyercookies.database.TheBestCookiesDAO.java 和 com.src.gotyercookies.database.TheBestCookiesDTO.java 我需要调用 TheBestCookiesDAO.getBestCookie(),它返回包含 ShowCookieList.java 中前 3 个 cookie 的列表。

为了让 ShowCookieList.java(除了类路径内容之外)使用 TheBestCookiesDAO 和 TheBestCookiesDTO,我到底需要做什么?

我已经编写了 Service 和 ServiceAsync 类,并将它们放置在 MyCoolHMI/com/src/foods/cookies/shared 中作为 DAO 和 DTO。 我还为 DAO 和 DTO 编写了 ServiceAsyncImpl,并将它们与 IGotYerCookies 中的 TheBestCookiesDAO/DTO 放在同一目录中。

我无法思考如何在 DTO 从回调返回时处理 DTO,或者如何设置安排实际调用以返回 DTO。

最终服务器是 Impl 类必须去的地方,共享是 Service 和 ServiceAsync 结束的地方。然后我必须在 web.xml 文件中添加一个条目。

最佳答案

您将无法在客户端使用这些类。最简单的解决方案是使用 GWT RPC 来访问这些对象。阅读此页http://www.gwtproject.org/doc/latest/tutorial/RPC.html关于如何使用GWT RPC。

这是您在客户端访问它的方式

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

客户端部分的BestCookiesService接口(interface)

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

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

}

BestCookiesServiceAsync 接口(interface)(之前的副本,但带有 AsyncCallbacks)

public interface BestCookiesServiceAsync {

    // same methods but with callbacks
}

BestCookiesServiceImpl 类。它是服务器端第一个接口(interface)的实现。

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;
    }

}

关于java - 在 GWT Web 应用程序中使用外部对象到底需要什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27255746/

相关文章:

java - 如果 Stream 为空,如何创建不同的列表

java - 具有异常处理功能的 CompletableFuture 链

google-maps - 任何人都知道 gwt api 何时支持 google maps v3

android - 提高性能启动混合应用程序

gwt - 是否可以将 GWT EntityProxy 与 RPC 调用一起使用?

java - GWT : How to use beans from separate module?

java - java日期什么时候崩溃?

java - GUI 程序不会作为小程序运行

java - 将小部件放在 GXT 中的 RowExpander 中

java - 无法使 GWT-RPC 正常工作