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 for java 教程_Hprose for Java怎么使用?Hprose for Java使用教程相关推荐

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

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

  2. B站百万播放量Java零基础教程视频(适合Java 0基础,Java初学入门),史上最细Java零基础教学视频

    是否还在为学习Java如何入门而烦恼? 是否还在为Java软件如何安装而烦恼? 是否还在找寻着适合零基础的Java视频教程? 动力节点教学总监老杜159集课堂实录Java零基础视频教程,从初学者角度出 ...

  3. java双引号的转义字符_好程序员Java教程分享常见的转义字符

    原标题:好程序员Java教程分享常见的转义字符 好程序员Java教程分享常见的转义字符,在Java字符常量中,反斜杠(\)是一个特殊的字符,被称为转义字符,它的作用是用来转义后面一个字符.转义后的字符 ...

  4. cocos2dx java调lua,【Tech-Lua】Cocos-2dx-Lua調用java的小白教程(二)

    手把手教你如何在Win中的Cocos-2dx-Lua調用Java 網上有很多文章,說怎么Lua調用C++最佳實踐,什么官網說明文檔,可以這么一說,這些所謂的教程全都是斷手斷腳的,對於小白來說,一到了關 ...

  5. 【源码+教程】Java课设项目_12款最热最新Java游戏项目_Java游戏开发_Java小游戏_飞翔的小鸟_王者荣耀_超级玛丽_推箱子_黄金矿工_贪吃蛇

    马上就要期末了,同学们课设做的如何了呢?本篇为大家带来了12款热门Java小游戏项目的源码和教程,助力大家顺利迎接暑假![源码+教程]Java课设项目_12款最热最新Java游戏项目_Java游戏开发 ...

  6. 用myeclipse开发java web教程_转:在MyEclipse下创建Java Web项目 入门(图文并茂)经典教程...

    本文是一篇在Myeclipse下构建Java Web项目的初级教程.图文并茂,非常详细.所用的Myeclipse版本是7.5. 第一步:新建Web Project,如下图. 第二步,在弹出的窗口填写下 ...

  7. 视频教程- 19年录制Redis实战教程 高可用秒杀分布式锁布隆过滤器实战 SpringBoot教程整合-Java

    19年录制Redis实战教程 高可用秒杀分布式锁布隆过滤器实战 SpringBoot教程整合 7年的开发架构经验,曾就职于国内一线互联网公司,开发工程师,现在是某创业公司技术负责人, 擅长语言有nod ...

  8. 视频教程-手写Java框架系列教程之一反射(含配套资料)-Java

    手写Java框架系列教程之一反射(含配套资料) 张长志技术全才.擅长领域:区块链.大数据.Java等.10余年软件研发及企业培训经验,曾为多家大型企业提供企业内训如中石化,中国联通,中国移动等知名企业 ...

  9. java se13安装教程_在Linux发行版中安装Java 13/OpenJDK 13的方法

    本文介绍在Linux发行版Ubuntu 18.04/16.04.Debian 10/9.CentOS 7/8.Fedora 31/30/29中安装Java 13/OpenJDK 13.Java SE ...

  10. java教程win7 64位_win7系统安装64位JAVA的方法

    JAVA分32位版本和64位版本,有些用户要安装java的话,就要安装64位版本的JAVA,但是很多用户不知道要怎么操作,本文就给大家讲解一下 1.打开Windows7中的"计算机" ...

最新文章

  1. How to publish more papaers?
  2. C语言中的位域 bit field [转]
  3. java8新特性lambda表达式、函数式编程、方法引用和接口默认方法以及内部类访问外部变量
  4. oauth2 java 获取token_OAuth2 Token 一定要放在请求头中吗?
  5. 鹿晗都有 AI 粉了,为什么 AI 换脸剧的效果还这么渣?
  6. (六)基于霍夫变换的直线和圆检测
  7. 9月8日全球域名商(国际域名)解析新增量TOP20
  8. vba mysql 80004005_Access运行时错误'-2147467259(80004005)':方法'Controls'作用于对象'CommandBarPopup'时失败的解决方法...
  9. java------io基础(一)
  10. WinRAR 5.60 官方简体中文无广告弹窗版本
  11. USB协议(1)USB基础知识
  12. 网站卡顿,推荐这些免费使用加速工具的网站
  13. bp神经网络算法的优缺点,bp神经网络算法的优点
  14. 控制工程实践(8)——PID四种类型控制器(之比例-积分控制器PI)
  15. Adobe Photoshop CS5 12.0 Extend 绿色免安装版
  16. 微信小程序 MinUI 组件库系列之 badge 徽章组件
  17. 10-特质-Scala
  18. mysql人像伴随模型_还不了解MySQL跨行事务模型吗?看完这篇你也就差不多了!...
  19. uni-app保存图片到本地相册
  20. 工业级静默活体检测开源算法技术解析记录

热门文章

  1. java学生管理系统设计_基于JAVA学生管理系统设计和实现.ppt
  2. 计算机函数sun怎么用,excel函数怎么使用
  3. 怎样用计算机粉碎文件夹,电脑粉碎文件用什么软件好,怎么彻底粉碎电脑文件...
  4. 共享该文件当前不能用户此计算机,局域网共享常见问题解决汇集
  5. 计算机文件夹隐藏了怎么恢复,文件夹隐藏了怎么恢复,文件夹设为隐藏如何恢复...
  6. 蓝桥杯第八届等差素数列
  7. WinCE同步(ActiveSync)问题
  8. UAC白名单解决每次启动都弹出UAC对话框(不用关闭UAC)
  9. “我被苹果人脸识别系统「坑」进了监狱”
  10. python aes new_python--AES加密