今天我们来学一下Burlap。

Burlap是一种基于XML远程调用技术,但与其他基于XML的远程技术(例如SOAP或者XML-RPC)不同,Burlap的消息结构尽可能的简单,不需要额外的外部定义语言(例如WSDL或IDL)。

Burlap和Hessian很大程度上,它们是一样的,唯一的区别在于Hessian的消息是二进制的,而Burlap的消息是XML。(Burlap和Hessian代码实现上也很相似)

接下来我们看一下代码的实现:

一、首先我们先创建一个实体类,这里不需要实现Serializable接口

package entity;
public class Food {
private String name;
private double price;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public double getPrice() {
return price;
}
public void setPrice(double price) {
this.price = price;
}
}

二、我们来定义一个接口

package service;

import java.util.List;

import entity.Food;

public interface FoodService {

    List<Food> getFoodList();

}

三、定义一个类,实现步骤二中的接口,并继承BurlapServlet类(这里需要用到Burlap的jar文件,可以到这里下载http://www.findjar.com/jar/burlap/jars/burlap-2.1.7.jar.html)

package service.impl;
import java.util.ArrayList;
import java.util.List;
import service.FoodService;
import com.caucho.burlap.server.BurlapServlet;
import entity.Food;
public class FoodServiceImpl extends BurlapServlet implements FoodService {
public List<Food> getFoodList() {
List<Food> list=new ArrayList<Food>();
Food f1=new Food();
f1.setName("酸菜鱼");
f1.setPrice(25);
Food f2=new Food();
f2.setName("糖醋鱼");
f2.setPrice(23);
list.add(f1);
list.add(f2);
return list;
}
}

四、现在我们可以在WEB-INF下的web.xml中配置一个servlet(Hessian也可以这样配置servlet)

<servlet>
<servlet-name>food</servlet-name>
<servlet-class>service.impl.FoodServiceImpl</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>food</servlet-name>
<url-pattern>/food</url-pattern>
</servlet-mapping>

五、我们来写一下测试代码,看一下结果

package test;
import java.util.List;
import service.FoodService;
import com.caucho.burlap.client.BurlapProxyFactory;
import entity.Food;
public class Test {
public static void main(String[] args) {
String url="http://127.0.0.1:8080/test/food";
BurlapProxyFactory factory=new BurlapProxyFactory();
try {
FoodService foodSevice=(FoodService) factory.create(FoodService.class, url);
List<Food> foodList = foodSevice.getFoodList();
for (Food food : foodList) {
System.out.println(food.getName()+":"+food.getPrice()+"元。");
}
} catch (Exception e) {
e.printStackTrace();
}
}
}

控制台显示的结果为:

=========控制台=========

酸菜鱼:25.0元。

糖醋鱼:23.0元。

========================

接下来我们看一下Spring整合Burlap,这里和Spring整合Hessian基本差不多。

Spring整合Burlap

一、我们来定义一个接口

package service;
import java.util.List;
import entity.Food;
public interface FoodService {
List<Food> getFoodList();
}

二、定义一个类,实现步骤二中的接口

package service.impl;
import java.util.ArrayList;
import java.util.List;
import service.FoodService;
import entity.Food;
public class FoodServiceImpl implements FoodService {
  public List<Food> getFoodList() {
    List<Food> list=new ArrayList<Food>();
    Food f1=new Food();
    f1.setName("酸菜鱼");
    f1.setPrice(25);
    Food f2=new Food();
    f2.setName("糖醋鱼");
    f2.setPrice(23);
    list.add(f1);
    list.add(f2);
    return list;
  }
}

三、我们可以在WEB-INF下的web.xml中配置SpringMVC需要信息

<context-param>
  <param-name>contextConfigLocation</param-name>
  <param-value>classpath:applicationContext.xml</param-value>
</context-param> <listener>
  <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener> <servlet>
  <servlet-name>springMvc</servlet-name>
  <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
  <load-on-startup>1</load-on-startup>
</servlet> <servlet-mapping>
  <servlet-name>springMvc</servlet-name>
  <url-pattern>/</url-pattern>
</servlet-mapping>

四、在applicationContext.xml中配置需要导出服务的bean信息

<bean id="foodService" class="service.impl.FoodServiceImpl"></bean>
<bean id="FoodService"
  class="org.springframework.remoting.caucho.BurlapServiceExporter"
  p:serviceInterface="service.FoodService"
  p:service-ref="foodService"
/>

五、在WEB-INF下新建springMvc-servlet.xml文件,并配置信息

<?xml version="1.0" encoding="UTF-8"?>
<beans
  xmlns="http://www.springframework.org/schema/beans"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xmlns:p="http://www.springframework.org/schema/p"
  xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd">   <bean id="urlMapping" class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
    <property name="mappings">
      <props>
        <prop key="/foodService">FoodService</prop>
      </props>
    </property>
  </bean>
</beans>

六、在客户端程序applicationContext.xml中配置获取服务的bean信息

<bean id="getFoodService"
  class="org.springframework.remoting.caucho.BurlapProxyFactoryBean"
  p:serviceInterface="service.FoodService"
  p:serviceUrl="http://127.0.0.1:8080/test/foodService"
/>

七、现在我们编写测代码

package test;
import java.util.List;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import entity.Food;
import service.FoodService;
public class Test {
  public static void main(String[] args) {
    ApplicationContext ctx=new ClassPathXmlApplicationContext("applicationContext.xml");
    FoodService foodService=(FoodService) ctx.getBean("getFoodService");
    List<Food> foodList = foodService.getFoodList();
    for (Food food : foodList) {
      System.out.println(food.getName()+":"+food.getPrice()+"元。");
    }
  }
}

接下来我们把项目部署到Tomcat上面,并且启动服务。运行测试代码

======控制台=======

酸菜鱼:25.0元。

糖醋鱼:23.0元。

===================

到这里我们已经学习了Spring整合Burlap。

Java学习之路-Burlap学习的更多相关文章

  1. 《Hadoop学习之路》学习实践

    (实践机器:blog-bench) 本文用作博文<Hadoop学习之路>实践过程中遇到的问题记录. 本文所学习的博文为博主“扎心了,老铁” 博文记录.参考链接https://www.cnb ...

  2. (转)java web 学习之路(学习顺序)

    第一步:学习HTML和CSS HTML(超文本标记语言)是网页的核心,学好HTML是成为Web开发人员的基本条件.HTML很容易学习的,但也很容易误用,要学精还得费点功夫. 随着HTML5的发展和普及 ...

  3. Java学习之路-Hessian学习

    Hessian是基于HTTP的轻量级远程服务解决方案,Hessian像Rmi一样,使用二进制消息进行客户端和服务器端交互.但与其他二进制远程调用技术(例如Rmi)不同的是,它的二进制消息可以移植其他非 ...

  4. Java学习之路-RMI学习

    Java远程方法调用,即Java RMI(Java Remote Method Invocation)是Java编程语言里,一种用于实现远程过程调用的应用程序编程接口.它使客户机上运行的程序可以调用远 ...

  5. 微软企业库5.0 学习之路——扩展学习篇、库中的依赖关系注入(重构 Microsoft Enterprise Library)[转]

    这篇文章是我在patterns & practices看到的一篇有关EntLib5.0的文章,主要介绍了EntLib5.0的这次的架构变化由来,觉得很不错,大家可以看一下! 在过去几年中,依赖 ...

  6. 《Hadoop学习之路》学习实践二——配置idea远程调试hadoop

    背景:在上篇文章中按照大神“扎心了老铁”的博客,在服务器上搭建了hadoop的伪分布式环境.大神的博客上是使用eclipse来调试,但是我入门以来一直用的是idea,eclipse已经不习惯,于是便摸 ...

  7. Linux学习之路--shell学习

    shell基础知识 什么是Shell Shell是命令解释器(command interpreter),是Unix操作系统的用户接口,程序从用户接口得到输入信息,shell将用户程序及其输入翻译成操作 ...

  8. (转)如何学习Java技术?谈Java学习之路

    51CTO编者注:这篇文章已经是有数年“网龄”的老文,不过在今天看来仍然经典.如何学习Java?本篇文章可以说也是面对编程初学者的一篇指导文章,其中对于如何学习Java的步骤的介绍,很多也适用于开发领 ...

  9. Java程序员学习之路

    1. Java语言基础 谈到Java语 言基础学习的书籍,大家肯定会推荐Bruce Eckel的<Thinking in Java>.它是一本写的相当深刻的技术书籍,Java语言基础部分基 ...

随机推荐

  1. jquery前端验证框架

    1.validationEngine.jquery.css  样式包 2.jquery.validationEngine-zh_CN.js 中文语言包 3.jquery.validationEngin ...

  2. JavaScript 简介--对javascript的初识,最基础的了解

    一.javascript的介绍 JavaScript是网景(Netscape)公司开发的一种基于客户端浏览器.面向(基于)对象.事件驱动式的网页脚本语言.JavaScript语言的前身叫作Livesc ...

  3. WP8.1学习系列(第十一章)——中心控件Hub开发指南

    在本文中 先决条件 什么是中心控件? 添加中心控件 将分区添加到中心 添加交互式分区头用于导航 将展示磁贴添加到中心 使用窄应用中的垂直中心 借助中心使用语义式缩放视图 摘要和后续步骤 重要的 API ...

  4. 【Mybatis】Mybatis基本构成

    SqlSessionFactoryBuilder(构造器):它会根据配置信息或者代码来生成SqlSessionFactory(工厂接口) SqlSessionFactory:依靠工厂来生成SqlSes ...

  5. Elasticsearch学习之深入搜索六 --- 平衡搜索结果的精准率和召回率

    1. 召回率和精准度 比如你搜索一个java spark,总共有100个doc,能返回多少个doc作为结果,就是召回率,recall 精准度,比如你搜索一个java spark,能不能尽可能让包含ja ...

  6. vue Element动态设置el-menu导航当前选中项

    1,npm install vuex --save 2,在src下新建vuex文件夹,新建store.js文件: store.js import Vue from 'vue' import Vuex ...

  7. php5.4 traits

    PHP 5.4中的traits,是新引入的特性,中文还真不知道如何准确翻译好.其实际的目的,是为了有的场合想用多继承,但PHP又没多继承,于是就发明了这样的一个东西.       Traits可以理解 ...

  8. ELK系列二:Elasticsearch的架构原理和配置优化

    1.Elasticsearch的数据组织架构 1.1.Elasticsearch结构概念 集群(cluster):拥有相同cluster-name的elasticsearch结点的集合(每个结点其实就 ...

  9. minix中atoi、atol、atof的实现

    在minix2.0源代码中,有将字符串类型转换为int.long.double类型的函数实现,相关的实现函数分别在atoi.c.atol.c.atof.c文件中,我们来逐一学习其中的源码: 1.int ...

  10. 【JSP】EL函数和自定义EL函数

    简介 EL原本是JSTL1.0中的技术(所以EL和JSTL感情如此好就是自然的了),但是从JSP2.0开始,EL就分离出来纳入了JSP的标准了.但是EL函数还是和JSTL技术绑定在一起.下面将介绍如何 ...