Java hessian基础教程

来源:互联网 发布:体育比赛直播软件 编辑:程序博客网 时间:2024/05/18 03:43

服务端

使用maven引入hessian依赖或者到官网下载hessianjar包,http://hessian.caucho.com/。
<dependency>   <groupId>com.caucho</groupId>   <artifactId>hessian</artifactId>   <version>4.0.38</version></dependency>

1、创建一个服务接口和相关DTO(数据传输对象),DTO需要实现java.io.Serializable接口。
public class User implements Serializable {    private String name;    public String getName() {        return name;    }    public void setName(String name) {        this.name = name;    }}
public interface BasicService {    String hello(User user);}

2、使用java的jar命令导出上述服务接口和DTO的字节码文件到hessian-client.jar包中,这个jar包要提供给客户端调用。

3、创建一个服务接口实现类,该类实现上述服务接口。
public class BasicServiceImpl implements BasicService {    @Override    public String hello(User user) {        return "hello " + user.getName();    }}

4、配置web.xml。
<servlet>        <servlet-name>hessianServlet</servlet-name>        <servlet-class>com.caucho.hessian.server.HessianServlet</servlet-class>        <init-param>            <param-name>home-api</param-name>            <param-value>                <!-- 服务接口,参数名也可以是api-class -->                com.test.hessian.BasicService            </param-value>        </init-param>        <init-param>            <param-name>home-class</param-name>            <param-value>                <!-- 服务实现类,参数名也可以是service-class -->                com.test.hessian.BasicServiceImpl            </param-value>        </init-param></servlet>
<servlet-mapping>        <servlet-name>hessianServlet</servlet-name>        <url-pattern>/hessian/test</url-pattern></servlet-mapping>

5、运行服务端,可以将war包放到外部tomcat等servlet容器中运行,也可以用maven的jetty插件运行。

客户端

新建普通java项目,引入hessian的jar包和服务端导出的服务接口和DTO字节码jar包。调用示例:
    public static void main(String[] args) throws Exception {        HessianProxyFactory factory = new HessianProxyFactory();        String url = "http://localhost:8081/posp/hessian/test";        BasicService basicService = (BasicService) factory.create(BasicService.class, url);        User user = new User();        user.setName("测试");        System.out.println(basicService.hello(user));    }
输出:hello 测试

客户端https调用

    public static void main(String[] args) throws Exception {        javax.net.ssl.TrustManager[] trustAllCerts = new javax.net.ssl.TrustManager[1];        trustAllCerts[0] = new X509TrustManager() {            @Override            public void checkClientTrusted(X509Certificate[] x509Certificates, String s) throws CertificateException {            }            @Override            public void checkServerTrusted(X509Certificate[] x509Certificates, String s) throws CertificateException {            }            @Override            public X509Certificate[] getAcceptedIssuers() {                return new X509Certificate[0];            }        };        javax.net.ssl.SSLContext sc = javax.net.ssl.SSLContext                .getInstance("SSL");        sc.init(null, trustAllCerts, null);        javax.net.ssl.HttpsURLConnection.setDefaultSSLSocketFactory(sc                .getSocketFactory());        HostnameVerifier hv = new HostnameVerifier() {            public boolean verify(String urlHostName, SSLSession session) {                return true;            }        };        HttpsURLConnection.setDefaultHostnameVerifier(hv);        HessianProxyFactory factory = new HessianProxyFactory();        String url = "https://localhost:8443/posp/hessian/test";        BasicService basicService = (BasicService) factory.create(BasicService.class, url);        User user = new User();        user.setName("world");        System.out.println(basicService.hello(user));    }
0 0
原创粉丝点击