从单独的GWT客户端访问GWT Servlet

时间:2012-05-04 21:39:23

标签: gwt netbeans

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

我编写了一个简单的GWT项目(GWTServer),它提供了一个名为GWTService的GWT RPC服务(所有服务都会将字符串连接到传入的内容并返回它)。我编写了一个SEPERATE客户端项目(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;你忘了继承一个必需的模块吗?“

其次,在客户端项目的某个地方,我需要指定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进行通信。

1 个答案:

答案 0 :(得分:0)

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

但是,您的问题实际上是与此分开的。您无法从GWT客户端访问jar,因为它要求源代码位于源文件夹中。因此,您的No source code is available错误。但是,一旦你解决了这个问题,你就会看到:Module needs to be (re)compiled,由于我在第一段中提到的原因,你将无法解决这个问题。