0

我将 NetBeans 用于我的 IDE,将 GlassFish 3.1.2 用于我的服务器。

我编写了一个简单的 GWT 项目 (GWTServer),它提供了一个名为 GWTService 的 GWT RPC 服务(该服务所做的只是将一个字符串连接到传入的内容并返回它)。我编写了一个单独的客户端项目 (GWTClient),我想访问服务器 GWT RPC 服务。NetBeans 在 GWTServer 中生成了一些客户端代码,可用于访问 RPC 服务。

我的服务器 GWT 项目部署在 glassfish 上,可通过“localhost:8080/GWTServer”访问。

我在做一些我需要做的事情时遇到问题:

首先,GWTServer 有几个我需要在 GWTClient 中使用的生成类。这些类是 GWTService 和 GWTServiceAsync。我需要(最好)让 IDE 将它们编译成我可以包含在 GWTClient 中的 jar 文件。我尝试创建一个 java 库项目,将这两个 java 文件复制到库中,并将该库包含在 GWTClient 中,但这给了我一个错误:“没有源代码可用于类型 org.gwtserver.client.GWTServiceAsync;你忘了继承一个必需的模块吗?”</p>

其次,在客户端项目的某个地方,我需要指定 servlet 的 url(类似于http://localhost:8080/GWTServer/ gwtservice)。基本上,需要设置环境,以便当我调用 GWT.create(GWTService.class) 时它可以工作。

想必我可以在客户端项目的 .xml 配置文件中设置这个连接。但我不知道该怎么做。而且我不知道是否需要在服务器端对 servlet 定义进行更改。

指定 servlet 的服务器端 web.xml 如下:

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="3.0" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">
    <servlet>
        <servlet-name>GWTService</servlet-name>
        <servlet-class>org.gwtserver.server.GWTServiceImpl</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>GWTService</servlet-name>
        <url-pattern>/org.gwtserver.Server/gwtservice</url-pattern>
    </servlet-mapping>
    <session-config>
        <session-timeout>
            30
        </session-timeout>
    </session-config>
    <welcome-file-list>
        <welcome-file>welcomeGWT.html</welcome-file>
    </welcome-file-list>
</web-app>

我需要了解在客户端 gwt 应用程序中需要做什么才能与现有的 servlet 进行通信。

4

1 回答 1

0

为了让 GWT 客户端与 GWT 服务成功交互,它们必须同时编译在一起,并且出于安全原因必须托管在同一主机上。您不能构建自己的 GWT 客户端来访问在不同时间编译的现有 GWT 服务。

Your issue is actually separate from this, though. You cannot access a jar from the GWT client, since it requires that source code be in your source folders. Hence your No source code is available error. Once you solve that, though, you will see this: Module needs to be (re)compiled, which you will not be able to fix because of the reasons I mentioned in my first paragraph.

于 2012-05-05T00:26:18.087 回答