现在很多应用服务器都是网络通信的服务器,提供一个远程通信模块是Beetle应用服务程序框架的一直心愿。虽然目前市场有很多这方面的框架产品,如:Grizzly、Mina和Netty等,但它们定位为大而全,结构复杂,学习周期长。Beetle1.3.6版本开始,提供一个remoting远程通信模块,它完全基于消息且结构和使用都十分简单。其主要的功能特点为:
n 基于NIO的多线程服务器实现,性能优秀
n 完全基于网络消息对象传递,没有数据格式限制,便于扩展
n 支持基于用户名和密码的网络服务器验证
n 客户端支持同步、异步方法调用,消息发送和接收
n服务器Session管理,向客户端消息推送
远程通信模块相关主要类图如下:
从上图可知,MessageServer是服务器实现,IRequestHandler是服务端对客户端请求的处理接口,其包含两个方法:
1,handle(req : MsgReq) : MsgRes,负责处理请求,其输入为MsgReq消息,返回为MsgRes消息,它们共同继承自BaseDTO基础类。
2,authenticate(username : String, password : String) : boolean,客户端验证方法。参数为客户端发送上来的用户名和密码,通过此方法开发人员可以根据自己需要对其做验证处理。
MessageClient是客户端实现,提供了创建连接、关闭连接、消息发送、接收,方法调用等功能。可见,Beetle的remoting通信模块相对哪些动不动几百类实现的框架来说,其结构十分简单,但功能却十分强大。下面实现一个简单的Echo服务器例子以便说明:
(1),编写请求处理EchoServerHandler
package example.appsrv.remoting;
import com.beetle.framework.appsrv.remoting.MessageCommunicateException;
import com.beetle.framework.appsrv.remoting.MessageServer;
import com.beetle.framework.appsrv.remoting.MsgReq;
import com.beetle.framework.appsrv.remoting.MsgRes;
public class EchoServerHandler implements MessageServer.IRequestHandler {
public boolean authenticate(String username, String password) {
if (username.equals("Henry") && password.equals("888888")) {
return true;
}
return false;
}
public MsgRes handle(MsgReq req) throws MessageCommunicateException {
String word = req.getValueAsString("word");
System.out.println("[" + System.currentTimeMillis() + "]:" + word);
MsgRes res = new MsgRes();
res.setValueWithString("echo", "echo:" + word);
return res;
}
}
(2),编写EchoServer服务器:
package example.appsrv.remoting;
import com.beetle.framework.appsrv.remoting.MessageServer;
public class EchoServer {
public static void main(String[] args) {
MessageServer ms = new MessageServer(8080);
ms.registerRequestHandler(new EchoServerHandler());
ms.start();
}
}
(3),编写EchoClient客户端:
package example.appsrv.remoting;
import com.beetle.framework.appsrv.remoting.MessageClient;
import com.beetle.framework.appsrv.remoting.MsgReq;
import com.beetle.framework.appsrv.remoting.MsgRes;
public class EchoClient {
public static void main(String[] args) {
MessageClient client = new MessageClient();
boolean f = client.connect("127.0.0.1:8080", "Henry", "888888");
if (f) {
MsgReq req = new MsgReq();
req.setValueWithString("word", "Hi,I am Henry.");
MsgRes res = client.invoke(req);
if (res != null) {
String echo = res.getValueAsString("echo");
System.out.println(echo);
}
client.disconnect();
}
}
}
<!--EndFragment-->
<!--EndFragment-->
<!--EndFragment-->
<!--EndFragment-->
<!--EndFragment-->
<!--EndFragment-->
- 大小: 53 KB
分享到:
相关推荐
Beetle J2ee Application Framework(BJAF)一个功能强大而简单易用的J2EE应用开发框架。它涵盖了J2EE体系结构的表示层、业务层和持久层,为构建一个可靠、高性能、可扩展、灵活缩放的高质量企业应用系统提供了一套...
Beetle是一个通用的通讯框架,而JT808则是一种广泛应用于中国GPS监控系统中的通信协议。这个项目可能是用于测试和解析JT808协议的服务器和客户端程序。 描述中的“X协议解析测试程序”暗示了该压缩包内包含的代码...
【标题】"beetle 开源框架书的源码"涉及的是一个名为"beetle"的开源框架的源代码,这通常意味着该框架可能是用于Java平台,因为J2EE(Java 2 Platform, Enterprise Edition)是Java领域广泛使用的开发企业级应用的...
BJAF(beetle-j2ee-application-framework)甲壳虫J2EE应用开发框架代码&开发指南 甲壳虫,一个功能强大而简单易用的J2EE应用开发框架。它涵盖了J2EE体系结构的表示层、业务层和持久层,为构建一个可靠、高性能、可...
已经成功应用于多个高并发量的TCP、UDP框架通信接口,
**BT-HC05-V1.0蓝牙模块**是一款高性能的蓝牙串口模块,适用于多种带有蓝牙功能的设备,如电脑、蓝牙主机、手机、PDA、PSP等智能终端,能够实现设备之间的配对通信。该模块支持宽范围的波特率,从4800bps至1382400...
本用户指南主要介绍了BEETLE_XL_II收款机的操作方法、维护保养以及常见问题解决办法等内容。它适用于所有BEETLE_XL_II系列产品的用户及技术支持人员。 #### 设备护理 - **日常清洁**:使用柔软干净的布料轻轻擦拭...
在C#编程中,"Beetle"可能指的是一个自定义的框架或库,用于处理文件传输任务。这个框架可能是为了提高文件传输的效率而设计的。在标题中提到的"beetle类包含其他类",这暗示了Beetle可能是一个封装了多种功能的类库...
标题中的“c#_以Beetle为基础SOCKET服客端(WPF)与客户端(winphone\win8 metro)”指的是一个使用C#编程语言构建的网络通信应用,它基于Beetle框架,实现了SOCKET服务器端(WPF)以及Windows Phone和Windows 8 Metro...
甲壳虫 PSX 剧本Beetle PSX 是 Mednafen 的 PSX 模块到 libretro API 的端口/分支。 可以用C++98模式编译,不包括Vulkan渲染器,暂时是用C++11写的。 Beetle PSX 目前在 Linux、OSX 和 Windows 上运行。 这个分叉中...
Beetle.zipscratch2.0 3.0编程项目源文件源码经典游戏案例素材源代码Beetle.zipscratch2.0 3.0编程项目源文件源码经典游戏案例素材源代码Beetle.zipscratch2.0 3.0编程项目源文件源码经典游戏案例素材源代码Beetle....
在示例中,C#语言和Beetle框架被用来编写服务端代码,Beetle框架提供了对WebSocket的支持,并且能够自动处理JSON数据的序列化与反序列化。这意味着当服务器接收到JSON格式的数据时,Beetle框架可以自动地将JSON数据...
总的来说,Popular Beetle是一款功能强大且易于使用的数据库管理工具,它的数据库比较和数据整合能力对于软件生命周期管理中的各个阶段都具有重要的价值。通过高效、准确的数据库操作,可以大大提升工作效率,降低因...
-dung_beetle.zip" 是一个压缩包,其中包含了一个名为 "dung_beetle-master" 的文件夹,这很可能是项目的源代码目录,通常包括教程的实例、脚本和其他相关资源。让我们逐步了解Python爬虫的基本概念和常用工具。 1....
有需要的朋友就下吧
标题中的“加长版甲壳虫汽车外壳3D图纸”是指使用solidworks2014软件设计的一款经典甲壳虫汽车的加长版车型的三维模型。SolidWorks是一款广泛应用于机械设计领域的三维CAD(计算机辅助设计)软件,以其易用性和强大...
天牛须算法(Beetle Antennae Search Algorithm,简称BAS),是一种新型的智能优化算法,它以长角天牛的搜索行为为灵感而设计。长角天牛因其长长的触须而著名,这些触须常常比它们的身体还要长。BAS算法模拟了这些...
标注类别名称:["Cashew-anthracnose","Cashew-healthy","Cashew-leaf-miner","Cassava-bacterial-blight","Cassava-brown-spot","Cassava-healthy","Maize-healthy","Maize-leaf-beetle","Maize-leaf-blight",...
至于“keracce-Beetle-9cc3275”,这可能是一个源代码库的特定版本标识,比如Git仓库的一个分支或者标签。这个名称可能指的是Beetle项目的作者或者一个特定的开发迭代。要深入理解这个项目,你需要解压这个压缩包并...
蜣螂优化算法(DBO,Dung Beetle Optimization Algorithm)是一种基于生物行为的新型全局优化算法,灵感来源于蜣螂(也称屎壳郎)在寻找食物过程中所展现出的探索和滚动粪球的行为。2022年底,该算法被首次提出,并...