`
minzaipiao
  • 浏览: 148553 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

hessian轻量级的二进制webservices

    博客分类:
  • Java
阅读更多
hessian是一个轻量级的二进制webservices

1.自定义对像必须要实现Serializable接口, 这样才可被序列/反序列,要不能会抛异常

public class Book implements Serializable{
	private int id;
	private String name;
	private double price;
      // getters and setters......
}


2.一个接口
public interface Service {
	public String sayHello();
	public List getAllBooks();
	public Book getBook();
}


3.实现自定义的接口
public class ServiceImpl implements Service {

	public String sayHello() {
		return "this is a simple test";
	}

	public List<Book> getAllBooks() {
		List<Book> bookList = new ArrayList<Book>();
		for (int i = 0; i < 30; i++) {
			Book book = new Book();
			book.setId(i);
			book.setName("name_" + i);
			book.setPrice(20 * i);
			bookList.add(book);
		}
		return bookList;
	}

	public Book getBook() {
		Book book = new Book();
		book.setId(1);
		book.setName("book_name");
		book.setPrice(123.0);
		return book;
	}
}


4. 在web.xml文件中配置hessian
<servlet>
		<servlet-name>Hello</servlet-name>
		<servlet-class>
			com.caucho.hessian.server.HessianServlet
		</servlet-class>

		<init-param>
			<param-name>service-class</param-name>
			<param-value>com.test.hessian.ServiceImpl</param-value>
		</init-param>

	</servlet>
	
	<servlet-mapping>
		<servlet-name>Hello</servlet-name>
		<url-pattern>/hello</url-pattern>
	</servlet-mapping>
	



5.如果实现类实现类自定义的接口 并从HessianServlet继承。
public class WSServlet extends HessianServlet implements Service {
	public String sayHello() {
		return "this is a simple test";
	}

	public List<Book> getAllBooks() {
		List<Book> bookList = new ArrayList<Book>();
		for (int i = 0; i < 30; i++) {
			Book book = new Book();
			book.setId(i);
			book.setName("name_" + i);
			book.setPrice(20 * i);
			bookList.add(book);
		}
		return bookList;
	}

	public Book getBook() {
		Book book = new Book();
		book.setId(1);
		book.setName("book_name");
		book.setPrice(123.0);
		return book;
	}

}



那么在web.xml文件中既可以这样配置
<servlet>
		<servlet-name>Hello</servlet-name>
		<servlet-class>
			com.test.hessian.WSServlet
		</servlet-class>
	</servlet>
	
	<servlet-mapping>
		<servlet-name>Hello</servlet-name>
		<url-pattern>/hello</url-pattern>
	</servlet-mapping>


6.编写客户端
public class Client {

	@SuppressWarnings("unchecked")
	public static void main(String args[]){
		
		//发布的服务的url
		String url="http://localhost:8080/hessian/hello";
		//生成工厂
		HessianProxyFactory factory = new HessianProxyFactory();
		try {
			//生成服务对像
			Service service = (Service)factory.create(Service.class, url);
			System.out.println(service.sayHello());
			
			//调用java对像
			Book book = service.getBook();
			System.out.println(book.getName());
			long startTime = System.currentTimeMillis();
			List<Book> books = service.getAllBooks();
			int length = books.size();
			for(int i=0; i<length; i++){
				Book b = books.get(i);
				System.out.println("id="+b.getId()+",name="+b.getName()+",price="+b.getPrice());
				
			}
			
			long endTime = System.currentTimeMillis();
			
			System.out.println(endTime - startTime);
		} catch (MalformedURLException e) {
			e.printStackTrace();
		}
	}
	
}


7.hessian在处理大量数据的时候性能很低
分享到:
评论

相关推荐

    Hessian 发布WebServices

    Hessian是一种二进制的远程过程调用(RPC)协议,它旨在提供高效的、轻量级的服务交互方式,特别是在Java和.NET之间。Hessian在处理Web服务时,能够减少网络传输的数据量,提高服务调用的性能。 描述中提到的“NULL...

    hessian服务器和客户端

    Hessian是一种二进制Web服务协议,它提供了一种高效的序列化和远程调用机制,常用于分布式系统中。在本项目中,我们探讨的是基于C#实现的Hessian服务端和客户端,已经在IIS环境下进行了测试并成功通过。 1. **...

    OSGI+SpringDM+Hessian

    在OSGI和SpringDM环境中,Hessian可以被用来创建轻量级的远程服务,使得不同bundle或不同系统之间能够便捷地通信。 结合这三个技术,我们可以创建一个高度模块化的、动态的Java应用,其中各个组件(即OSGI bundle)...

    webservices学习之hession

    在Web服务领域,Hession是一个高效、轻量级的二进制RPC框架,主要用于Java与Java之间或Java与其他语言之间的远程调用。它能够快速地序列化和反序列化Java对象,使得网络通信更加高效。本主题将深入探讨Hession的基本...

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

    其次,Hessian是一种二进制Web服务协议,由Caucho公司开发。Hessian的目标是提供快速、轻量级的远程调用机制。与REST相比,Hessian的数据交换格式是二进制的,这使得它在网络传输中更加高效。Hessian服务可以透明地...

    webService分类列表

    Caucho Hessian是另一种轻量级的二进制RPC协议,因其二进制格式,特别适合于高性能的数据传输,尤其是在网络带宽有限的场景下。 这些工具和技术共同构成了Web Service开发的重要组成部分,为构建、发布、发现和集成...

    Java远程通讯可选技术及原理

    Hessian和Burlap是二进制和文本的RPC协议,它们提供了轻量级的远程调用解决方案,适合对性能要求较高的场景。 JMS(Java Message Service)是Java平台的消息队列标准,它允许应用程序之间异步发送和接收消息,适用...

    分布式事务控制程序代码.rar

    3. **Hessian**:这是一个轻量级的二进制Web服务协议,它提高了服务调用的效率,减少了网络传输的数据量。在分布式事务中,Hessian的使用可以降低延迟,提高性能。 4. **QDTC**:根据上下文,这可能是一个快速的...

    simple-parent

    1. **Hessian**:这是一种轻量级的二进制RPC协议,它简化了跨语言的远程调用。Hessian提供了一个简单的HTTP封装,使得远程调用看起来就像是本地方法调用。它减少了数据序列化和反序列化的开销,但可能不支持所有Java...

    Flex整合spring

    4. **Hessian服务**:Hessian是一种轻量级的二进制Web服务协议,它可以提供比标准SOAP更快、更小的序列化格式。Spring支持Hessian服务,使得Flex可以通过HTTP直接调用Spring Bean的方法,实现远程调用。 5. **集成...

    JAVA分布式开发

    - Hessian和Burlap是轻量级的RPC(远程过程调用)框架,支持二进制和XML序列化。 - JMS(Java Message Service)通过消息队列实现进程间的异步通信。 - JAX-RPC和Web Services(如SOAP)提供了基于HTTP的远程调用...

    axis2独立部署简单实例

    与Hessian接口实例相比,这可能意味着它涉及了HTTP协议下的SOAP服务,因为Hessian通常用于轻量级的二进制RPC通信,而Axis2支持多种协议,包括SOAP、RESTful等。 描述中提到“可以直接下载运行”,这意味着提供的...

Global site tag (gtag.js) - Google Analytics