Servlet实例

业务场景  

  在下面的例子中我会发布一个简单的输出字符串的方法,然后在客户端调用并输出结果。

服务器端

环境搭建

  在服务端,我们需要引入hessian和servlet的包、编写服务、配置servlet,项目结构如下:

代码示例

  服务端继承HessianServlet类即可。

打招呼接口:

 package example;

 /**
  * @author X
  */
 public interface HelloService {
     /**
      * 获取问候。
      * @return 问候。
      */
     String getWords();
 }

HelloService.java

打招呼实现:

 package example;

 import com.caucho.hessian.server.HessianServlet;

 /**
  * @author X
  */
 public class HelloServiceImpl extends HessianServlet implements HelloService {
     public String getWords() {
         return "你好,我叫王小二!";
     }
 }

HelloServiceImpl.java

web配置:

 <!DOCTYPE web-app PUBLIC
  "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
  "http://java.sun.com/dtd/web-app_2_3.dtd" >

 <web-app>
   <display-name>Archetype Created Web Application</display-name>
   <servlet>
         <servlet-name>hello</servlet-name>
         <servlet-class>example.HelloServiceImpl</servlet-class>
   </servlet>
   <servlet-mapping>
       <servlet-name>hello</servlet-name>
       <url-pattern>/rpc</url-pattern>
   </servlet-mapping>
 </web-app>

web.xml

依赖管理:

 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
     <parent>
         <artifactId>container</artifactId>
         <groupId>hessian.host</groupId>
         <version>1.0-SNAPSHOT</version>
     </parent>
     <modelVersion>4.0.0</modelVersion>
     <artifactId>host-servlet</artifactId>
     <packaging>war</packaging>
     <name>host-servlet Maven Webapp</name>
     <url>http://maven.apache.org</url>
     <dependencies>
         <dependency>
             <groupId>junit</groupId>
             <artifactId>junit</artifactId>
             <version>3.8.1</version>
             <scope>test</scope>
         </dependency>
         <dependency>
             <groupId>com.caucho</groupId>
             <artifactId>hessian</artifactId>
             <version>4.0.7</version>
         </dependency>
         <dependency>
             <groupId>javax.servlet</groupId>
             <artifactId>javax.servlet-api</artifactId>
             <version>3.1.0</version>
         </dependency>
     </dependencies>
     <build>
         <finalName>host-servlet</finalName>
     </build>
 </project>

pom.xml

把项目发布到tomcat后,访问显示如下:

客户端

环境搭建

  • 客户端需要引入hessian的包。
  • 客户端需要有一个与服务端接口一致的类(注:一般我们做开发的时候不会重新定义,而是会有一个接口项目,分别为客户端和服务端所引用)。

代码示例

调用

 import com.caucho.hessian.client.HessianProxyFactory;
 import example.Father;
 import example.ShuttleService;
 import org.springframework.context.ApplicationContext;
 import org.springframework.context.support.ClassPathXmlApplicationContext;

 import java.net.MalformedURLException;

 /**
  * @author X
  */
 public class Run {
     public static void main(String[] args) throws MalformedURLException, ClassNotFoundException {

         String url="http://localhost:45/rpc";
         HessianProxyFactory hpf=new HessianProxyFactory();
         HelloService hs=(HelloService)hpf.create(HelloService.class,url);
         System.out.println(hs.getWords());
     }
 }

Run.java

运行结果如下图所示:   

Hessian Servlet实例的更多相关文章

  1. servlet的一个web容器中有且只有一个servlet实例或有多个实例的理解1

    servlet的一个web容器中有且只有一个servlet实例或有多个实例的理解 (2013-06-19 19:30:40) 转载▼     servlet的非线程安全,action的线程安全 对提交 ...

  2. myeclipse实现Servlet实例(1) 通过继承servlet接口实现

    1.在myeclipse新建web project,配置Tomcat(在myeclipse的Window--preferences) 2.然后在src新建servlet文件( 此处放在com.tsin ...

  3. Java Servlet(十一):一个servlet被10个浏览器客户端访问时会创建几个servlet实例?

    一般Servlet只初始化一次(只有一个实例).对于更多的客户端请求,Server创建新的请求和响应对象,仍然激活此Servlet的service()方法,将这两个对象作为参数传递给该方法.如此重复以 ...

  4. Servlet:从入门到实战学习(3)---Servlet实例【图文】

    本篇通过图文实例给大家详细讲述如何建立一个Servlet,配置好运行环境并成功连接到MYSQL的数据库,进行数据的查询展示. 1.项目创建:IDEA -> Create New Project ...

  5. Hessian Servlet和Hessian Spring的简单应用

    转自: http://lancui.iteye.com/blog/935578 简介 相比WebService,Hessian更简单.快捷.采用的是二进制RPC协议(Binary),因为采用的是二进制 ...

  6. Hessian Spirng实例

    Spring实例 之前,我们做了很简单的纯Hessian的调用,虽然到此已经能够满足远程调用的需求了,但是我听说spring也能够访问hessian的远程服务,研究了一番,废话不多说,直接上示例. 业 ...

  7. Servlet实例解说

    打开昨天上午,负责人突然问我,client控制信息,如何让在后台?我想回答:假设总体提交form,在C#使用代码request获取表单的内容.假设局部提交,在用JS和Ajax交互,通过Ajax的ope ...

  8. Servlet(9)—HttpServlet和改进Servlet实例

    HttpServlet:针对Http协议定义的一个Servlet基类,唯一的功能就是强制类型转换ServletRequest转换成HttpServletRequest,ServletResponse转 ...

  9. Servlet(4)—一个简单的Servlet实例

    简单实例 页面请求登陆,提交表单数据 <body> <form action="loginServlet" method="get"> ...

随机推荐

  1. Data内置对象

    1.内置对象 Date 日期对象 2.创建日期对象 2.1 根据当前的系统时间来创建日期对象. var date1 = new Date(); //a.输出日期对象的信息 console.log(da ...

  2. Android CollapsingToolbarLayout Toolbar的title覆盖问题

    CollapsingToolbarLayout 里: app:titleEnabled="true" app:title="Hello" Toolbar 里: ...

  3. python爬虫:读取PDF

    下面的代码可以实现用python读取PDF,包括读取本地和网络上的PDF. pdfminer下载地址:https://pypi.python.org/packages/source/p/pdfmine ...

  4. SQL SERVER数据库状态

    一个SQL SERVER数据库会处于很多种状态,例如 ONLINE .RESTORING .RECOVERING .RECOVERY_PENDING  .SUSPECT.EMERGENCY .OFFL ...

  5. vue 子组件向父组件传值通信

    父组件 子组件 子组件用this.$emit

  6. C# 1.将整个文件夹复制到目标文件夹中 2.将指定文件复制到指定目标文件夹中

    ].Items.Clear(); string filePath = Application.StartupPath; string sourcePath = Path.Combine(filePat ...

  7. 软件神器系列——photozoom图片像无损清晰放大软件砸金蛋活动开始啦!

    不管是刚进入社会的小白,还是混迹多年的油条,是不是发现了最近的工作越来越难做了? 推广文章.产品手册.营销方案.培训计划.工作报告乃至于PPT,都不是以前用文字数据可以交工的了,现在都讲究“图文并茂” ...

  8. matlab学习GUI的基本操作

    在命令行窗口输入guide 单击确定后出现,可以选择控件来设计,然后可以保存 右击可以查看控件的所有属性 举一个简单的GUI实例---实现数据的传输 添加可编辑文本框 更改字体大小,string默认的 ...

  9. 【数据分析学习】Pandas思维导图

    点我查看原版

  10. FFmpeg avcodec_send_packet压缩包函数

    首先看一下FFmpeg关于该packet函数的注释: int avcodec_send_packet ( AVCodecContext *  avctx,     const AVPacket *  ...