简要说明:这是一个比较简单的hessian客户端和服务端,主要实现从客户端发送指定的数据量到服务端,然后服务端在将接收到的数据原封不动返回到客户端。设计该hessian客户端和服务端的初衷是为了做一个转发系统的性能测试,通过利用该客户端和服务端来作为转发系统的测试脚本和测试服务端。同时,该hessian客户端和服务端也可作为简单的hessian例子进行学习。

1、客户端

工具类1:byte数组长度返回

package tool;

public class ByteActualLength {

public static int returnActualLength(byte[] data) {
        int i = 0;
        for (; i < data.length; i++) {
            if (data[i] == '\0')
                break;
        }
        return i;
    }

}

工具类2:将文件数据写入byte数组

package tool;

import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.RandomAccessFile;
import java.nio.MappedByteBuffer;
import java.nio.channels.FileChannel;
import java.nio.channels.FileChannel.MapMode;

public class FileWriteInByte {

@SuppressWarnings("resource")
    public static byte[] toByte(String filePath) throws IOException {

FileChannel fc = null;
        byte[] result = null;

try {
            fc = new RandomAccessFile(filePath, "r").getChannel();
            MappedByteBuffer byteBuffer = fc.map(MapMode.READ_ONLY, 0,
                    fc.size()).load();
            System.out.println(byteBuffer.isLoaded());
            // 返回true代表传入为空;flase代表有数据
            result = new byte[(int) fc.size()];
            // System.out.println("返回数组长度为:"+fc.size());
            if (byteBuffer.remaining() > 0) {
                // System.out.println("remain");
                byteBuffer.get(result, 0, byteBuffer.remaining());
            }

} catch (FileNotFoundException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } finally {
            fc.close();
        }
        return result;

}

}

测试客户端:

package test_nwwhl_client;

import java.io.IOException;
import java.net.MalformedURLException;
import service.DataTransmissionService;
import tool.ByteActualLength;
import tool.FileWriteInByte;

import com.caucho.hessian.client.HessianProxyFactory;

public class PerformanceTest {
    @SuppressWarnings("resource")
    public static void main(String[] args) {
       
String url = "http://192.168.2.166:8088/nwwhlsystem_server/test";
        byte[] result=null;
        try {
            result = FileWriteInByte.toByte("D:\\test100.txt");
           
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        HessianProxyFactory factory = new HessianProxyFactory();

DataTransmissionService DataTransmissionService=null;
       
        //服务调用开始时间
        long startTime=System.currentTimeMillis();
       
        try {
            DataTransmissionService = (DataTransmissionService) factory
                    .create(DataTransmissionService.class, url);
        } catch (MalformedURLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
       
        byte[] data = DataTransmissionService.test(result);
       
        //服务调用结束时间
        long endTime=System.currentTimeMillis();
       
        System.out.println("程序运行时间: "+(endTime-startTime)+"ms");  
       
        int bytelength = ByteActualLength.returnActualLength(data);
        System.out.println("返回的数据长度为:" + bytelength);

}
}

2、服务端

第一个类:

package service;

public interface DataTransmissionService {
     public byte[] test(byte[] data);   
}

第二个类:

package service.impl;

import service.DataTransmissionService;

import com.caucho.hessian.server.HessianServlet;

@SuppressWarnings("serial")
public class DataTransmissionServiceImpl extends HessianServlet implements DataTransmissionService  {

public byte[] test(byte[] data) {
       
        return data;
    }
    
}

[Java]Hessian客户端和服务端代码例子的更多相关文章

  1. 根据wsdl,apache cxf的wsdl2java工具生成客户端、服务端代码

    根据wsdl,apache cxf的wsdl2java工具生成客户端.服务端代码 apache cxf的wsdl2java工具的简单使用: 使用步骤如下: 一.下载apache cxf的包,如apac ...

  2. Socket通信客户端和服务端代码

    这两天研究了下Socket通信,简单实现的客户端和服务端代码 先上winfrom图片,客户端和服务端一样 服务端代码: using System; using System.Collections.G ...

  3. 使用CXF开发WebService程序的总结(四):基于bean的客户端和服务端代码的编写

    1. 在原服务端项目 ws_server中添加两个bean 1.1 添加两个类  User 和 Clazz   package com.lonely.pojo; public class User { ...

  4. 使用CXF开发WebService程序的总结(五):基于Map数据类型处理的的客户端和服务端代码的编写

    1. 首先我们按照List或数组等处理方式来处理Map,看看效果 1.1 在服务端的接口中添加以下方法 /** * 查询所有班级信息加上对应的学生列表 * * @return */ public Ma ...

  5. Java实现UDP之Echo客户端和服务端

    Java实现UDP之Echo客户端和服务端 代码内容 采用UDP协议编写服务器端代码(端口任意) 编写客户机的代码访问该端口 客户机按行输入 服务器将收到的字符流和接收到的时间输出在服务器consol ...

  6. Java实现TCP之Echo客户端和服务端

    Java实现TCP之Echo客户端和服务端 代码内容 采用TCP协议编写服务器端代码(端口任意) 编写客户机的代码访问该端口 客户机按行输入 服务器将收到的字符流和接收到的时间输出在服务器consol ...

  7. java Socket通信,客户端与服务端相互发消息

    1.通信过程 网络分为应用层,http.ssh.telnet就是属于这一类,建立在传输层的基础上.其实就是定义了各自的编码解码格式,分层如下: 2.Socket连接 上述通信都要先在传输层有建立连接的 ...

  8. Java基础---Java---网络编程---TCP的传输、客户端和服务端的互访、建立一个文本转换器、编写一个聊天程序

    演示TCP的传输的客户端和服务端的互访 需求:客户端给服务端发送数据,服务端收到后,给客户端反馈信息. 客户端: 1.建立Socket服务,指定要连接方朵和端口 2.获取Socket流中的输出流,将数 ...

  9. java实现xml-rpc客户端和服务端

    客户端代码: package test_xmlrpc.test; import java.net.URL;import java.util.ArrayList;import java.util.Lis ...

随机推荐

  1. $("").click与onclick的区别示例介绍

    Html代码: <script type="text/javascript"> $(function(){ $("#btn4").click(fun ...

  2. Java集合源码分析(七)HashMap<K, V>

    一.HashMap概述 HashMap基于哈希表的 Map 接口的实现.此实现提供所有可选的映射操作,并允许使用 null 值和 null 键.(除了不同步和允许使用 null 之外,HashMap  ...

  3. Java关于Properties用法的总结(一)

    最近项目中有一个这样的需求,要做一个定时任务功能,定时备份数据库的操表,将表数据写入txt文件.因为文件的读写路径可能需要随时改动,所以写死或者写成静态变量都不方便,就考虑使用配置文件,这里总结些配置 ...

  4. ANDROID 应用退出

    在android中finish()和system(0)都只能退出单个activity.杀进程等的等方式都不行~~~解决问题: 在针对 多activity中退出整个程序,例如从A->B->C ...

  5. FingerprintJS - 在浏览器端实现指纹识别

    FingerprintJS 是一个快速的浏览器指纹库,纯 JavaScript 实现,没有依赖关系.默认情况下,使用 Murmur Hash 算法返回一个32位整数.Hash 函数可以很容易地更换. ...

  6. JS中取整以及随机颜色问题

    前言:感觉自己已经好久好久没有写博客了,最近都是在写在线笔记比较多.现在来到新公司了,昨天刚刚完成一个项目所以今天有空研究研究一下前端方面的技术.下午在看一个游戏代码的时候,发现了几个别人留下的不错的 ...

  7. “破解大牛是怎么炼成的”之壳与ESP定律

    文章难易度:★★★ 文章阅读点/知识点:逆向破解 文章作者:Sp4ce 文章来源:i春秋   关键字:网络 信息安全技术 本文参与i春秋社区原创文章奖励计划,未经许可禁止转载! 一.前言 通过前面几篇 ...

  8. iOS从info.plist获取项目的名称及版本号

    NSString *executableFile = [[[NSBundle mainBundle] infoDictionary] objectForKey:(NSString *)kCFBundl ...

  9. [Android]竖直滑动选择器WheelView的实现

    以下内容为原创,转载请注明: 来自天天博客:http://www.cnblogs.com/tiantianbyconan/p/3819304.html 公司项目中有这么一个需求,所以需要自己实现下.效 ...

  10. 小谈KVC中KeyPath的集合运算符

    由于知识点比较简单,这里不再陈述一大堆的原理,直入主题. KVC中的集合运算符有以下三类: 1.简单集合运算符:@avg.@sum.@max.@min.@count (只能用在集合对象中,对象属性必须 ...