Hprose For Java是一款轻量级的跨语言跨平台的高性能远程动态通讯软件,可以轻松的构建分布式应用系统,软件操作简单,功能强大,只需稍加学习就可以快速上手了。为了方便大家使用,小编还带来了使用教程哦,赶快来围观下载吧!

Hprose Java使用教程

创建Hprose的Hello服务器

我们以Netbeans作为开发环境为例,来介绍一下如何创建一个Hprose服务器,按照传统惯例,都是以Hello World为例来作为开始的,我们这里稍稍做一下改变,我们创建的服务器将发布一个sayHello方法,这样客户端就可以调用它来对任何事物说Hello啦。

首先启动Netbeans开发环境,打开菜单的“文件→新建项目”,选择“Java Web→Web应用程序”,然后选择下一步,将项目名称改为HelloServer,再点下一步,选择好服务器后,点完成。

下面我们该把Hprose.jar放到该项目中来了。在Netbeans创建的HelloServer目录下,新建一个lib目录,然后将Hprose.jar复制到其中。

接下来在项目中,打开HelloServer下“库”的右键菜单,点击“添加JAR/文件夹...”,选择Hprose.jar,将其添加入库中。

之后在“源包”上打开右键菜单,选“新建→Java类...”,将类名改为Hello,包名任意,也可以不填写,只要跟后面配置HproseServlet时保持一致就可以啦。

Hello类的代码如下:

Java代码

public class Hello {

public String sayHello(String name) {

return "Hello " + name + "!";

}

}

好了,下面我们只要再配置一下Servlet,就可以发布这个服务啦。配置方法如下:

打开“HelloServer→配置文件→web.xml”。

打开“Servlet”选单,点击“添加Servlet元素...”按钮,设置Servlet名称为HelloServlet,Servlet类为hprose.server.HproseServlet,URL模式为/Hello。

在初始化参数部分,点“添加(A)...”按钮,设置参数名为class,参数值为Hello,这里的Hello对应我们刚才创建的Hello类。如果您在创建Hello类时包含有包名,这里也应该写包含了包名的全名。

这样我们的服务器端就创建好了,是不是相当的简单啊?

好了我们来看看效果吧,打开“HelloServer”的右键菜单,选择“运行”,之后您会看到浏览器窗口被打开,不过默认页面并不是我们的Servlet页面,没关系,我们直接在浏览器中更改一下URL,改为:http://localhost:8084/HelloServer/Hello,然后回车,如果看到如下页面内容就表示我们的服务发布成功啦。

引用 Fa1{s8"sayhello"}z

接下来我们来看一下客户端如何创建吧。

创建Hprose的Hello客户端

客户端我们以Java控制台程序为例,开发环境仍然为Netbeans。

客户端可以通过invoke方法动态调用服务,也可以通过接口方式来调用,下面我们来分别介绍这两种方式。

通过invoke方法动态调用

首先我们先来看看如何使用invoke方法来动态调用服务。

在Netbeans中, 打开菜单的“文件→新建项目”,选择“Java→Java应用程序”。然后选择下一步,将项目名称改为HelloClient,并将主类名也改为HelloClient,然后点击完成即可。

下面我们该把HproseClient.jar放到该项目中来了。在Netbeans创建的HelloClient目录下,新建一个lib目录,然后将HproseClient.jar复制到其中。

接下来在项目中,打开HelloClient下“库”的右键菜单,点击“添加JAR/文件夹...”,选择HproseClient.jar,将其添加入库中。

接下来开始编写HelloClient类的代码:

Java代码

import hprose.client.HproseHttpClient;

import java.io.IOException;

public class HelloClient {

public static void main(String[] args) throws IOException {

HproseHttpClient client = new HproseHttpClient();

client.useService("http://localhost:8084/HelloServer/Hello");

String result = (String) client.invoke("sayHello", new Object[] { "Hprose" });

System.out.println(result);

}

}

最后我们来运行一下看看结果吧,如果没有操作错误的话,您应该可以看到如下的输出结果:

引用 Hello Hprose!

通过invoke方法调用服务器方法很灵活,invoke方法具有多个重载,即使是对同一个服务器方法,您也可以通过指定不同的参数来获得不同类型的结果。后面我们会在详细介绍Hprose客户端时,再对invoke方法作更详细的介绍。

但是您也会发现,通过invoke调用不是那么的直观,参数需要自己写入数组,结果也需要自己转型,那么有没有方法可以向本地调用那样来进行远程调用呢?可以,那就是通过接口方式调用。

通过接口方式调用

我们用与上面同样的方式来创建项目HelloClient2,然后打开HelloClient2.java,编辑其代码如下:

Java代码

import hprose.client.HproseHttpClient;

import java.io.IOException;

interface IHello {

String sayHello(String name);

}

public class HelloClient2 {

public static void main(String[] args) throws IOException {

HproseHttpClient client = new HproseHttpClient();

client.useService("http://localhost:8084/HelloServer/Hello");

IHello hello = (IHello) client.useService(IHello.class);

String result = hello.sayHello("Hprose");

System.out.println(result);

}

}

现在代码虽然多了,但是在调用时,却方便了不少。

如果您曾经用过RMI或者其它的远程调用工具的话,您可能会惊讶的发现,这里的IHello接口在服务器端并没有实现,只是有相同的方法,但在客户端仍然可以直接通过接口进行调用。Hprose就是这样灵活,您甚至可以定义不同于服务器实现的客户端接口,只要参数和结果类型是相容或者可以转换的类型,就可以正常的进行调用。所以在Hprose中,您不但可以通过接口方式来调用Java服务器提供的服务,同样可以调用非Java服务器提供的服务。

Hprose Java特点

Hprose 支持众多编程语言,例如:

AAuto Quicker

ActionScript

ASP

C++

Dart

Delphi/Free Pascal

dotNET(C#, Visual Basic...)

Golang

Java

JavaScript

Node.js

Objective-C

Perl

PHP

Python

Ruby

...

通过 Hprose,你就可以在这些语言之间方便高效的实现互通了。

本项目是 Hprose 的 Java 版本实现。

hprose java 下载_Hprose Java|Hprose For Java下载v2017.2.0官方版 附使用教程 - 欧普软件下载...相关推荐

  1. ege函数库_EGE图形库|EGE图形库下载v12.11 最新版 附使用教程 - 欧普软件下载

    EGE图形库是基于windows系统的简易绘图库,由GDI编写的BGI兼容库,完全可以TC的BGI库而存在,支持VC6, VC2008, VC2010, C-Free等IDE,有需要的朋友可以下载! ...

  2. ltspice语言中文_LTspice下载|LTspice(电路仿真软件)下载v4.14r 中文免费版 附安装教程 - 欧普软件下载...

    LTspice软件是一款功能强大的电路仿真软件,内置多种电路图仿真实例,可以进行Spice III 仿真器.电路图捕获和波形观测器,可以大大简化开关稳压器的仿真提供了改进和模型.软件功能强大,操作简单 ...

  3. afuwin64教程_afuwin64位|AMI BIOS写入工具(AFUWIN)下载v4.48 免费版 附使用教程 - 欧普软件下载...

    afuwin64位是一款专业的AMI BIOS写入工具,目前支持64位系统,可以使用命令行和图形用户界面更新系统的bios工具,拥有相同的命令行参数和性能,适用于AMIBIOS核心 7.xx或AMIB ...

  4. java 1.9环境配置_jdk1.9下载|jdk1.9 64位下载官方版 附安装配置教程 - 欧普软件下载...

    jdk1.9刚发布,小编为您带来的最新版本下载,新增简化进程api.代码可以分段缓存.增加轻量级json api等功能,为您的java开发提供更多的便利,此版本是64位系统用户打造的,需要的朋友赶快来 ...

  5. mysql自动备份工具_|Mysql自动备份工具(Auto MySQL Backup)下载v1.5 官方版 附教程 - 欧普软件下载...

    Auto MySQL Backup是一款好用的Mysql自动备份工具,可以对MySQL数据库进行每日.每周和每月备份,可同时备份多个数据库.压缩备份.备份远程数据和发送日志等,小编还带来了详细的使用方 ...

  6. java maven下载_maven下载安装 Apache Maven(java项目管理工具) v3.6.1 官方版(附Maven环境变量配置) 下载-脚本之家...

    Maven是一个java项目管理工具,能够很方便的帮你管理项目报告,生成站点,管理jar文件,需要的朋友可以下载试试! 它基于项目对象模型(POM)的概念,可以从中央信息中管理项目的构建.报告以及文档 ...

  7. java12下载安装_jdk12|jdk12下载v12.0.1官方版 附安装配置教程 - 欧普软件下载

    jdk12又称Java12,常用的编程开发程序.jdk12新版本带来了多项新特性,比如微基准测试套件.switch表达式预览功能.JVM常量API.只保留一个AArch64实现等,可以轻松实现应用程序 ...

  8. mysql导入xml 工具下载_XmlToOracle(XML导入Oracle工具)下载_XmlToOracle(XML导入Oracle工具) 版本: V2.0官方版_魅蓝下载...

    XmlToOracle(XML导入Oracle工具)简介 XmlToOracle(XML导入Oracle工具)简介一:XmlToOracle是一款XML导入Oracle的数据库东西,可以把XML文件中 ...

  9. pyscripter支持python什么版本_PyScripter下载|PyScripter(Python集成开发环境) v2.6.0官方版 64位/32位 - 121下载站...

    PyScripter是一款基于delphi打造的一款python集成开发环境,支持32位和64位操作系统,软件提供了友好的操作界面和丰富实用的开发功能,可以帮助开发者进行程序的预览.调试以及编译等操作 ...

最新文章

  1. 使用隐式Intent打开系统浏览器的百度网页
  2. ASP.NET Core + Docker + Jenkins + gogs + CentOS 从零开始搭建持续集成
  3. jenkins自动化构建iOS应用配置过程中遇到的问题
  4. 9种动态可视化技巧,快速提升可视化大屏能力(附模板)
  5. C语言显示相位的程序,【图片】求助大佬用c语言帮忙编写下程序【c程序吧】_百度贴吧...
  6. hiho #1014 : Trie树(模板)
  7. K8S 的报错问题解决
  8. webstorm 快捷键
  9. 用java实现mysql数据可视化_java可视化界面操作数据库编程.doc
  10. u深度重装系统详细教程_u深度启动u盘安装win7系统教程
  11. ubuntu用户磁盘空间分配--quota
  12. discuz招商加盟门户整站模板
  13. 三步搞定Origin双误差棒画法!
  14. 盖茨和李嘉诚双龙卸甲 他们的区块链业务一个在链圈扶贫 一个在币圈赚钱
  15. ArcMap客户端——将shp属性表导出为excel
  16. 从零基础到精通的Python学习路线(附教程)
  17. 面向对象(文字格斗进阶版)
  18. UnityShader学习笔记 Unity的表面着色器
  19. 工业网络的物理隔离与数据采集
  20. 测试分析及调优(转)

热门文章

  1. 索引体积_米家温湿度计体积虽小,耗电不小,如果经常离线,换颗电池吧
  2. mysql 查询前一个月数据_mysql 查询当天、本周,本月,上一个月的数据......
  3. Acer 4750 安装黑苹果_安装黑苹果,你需要注意哪几点
  4. 陕西省高等数学竞赛_关于参加“陕西高校第十二次大学生高等数学竞赛”的通知...
  5. 甘特图 知乎_APS生产排程软件基础知识-计划甘特图
  6. jquery在html中显示文字居中,jquery单击文字或图片内容放大并居中显示
  7. PHP代码猜数字游戏,js实现一个猜数字游戏
  8. HDU - 1525
  9. 使用代理进行界面之间的反向传值
  10. Promise 让异步更优