Java:Hessian框架使用
常见的远程通信方式有:WebService、RMI、JMS、RPC等。
先介绍下WebSrvice:大部分使用http协议实现,如J2EE中使用servlet等。
RMI:Remote Method Invocation(远程方法调用),采用基于TCP的协议,客户端直接调用服务器中实现好接口的实现类函数。只有基于JVM的语言才能够使用。
JMS:Java Message Service(Java消息服务),是一种基于消息队列的消息实现模型,常见的有:RabbitMQ、SQS等。
RPC:Remote Procedure Call Protocol(远程过程调用协议)采用基于TCP协议的实现方式。采用了C/S模型,跨语言跨平台。这也是RMI和RPC不同的地方。
所以RPC更加的实用一些。这里介绍一个实现了RPC协议的框架——Hessian。
Hessian是基于HTTP协议的。我们需要将其部署于Servlet容器中。
这里使用了Gradle构建工具。
build.gradle:
group 'com'
version '1.0-SNAPSHOT'
apply plugin: 'java'
apply plugin: 'war'
sourceCompatibility = 1.8
repositories {
mavenCentral()
}
dependencies {
testCompile group: 'junit', name: 'junit', version: '4.11'
testCompile group: 'junit', name: 'junit', version: '4.12'
compile group: 'javax.servlet', name: 'servlet-api', version: '2.5'
compile 'com.caucho:hessian:4.0.38'
}
新建个接口:
public interface OnClickListener {
String onClick();
}
编写接口实现类,这里直接集成了HessianServlet:
public class OnClickListenerImpl extends HessianServlet implements OnClickListener {
@Override
public String onClick() {
return "我被点击了";
}
}
因为Hessian是基于HTTP协议的,所以需要配置web.xml。
<servlet>
<servlet-name>click</servlet-name>
<servlet-class>com.OnClickListenerImpl</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>click</servlet-name>
<url-pattern>/click</url-pattern>
</servlet-mapping>
上面的配置说明,访问http://localhost:8080/{项目名}/click 就能够得到OnClickListenerImpl这个实现类。
然后我们将代码跑在Tomcat或者Jetty等servlet容器中。
我们编写客户端代码:
String url = "http://localhost:8080/{项目名}/click";
HessianProxyFactory factory = new HessianProxyFactory();
OnClickListener onClickListener = (OnClickListener) factory.create(OnClickListener.class, url);
System.out.println(onClickListener.onClick());
如果上述过程没有错误的话,是会输出我被点击了的。
上述基本能够使用Hessian框架了。但是我们新建的OnClickListenerImpl这个类是继承自HessianServlet。那么能不能不继承HessianServlet呢?其实是可以的。我们修改下web.xml
<servlet>
<servlet-name>click</servlet-name>
<servlet-class>com.caucho.hessian.server.HessianServlet</servlet-class>
<init-param>
<param-name>home-class</param-name>
<param-value>com.OnClickListenerImpl</param-value>
</init-param>
<init-param>
<param-name>home-api</param-name>
<param-value>com.OnClickListener</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>click</servlet-name>
<url-pattern>/click</url-pattern>
</servlet-mapping>
我们在web.xml中配置HessianServlet所代理的接口和其实现类,也是能够实现上述功能的。
上一篇: pymysql使用(一)
下一篇: pymysql使用
推荐阅读
-
学以致用——Java源码——使用多态输出平面及立体几何图形的面积和体积(Project: Shape Hierarchy)
-
golang常用库之操作数据库的orm框架-gorm基本使用详解
-
使用Yii框架中遇到的三个相关问题_PHP教程
-
从零开始学YII2框架(五)快速生成代码工具 Gii 的使用_php实例
-
Java 集合框架之List 的使用(附小游戏练习)
-
使用selenium框架的Python爬虫被检测到的 解决方法
-
JQueryEasyUI Layout布局框架的使用方法
-
使用说明 - 新浪PHP框架纯净版1.1(带漂亮的瀑布流模板)
-
介绍使用PHP框架的十大理由_PHP教程
-
java使用字符画一个海绵宝宝