Servlet实例
业务场景
在下面的例子中我会发布一个简单的输出字符串的方法,然后在客户端调用并输出结果。
服务器端
环境搭建
在服务端,我们需要引入hessian和servlet的包、编写服务、配置servlet,项目结构如下:
代码示例
服务端继承HessianServlet类即可。
打招呼接口:
1 package example; 2 3 /** 4 * @author X 5 */ 6 public interface HelloService { 7 /** 8 * 获取问候。 9 * @return 问候。 10 */ 11 String getWords(); 12 }
打招呼实现:
1 package example; 2 3 import com.caucho.hessian.server.HessianServlet; 4 5 /** 6 * @author X 7 */ 8 public class HelloServiceImpl extends HessianServlet implements HelloService { 9 public String getWords() { 10 return "你好,我叫王小二!"; 11 } 12 }
web配置:
1 <!DOCTYPE web-app PUBLIC 2 "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" 3 "http://java.sun.com/dtd/web-app_2_3.dtd" > 4 5 <web-app> 6 <display-name>Archetype Created Web Application</display-name> 7 <servlet> 8 <servlet-name>hello</servlet-name> 9 <servlet-class>example.HelloServiceImpl</servlet-class> 10 </servlet> 11 <servlet-mapping> 12 <servlet-name>hello</servlet-name> 13 <url-pattern>/rpc</url-pattern> 14 </servlet-mapping> 15 </web-app>
依赖管理:
1 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 2 xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> 3 <parent> 4 <artifactId>container</artifactId> 5 <groupId>hessian.host</groupId> 6 <version>1.0-SNAPSHOT</version> 7 </parent> 8 <modelVersion>4.0.0</modelVersion> 9 <artifactId>host-servlet</artifactId> 10 <packaging>war</packaging> 11 <name>host-servlet Maven Webapp</name> 12 <url>http://maven.apache.org</url> 13 <dependencies> 14 <dependency> 15 <groupId>junit</groupId> 16 <artifactId>junit</artifactId> 17 <version>3.8.1</version> 18 <scope>test</scope> 19 </dependency> 20 <dependency> 21 <groupId>com.caucho</groupId> 22 <artifactId>hessian</artifactId> 23 <version>4.0.7</version> 24 </dependency> 25 <dependency> 26 <groupId>javax.servlet</groupId> 27 <artifactId>javax.servlet-api</artifactId> 28 <version>3.1.0</version> 29 </dependency> 30 </dependencies> 31 <build> 32 <finalName>host-servlet</finalName> 33 </build> 34 </project>
把项目发布到tomcat后,访问显示如下:
客户端
环境搭建
- 客户端需要引入hessian的包。
- 客户端需要有一个与服务端接口一致的类(注:一般我们做开发的时候不会重新定义,而是会有一个接口项目,分别为客户端和服务端所引用)。
代码示例
调用
1 import com.caucho.hessian.client.HessianProxyFactory; 2 import example.Father; 3 import example.ShuttleService; 4 import org.springframework.context.ApplicationContext; 5 import org.springframework.context.support.ClassPathXmlApplicationContext; 6 7 import java.net.MalformedURLException; 8 9 /** 10 * @author X 11 */ 12 public class Run { 13 public static void main(String[] args) throws MalformedURLException, ClassNotFoundException { 14 15 String url="http://localhost:45/rpc"; 16 HessianProxyFactory hpf=new HessianProxyFactory(); 17 HelloService hs=(HelloService)hpf.create(HelloService.class,url); 18 System.out.println(hs.getWords()); 19 } 20 }
运行结果如下图所示: