- 浏览: 137911 次
- 性别:
- 来自: 北京
文章分类
最新评论
Web 服务是通过在 Web 服务器上部署 Servlet 来提供的。在 HessianServlet 的初始化配置中,参数 home-api 用来指定该 Web service 能够提供的服务,参数 home-class 用来指定提供具体服务的类,也即实现了 home-api 所指定接口的类。如果需要提供多个服务,可以部署多个 HessianServlet,并指定相应的 home-api 和 home-class 参数。
HessianServlet 是一个普通的 Servlet。主要接收来自 Hessian 客户端的请求,并将来自客户端 InputStream 和 OutputStream 包装成 Hessian 自己的 Input 和 Output,然后调用 HessianSkeleton 类处理客户的请求、并将处理结果返回给客户端。在初始化的过程中,HessianServlet 会根据参数 home-class 创建一个相应的实例,作为背后真正的 Web 服务提供者相应客户端的请求。
HessianSkeleton 解析来自客户端所请求的方法和参数信息,利用 Java 中的反射机制,调用由 HessianServlet 在初始化过程中创建的 Web 服务实例中对应的方法,然后将结果返回给客户端。
web.xml
<servlet>
<servlet-name>Hessian</servlet-name>
<servlet-class>com.caucho.hessian.server.HessianServlet</servlet-class>
<init-param>
<param-name>home-api</param-name>
<param-value>com.dao.BaseService</param-value>
</init-param>
<init-param>
<param-name>home-class</param-name>
<param-value>com.dao.BaseServiceImpl</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>Hessian</servlet-name>
<url-pattern>/hello</url-pattern>
</servlet-mapping>
BaseService.java
package com.dao;
public interface BaseService {
public String say(String name);
}
BaesServiceImpl.java
package com.dao;
public class BaseServiceImpl implements BaseService {
public String say(String name) {
return "Hello"+name;
}
}
客户端:
客户端主要使用了 Java 的动态代理机制。当客户端使用 HessianProxyFactory 创建一个实例时,并不是真正创建了一个 Web 服务接口类型的实力,而是创建了一个 Java 代理实例。随后在调用 Web 服务接口的方法时,实现了 InvocationHandler 接口的 HessianProxy 类将方法名称、参数等信息通过 HttpURLConnection 发送给 Web service 服务器,然后处理服务器的响应并将结果返回。
public static void main(String[] args) throws Exception {
String url = "http://127.0.0.1:8080/hessian/hello";
HessianProxyFactory factory = new HessianProxyFactory();
BaseService basic = (BaseService) factory.create(BaseService.class, url);
System.out.println("Hello: " + basic.say("SY"));
}
发表评论
-
使用memcached进行并发控制(转)
2015-12-29 14:39 883版权声明:本文为博主 ... -
Lock和Synchronized的不同
2014-10-24 15:46 766在 Java 中线程的状态可以分为:新建(New),运行状 ... -
ClassLoader加载流程
2014-04-16 09:59 673[b]当运行一个程序的时候,JVM启动, 运行bootstar ... -
springmvc请求接收参数的几种方法(转载)
2014-04-14 13:37 1533通过@PathVariabl注解获取路径中传递参数 JAVA ... -
JDK里的设计模式
2014-03-10 09:52 615适配器模式: 用来把一个接口转化成另一个接口。 java ... -
include与jsp:include区别
2014-02-28 15:03 579在jsp中include有两种形式,分别是 <%@ i ... -
DBCP的配置参数
2014-02-25 15:51 740tomcatde DHCP的配置 <Resource d ... -
java 时间处理的工具类(转)
2014-01-27 15:13 652import java.text.ParseException ... -
log4j
2014-01-17 13:56 394public Logger m_log = null; ... -
关于java Date和时区的问题
2013-12-18 11:55 837java2平台为我们提供了丰富的日期时间API。如java.u ... -
hessian异常总结
2013-12-12 17:53 1268版本不兼容 com.caucho.hessian.io.Hes ... -
java异常
2013-09-06 12:01 585java.sql.SQLException: Incorrec ... -
汉字转码的java实现
2013-08-05 17:26 1021package common; import java.ut ... -
验证邮件的有效性
2013-07-30 14:25 1134public static boolean checkEma ... -
优化Servlet配置
2013-04-09 10:31 640[b] 以往每添加一个Servlet就要在web. ... -
Ehcache的使用
2012-07-27 15:11 852一、 配置文件ehcache.xml <ehcache& ... -
struts2上传文件活动文件名、类型
2012-05-16 08:45 942public class FileUpload { ... -
struts2乱码
2012-05-14 17:36 0Struts2.1.6 StrutsPrepareAndExe ... -
解决struts2过滤器冲突问题
2012-04-27 13:40 0struts2使用FilterDispatcher进行url过 ... -
cron表达式
2012-03-14 15:02 870所在组的定时任务用的quartz,是我第一个用的,今天有同事用 ...
相关推荐
在Java中,通过HessianServlet可以快速部署Hessian服务,并通过HessianProxyFactory创建客户端代理来调用远程服务。 接下来,CXF是另一个强大的Java Web服务框架,它支持SOAP和REST两种模式。CXF提供了丰富的功能,...
第一层通过二级目录形式展示不同模块,第二层根据服务细分模块,两者之间使用Hessian通信协议进行交互。第一层和第二层都是独立部署的,第二层的不同模块也可以单独部署。未来规划中,第一层将采用二级域名分模块...
21. **Hessian远程通信**:hessiandemo使用Hessian进行客户端和服务端的通信,Hessian是二进制RPC协议。 22. **Hibernate4 ORM**:hibernate4demo展示了使用Hibernate4进行全注解方式的单表操作,Hibernate是流行的...
与集群不同,集群是将多台机器联合起来提供高可用性或负载均衡,而分布式架构更注重功能的解耦和独立部署。 TCP/IP协议是互联网的基础,其中TCP(Transmission Control Protocol)是一种面向连接的、可靠的、基于...
第一层采用二级目录形式表示不同模块,与第二层通过Hessian通信。第一层和第二层以及第二层的不同模块可独立部署,考虑使用单点登录。Web应用采用集群负载均衡,数据库则实现负载均衡和读写分离,以满足性能需求。 ...
3. **Quercus PHP支持**:`quercus`目录中的源码是Resin对PHP的纯Java实现,使得PHP应用可以在Java服务器上直接运行,无需额外的PHP解释器。 4. **JDBC连接池**:Resin的连接池组件名为Caucho Hessian,提供了高效...
10.3.2编写纯pojomdp 10.4使用基于消息的rpc 10.4.1引入lingo 10.4.2输出服务 10.4.3代理jms 10.5小结 第11章spring和ejb 11.1在spring中置入ejb 11.1.1代理会话bean(ejb2.x) 11.1.2将ejb置入springbean ...
10.3.2 编写纯POJO MDP 10.4 使用基于消息的RPC 10.4.1 引入Lingo 10.4.2 输出服务 10.4.3 代理JMS 10.5 小结 第11章 Spring和EJB 11.1 在Spring中置入EJB 11.1.1 代理会话Bean(EJB 2.x) 11.1.2 将EJB...
10.3.2 编写纯POJO MDP 10.4 使用基于消息的RPC 10.4.1 引入Lingo 10.4.2 输出服务 10.4.3 代理JMS 10.5 小结 第11章 Spring和EJB 11.1 在Spring中置入EJB 11.1.1 代理会话Bean(EJB 2.x) 11.1.2 将EJB...
6、支持多种通信框架(Mina/Netty/Grizzly),支持多种序列化/反序列化(Java/Hessian/PB); 7、支持自定义通信协议,可完全替换NFS-RPC自带的协议。 淘宝开放平台JAVA版SDK top4java 设计原则 容易维护扩展(不...
6、支持多种通信框架(Mina/Netty/Grizzly),支持多种序列化/反序列化(Java/Hessian/PB); 7、支持自定义通信协议,可完全替换NFS-RPC自带的协议。 淘宝开放平台JAVA版SDK top4java 设计原则 容易维护扩展(不...
6、支持多种通信框架(Mina/Netty/Grizzly),支持多种序列化/反序列化(Java/Hessian/PB); 7、支持自定义通信协议,可完全替换NFS-RPC自带的协议。 淘宝开放平台JAVA版SDK top4java 设计原则 容易维护扩展(不...
6、支持多种通信框架(Mina/Netty/Grizzly),支持多种序列化/反序列化(Java/Hessian/PB); 7、支持自定义通信协议,可完全替换NFS-RPC自带的协议。 淘宝开放平台JAVA版SDK top4java 设计原则 容易维护扩展(不...
6、支持多种通信框架(Mina/Netty/Grizzly),支持多种序列化/反序列化(Java/Hessian/PB); 7、支持自定义通信协议,可完全替换NFS-RPC自带的协议。 淘宝开放平台JAVA版SDK top4java 设计原则 容易维护扩展(不...
6、支持多种通信框架(Mina/Netty/Grizzly),支持多种序列化/反序列化(Java/Hessian/PB); 7、支持自定义通信协议,可完全替换NFS-RPC自带的协议。 淘宝开放平台JAVA版SDK top4java 设计原则 容易维护扩展(不...
6、支持多种通信框架(Mina/Netty/Grizzly),支持多种序列化/反序列化(Java/Hessian/PB); 7、支持自定义通信协议,可完全替换NFS-RPC自带的协议。 淘宝开放平台JAVA版SDK top4java 设计原则 容易维护扩展(不...
6、支持多种通信框架(Mina/Netty/Grizzly),支持多种序列化/反序列化(Java/Hessian/PB); 7、支持自定义通信协议,可完全替换NFS-RPC自带的协议。 淘宝开放平台JAVA版SDK top4java 设计原则 容易维护扩展(不...
6、支持多种通信框架(Mina/Netty/Grizzly),支持多种序列化/反序列化(Java/Hessian/PB); 7、支持自定义通信协议,可完全替换NFS-RPC自带的协议。 淘宝开放平台JAVA版SDK top4java 设计原则 容易维护扩展(不...
6、支持多种通信框架(Mina/Netty/Grizzly),支持多种序列化/反序列化(Java/Hessian/PB); 7、支持自定义通信协议,可完全替换NFS-RPC自带的协议。 淘宝开放平台JAVA版SDK top4java 设计原则 容易维护扩展(不...
6、支持多种通信框架(Mina/Netty/Grizzly),支持多种序列化/反序列化(Java/Hessian/PB); 7、支持自定义通信协议,可完全替换NFS-RPC自带的协议。 淘宝开放平台JAVA版SDK top4java 设计原则 容易维护扩展(不...