学习了以下Hession使用,下面说明一下如何使用(网上有先人弄过例子的),这里仅仅个人学习交流使用
1.需要JAR
hessian-3.2.1.jar(JAVA 版本的)
2.代码
服务端接口
IBasic.java
package hessian;
import java.util.List;
import java.util.Map;
/***********************************************************************
*
* IBasic.java
* @copyright Copyright: 2009-2012
* @creator 周辉<br/>
* @create-time May 21, 2009 3:38:06 PM
* @revision $Id: *
***********************************************************************/
public interface IBasic {
/**
* 测试字符串
* @return
*/
public String hello();
/**
* 取一辆汽车 测试对象传递
* @return
*/
public Car getCar();
/**
* 取得list 数据
* @return
*/
public List<String> getList();
/**
* 取得map 数据
* @return
*/
public Map<String,String> getMap();
/**
* 保存数据
* @param map
*/
public void setMap(Map<String,Car> map);
}
服务端实现类代码 BasicService.java
package hessian;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/*******************************************************************************
*
* BasicService.java
*
* @copyright Copyright: 2009-2012
* @creator 周辉<br/>
* @create-time May 21, 2009 3:39:21 PM
* @revision $Id: *
******************************************************************************/
public class BasicService implements IBasic {
/**
* 取一辆汽车 测试对象传递
*
* @return
*/
public Car getCar() {
Car car = new Car();
car.setColor("RED红色");
car.setLength("2400");
car.setName("HAHACHE");
return car;
}
/**
* 测试字符串
*
* @return
*/
public String hello() {
return "hello zhouhui";
}
/**
* 取得list 数据
*
* @return
*/
public List<String> getList() {
List<String> list = new ArrayList<String>();
list.add("1");
list.add("2");
list.add("3");
return list;
}
/**
* 取得map 数据
*
* @return
*/
public Map<String, String> getMap() {
Map<String, String> map = new HashMap<String, String>();
if (map.isEmpty()) {
map.put("1", "zhouhui1");
map.put("2", "zhouhui2");
map.put("3", "zhouhui3");
}
return map;
}
/**
* 保存数据
*
* @param map
*/
public void setMap(Map<String, Car> map) {
for (Map.Entry<String, Car> item : map.entrySet()) {
System.out.println("mapkey: " + item.getKey());
System.out.println("mapvalue: " + item.getValue().getColor());
System.out.println("mapvalue: " + item.getValue().getName());
}
}
}
一个封装的JAVABEAN
Car.java
package hessian;
import java.io.Serializable;
/***********************************************************************
*
* Car.java
* @copyright Copyright: 2009-2012
* @creator 周辉<br/>
* @create-time May 21, 2009 3:38:21 PM
* @revision $Id: *
***********************************************************************/
public class Car implements Serializable {
private String color;
private String length;
private String name;
public String getColor() {
return color;
}
public void setColor(String color) {
this.color = color;
}
public String getLength() {
return length;
}
public void setLength(String length) {
this.length = length;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
配置WEB.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.4"
xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
<servlet>
<servlet-name>HessianServlet</servlet-name>
<servlet-class>
com.caucho.hessian.server.HessianServlet
</servlet-class>
<init-param>
<param-name>home-class</param-name>
<param-value>hessian.BasicService</param-value>
</init-param>
<init-param>
<param-name>home-api</param-name>
<param-value>hessian.IBasic</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>HessianServlet</servlet-name>
<url-pattern>/hessianServlet</url-pattern>
</servlet-mapping>
</web-app>
最后客户端调用的代码
testClient.java
package hessian;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import com.caucho.hessian.client.HessianProxyFactory;
/***********************************************************************
*
* testClient.java
* @copyright Copyright: 2009-2012
* @creator 周辉<br/>
* @create-time May 21, 2009 3:44:45 PM
* @revision $Id: *
***********************************************************************/
public class testClient {
/**
* @param args
*/
public static void main(String[] args)throws Exception {
// TODO Auto-generated method stub
String url = "http://127.0.0.1:8081/testHession/hessianServlet";
HessianProxyFactory factory = new HessianProxyFactory();
IBasic basic = (IBasic) factory.create(IBasic.class, url);
Car car = basic.getCar();
// 客户端调用服务端list 数据
List<String> list =basic.getList();
for (String s :list){
System.out.println("list: " + s);
}
System.out.println("Hello: " + basic.hello());
System.out.println("Hello: " + car.getName());
// 客户端调用服务端MAP 数据
Map<String,String> map =basic.getMap();
for(Map.Entry<String,String> item:map.entrySet()){
System.out.println("mapkey: " +item.getKey());
System.out.println("mapvalue: " +item.getValue());
}
// 客户端向服务端发送数据
Map<String,Car> map2 = new HashMap<String,Car>();
if(map2.isEmpty()){
Car c = new Car();
c.setColor("red");
c.setLength("111");
c.setName("zhouhui");
map2.put("1", c);
map2.put("2", c);
map2.put("3", c);
}
basic.setMap(map2);
}
}
最后启动TOMCAT,发布好服务后,启动testClient.java 调用服务代码
客户端控制台打出调用服务的输出结果
在从TOMCAT 服务控制台查看客户端口输入数据
好了一切OK 了
注意点:
自定义JAVABEAN 一定要序列化
implements Serializable
否则会报错
Caused by: java.io.IOException: Server returned HTTP response code: 500 for URL: http://127.0.0.1:8081/testHession/hessianServlet
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
at java.lang.reflect.Constructor.newInstance(Constructor.java:513)
at sun.net.www.protocol.http.HttpURLConnection$6.run(HttpURLConnection.java:1296)
at java.security.AccessController.doPrivileged(Native Method)
at sun.net.www.protocol.http.HttpURLConnection.getChainedException(HttpURLConnection.java:1290)
at sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:944)
at com.caucho.hessian.client.HessianProxy.invoke(HessianProxy.java:184)
分享到:
相关推荐
标题 "Hessian 发布WebServices" 指的是使用Hessian协议来构建和发布Web服务。Hessian是一种二进制的远程过程调用(RPC)协议,它旨在提供高效的、轻量级的服务交互方式,特别是在Java和.NET之间。Hessian在处理Web...
4. **IIS部署**:IIS(Internet Information Services)是微软提供的一个Web服务器,用于托管Web应用程序。在IIS上部署Hessian服务,需要将服务配置为WCF服务,并确保配置文件(如`web.config`)设置正确。"iis亲测...
Apache CXF是一个开源的Web服务框架,它提供了多种方式来构建和部署Web服务,包括基于Java API for RESTful Web Services (JAX-RS)和Java API for XML Web Services (JAX-WS)的标准。CXF不仅支持SOAP、RESTful风格的...
标题 "OSGI+SpringDM+Hessian" 涉及到三个重要的技术概念,它们分别是OSGI(Open Services Gateway Initiative)、SpringDM(Spring Dynamic Modules)和Hessian。这些技术在Java开发领域中都有其独特的应用和价值。...
1. **Spring支持的远程访问技术**:Spring框架支持多种远程访问技术,包括RMI(Remote Method Invocation)、JAX-RPC(Java API for XML-based Remote Procedure Call)、Hessian、Burlap、XFire以及Spring自带的...
总之,"分布式事务控制程序代码.rar"提供的工具或框架,结合WebServices、RMI和Hessian,旨在简化分布式环境下的服务调用,并通过QDTC这样的事务协调器保证事务的正确性。对于开发小型服务化应用来说,这样的解决...
在Java中,JAX-WS(Java API for XML Web Services)是官方推荐的用于构建和部署WebServices的框架。 RESTful接口,或Representational State Transfer,是一种轻量级的架构风格,常用于构建Web服务。它强调资源的...
* Spring web: Spring MVC, Spring Web Flow 2, Spring Roo, other dynamic scripting, integration with popular Grails Framework (and Groovy), REST/web services, and more. This book guides you step by ...
在Java中,可以通过创建JAX-RS(Java API for RESTful Web Services)接口并使用注解来定义RESTful服务。例如,使用Jersey或Apache CXF库可以轻松地创建和消费RESTful服务。 其次,Hessian是一种二进制Web服务协议...
3. **Web Services (SOAP/WSDL)**:这种基于标准的远程调用方式提供了高度的互操作性,支持多种语言和平台。然而,它的开销相对较大,因为涉及XML的解析和WSDL的复杂性。 4. **RESTful APIs**:使用HTTP协议和简单...
SOAP允许服务提供商定义复杂的WSDL(Web Services Description Language)来描述服务接口,增强了服务的规范性和互操作性。 EJB(Enterprise JavaBeans)是Java EE的一部分,提供了一种组件模型,用于在服务器端...
在Flex应用程序中,我们通常利用远程对象(RemoteObject)或Web服务(如Hessian)来调用Spring管理的Bean中的方法和访问其属性,从而为用户提供动态、丰富的用户界面。 首先,让我们深入理解Flex与Spring的集成过程...
10. **Web服务**:Spring Web Services模块提供了创建和消费SOAP服务的能力,同时支持WSDL-first和代码-first的开发方式。 通过深入学习这本《Spring2.x 开发手册》,开发者不仅可以掌握Spring的基本用法,还能理解...
通过这个实例,学习者不仅可以了解如何部署和运行一个基本的Axis2服务,还可以深入理解Web服务的工作原理,包括SOAP消息的结构、服务生命周期管理等。此外,对于软件架构师和开发者来说,掌握Axis2的独立部署方式有...
15.3. Exposing remote services with Hessian and Burlap 15.3.1. Exposing bean functionality with Hessian/Burlap 15.3.2. Accessing Hessian/Burlap services 15.4. Using Spring’s HttpInvoker 15.4.1. ...
- SOAP(Simple Object Access Protocol):通过HTTP协议,使用XML格式交换信息的协议,常用于Web Services中。 - CORBA(Common Object Request Broker Architecture):一种跨语言、跨平台的远程调用标准。 - ...