我将 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 进行通信。