GWT Service服务- Local Service 和 Remote Service

本文详细介绍了GWT中的本地服务(LocalService)和远程服务(RemoteService)的概念及其区别。本地服务在同一应用程序内运行,而远程服务作为后台服务,可跨进程使用。重点讲解了GWT本地接口的定义、实现、配置和调用,以及GWTRPC的开发流程,包括远程接口定义、实现、配置和客户端调用。通过示例代码展示了如何创建和使用这些服务。
摘要由CSDN通过智能技术生成

一、简介

  1. Local Service:本地服务
    即Service和Client在同一进程内(即同一application内),Service的生命周期服从进程的生命周期。

  2. Remote Service:远程服务
    即Service作为后台服务,不仅被同一进程内的activity使用,也可被其他进程所使用。

  3. RPC:
    远程通信有几种选择(RPC,Webservice,RMI,JMS),这里我们说的是RPC(Remote Procedure Call Protocol),RPC使用C/S方式,采用http协议,发送请求到服务器,等待服务器返回结果。这个请求包括一个参数集和一个文本集,通常形成“classname.methodname”形式。优点是跨语言跨平台,C端、S端有更大的独立性,缺点是不支持对象,无法在编译器检查错误,只能在运行期检查。
    1

二、GWT 本地接口定义及实现

2.1 本地接口定义

/**工厂接口 */
public interface ClientFactory{
	public String getAppStr();
}

2.2 本地接口实现

/**工厂接口实现 */
public class ClientFactoryImpl implements ClientFactory{
	@Override
	public String getAppStr() {
			return "HELLO WORLD!";
	}
}

2.3 接口配置

gwt.xml中必须配置接口及实现类位置:

<!-- 如果接口与实现类在同一个工程,inherits 可不用配置  -->
<inherits name='com.ezinterface.EZInterface' />
<replace-with class="com.math.client.ClientFactoryImpl ">
		<when-type-is class="com.ezinterface.client.ClientFactory"></when-type-is>
</replace-with>

2.4 接口调用

使用GWT.create得到代理类,就可以使用了。传入接口实现,返回接口。

public ClientFactory localService= GWT.create(ClientFactoryImpl .class);

三、GWT RPC 开发

Ajax是谷歌GWT的特色,不使用GWT的ajax功能,就没必要使用GWT。GWT的ajax开发步骤比较复杂。
GWT有两个源代码包,一个客户端包,一个服务端包。

3.1 远程接口定义

客户端包放两个接口,一个服务接口,一个异步服务接口。服务端包写实现类。
1、 服务接口必须加注解,必须继承RemoteService。

/**远程接口 */
@RemoteServiceRelativePath("testInterface ")
public interface TestInterface extends RemoteService{
	public String getTestInterfaceStr(String param);
}

2、异步服务接口,类名必须是服务接口+Async。异步服务接口的方法返回值必须是void,前几个方法参数和服务接口相同,最后加一个异步回调参数。

public interface TestInterfaceAsync {
     void getTestInterfaceStr(String param, AsyncCallback<String> callback);
}

3.2 远程接口实现

实现类是一个servlet,必须继承RemoteServiceServlet。

public class TestInterfaceImpl extends RemoteServiceServlet implements TestInterface {
	@Override
	public String getTestInterfaceStr(String param){
		return param+" Hello world! ";
	}
}

3.3 接口配置

配置web.xml与 gwt.xml

  1. gwt.xml中必须配置servlet,path与@RemoteServiceRelativePath注解的路径一致。
<inherits name='com.math.test.Test' />

2 web.xml中配置servlet,如果是servlet 3.0以上,可以不使用web.xml配置,直接使用注解配置。
servlet的路径分为两段,第一段是所在gwt.xml的路径,第二段是@RemoteServiceRelativePath的路径。如:

<servlet>
    <servlet-name>testInterface </servlet-name>
    <servlet-class>com.math.server.TestInterfaceImpl </servlet-class>
</servlet>
<servlet-mapping>
    <servlet-name> testInterface </servlet-name>
    <url-pattern>/Test/testInterface </url-pattern>
</servlet-mapping>

3.4 客户端接口调用

使用GWT.create得到代理类,就可以使用了。传入服务接口,返回异步服务接口。

TestInterfaceAsync testService = GWT.create(TestInterface.class);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值