`

纯hessian的部署(转)

    博客分类:
  • java
 
阅读更多

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"));   
}
分享到:
评论

相关推荐

    采用(rest ,hession,cxf)几种技术实现webservice

    在Java中,通过HessianServlet可以快速部署Hessian服务,并通过HessianProxyFactory创建客户端代理来调用远程服务。 接下来,CXF是另一个强大的Java Web服务框架,它支持SOAP和REST两种模式。CXF提供了丰富的功能,...

    技术架构规范标准.doc

    第一层通过二级目录形式展示不同模块,第二层根据服务细分模块,两者之间使用Hessian通信协议进行交互。第一层和第二层都是独立部署的,第二层的不同模块也可以单独部署。未来规划中,第一层将采用二级域名分模块...

    demo工程列表说明1

    21. **Hessian远程通信**:hessiandemo使用Hessian进行客户端和服务端的通信,Hessian是二进制RPC协议。 22. **Hibernate4 ORM**:hibernate4demo展示了使用Hibernate4进行全注解方式的单表操作,Hibernate是流行的...

    0729分布式通信框架-RMI1

    与集群不同,集群是将多台机器联合起来提供高可用性或负载均衡,而分布式架构更注重功能的解耦和独立部署。 TCP/IP协议是互联网的基础,其中TCP(Transmission Control Protocol)是一种面向连接的、可靠的、基于...

    JAVA技术架构及开发规范文档.docx

    第一层采用二级目录形式表示不同模块,与第二层通过Hessian通信。第一层和第二层以及第二层的不同模块可独立部署,考虑使用单点登录。Web应用采用集群负载均衡,数据库则实现负载均衡和读写分离,以满足性能需求。 ...

    resin-4.0.65-src.tar.gz

    3. **Quercus PHP支持**:`quercus`目录中的源码是Resin对PHP的纯Java实现,使得PHP应用可以在Java服务器上直接运行,无需额外的PHP解释器。 4. **JDBC连接池**:Resin的连接池组件名为Caucho Hessian,提供了高效...

    Spring in Action(第2版)中文版

    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 ...

    Spring in Action(第二版 中文高清版).part2

    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...

    Spring in Action(第二版 中文高清版).part1

    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...

    java开源包1

    6、支持多种通信框架(Mina/Netty/Grizzly),支持多种序列化/反序列化(Java/Hessian/PB); 7、支持自定义通信协议,可完全替换NFS-RPC自带的协议。 淘宝开放平台JAVA版SDK top4java 设计原则 容易维护扩展(不...

    java开源包11

    6、支持多种通信框架(Mina/Netty/Grizzly),支持多种序列化/反序列化(Java/Hessian/PB); 7、支持自定义通信协议,可完全替换NFS-RPC自带的协议。 淘宝开放平台JAVA版SDK top4java 设计原则 容易维护扩展(不...

    java开源包2

    6、支持多种通信框架(Mina/Netty/Grizzly),支持多种序列化/反序列化(Java/Hessian/PB); 7、支持自定义通信协议,可完全替换NFS-RPC自带的协议。 淘宝开放平台JAVA版SDK top4java 设计原则 容易维护扩展(不...

    java开源包3

    6、支持多种通信框架(Mina/Netty/Grizzly),支持多种序列化/反序列化(Java/Hessian/PB); 7、支持自定义通信协议,可完全替换NFS-RPC自带的协议。 淘宝开放平台JAVA版SDK top4java 设计原则 容易维护扩展(不...

    java开源包6

    6、支持多种通信框架(Mina/Netty/Grizzly),支持多种序列化/反序列化(Java/Hessian/PB); 7、支持自定义通信协议,可完全替换NFS-RPC自带的协议。 淘宝开放平台JAVA版SDK top4java 设计原则 容易维护扩展(不...

    java开源包5

    6、支持多种通信框架(Mina/Netty/Grizzly),支持多种序列化/反序列化(Java/Hessian/PB); 7、支持自定义通信协议,可完全替换NFS-RPC自带的协议。 淘宝开放平台JAVA版SDK top4java 设计原则 容易维护扩展(不...

    java开源包10

    6、支持多种通信框架(Mina/Netty/Grizzly),支持多种序列化/反序列化(Java/Hessian/PB); 7、支持自定义通信协议,可完全替换NFS-RPC自带的协议。 淘宝开放平台JAVA版SDK top4java 设计原则 容易维护扩展(不...

    java开源包4

    6、支持多种通信框架(Mina/Netty/Grizzly),支持多种序列化/反序列化(Java/Hessian/PB); 7、支持自定义通信协议,可完全替换NFS-RPC自带的协议。 淘宝开放平台JAVA版SDK top4java 设计原则 容易维护扩展(不...

    java开源包8

    6、支持多种通信框架(Mina/Netty/Grizzly),支持多种序列化/反序列化(Java/Hessian/PB); 7、支持自定义通信协议,可完全替换NFS-RPC自带的协议。 淘宝开放平台JAVA版SDK top4java 设计原则 容易维护扩展(不...

    java开源包7

    6、支持多种通信框架(Mina/Netty/Grizzly),支持多种序列化/反序列化(Java/Hessian/PB); 7、支持自定义通信协议,可完全替换NFS-RPC自带的协议。 淘宝开放平台JAVA版SDK top4java 设计原则 容易维护扩展(不...

    java开源包9

    6、支持多种通信框架(Mina/Netty/Grizzly),支持多种序列化/反序列化(Java/Hessian/PB); 7、支持自定义通信协议,可完全替换NFS-RPC自带的协议。 淘宝开放平台JAVA版SDK top4java 设计原则 容易维护扩展(不...

Global site tag (gtag.js) - Google Analytics