Hprose轻松实现远程过程调用(RPC)

Hprose轻松实现远程过程调用(RPC)

项目中发现了Hprose,通过这个开源组件可以轻松通过Web应用的形式发布WebService,实现远程过程调用,真的是非常强大!!!看了几篇博文,也自己动手实现了一下,现总结过程如下:

一、Hprose的Maven依赖

org.hprose

hprose-java

2.0.32

二、编写服务端

首先创建一个Web项目,编写一个POJO的Service类,这个类将对外提供服务:

package com.lin.pr;

public class Service {

public String sayHello(String name) {

return "Hello," + name;

}

}

然后继承HproseServlet,编写一个定制的Servlet,从而对外暴露服务接口:

package com.lin.pr;

import hprose.common.HproseMethods;

import hprose.server.HproseServlet;

@WebServlet(urlPatterns = {"/hprose/service"})

public class ServicePublish extends HproseServlet{

@Override

protected void setGlobalMethods(HproseMethods methods) {

super.setGlobalMethods(methods);

//发布sayHello方法

Service service = new Service();

methods.addMethod("sayHello", service);

}

}

入口方法要做适当修改

import org.springframework.boot.SpringApplication;

import org.springframework.boot.autoconfigure.SpringBootApplication;

import org.springframework.boot.web.servlet.ServletComponentScan;

@ServletComponentScan //启动器启动时,扫描本目录以及子目录带有的webservlet注解的

@SpringBootApplication

public class HproseApplication {

public static void main(String[] args) {

SpringApplication.run(HproseApplication.class, args);

}

}

至此,服务端已经编写完毕!

三、编写客户端

客户端只需要创建一个简单的Maven项目,引入hprose依赖的jar包即可。

可通过invoke和编写Service接口两种形式调用远程服务,具体看代码即可:

package org.lin.userhprose;

import hprose.client.HproseHttpClient;

/**

* Hello world!

*

*/

public class App

{

public static void main( String[] args )

{

HproseHttpClient client = new HproseHttpClient();

client.useService("http://localhost:8080/hprose/service");

//通过接口调用

IService service = client.useService(IService.class);

String content = service.sayHello("Jack");

System.out.println("rpc调用,返回:" + content);

// try {

// //通过invoke调用

// String content = client.invoke("sayHello", new Object[]{"Jack"}, String.class);

// System.out.println("rpc调用,返回:" + content);

// } catch (Throwable e) {

// e.printStackTrace();

// }

}

}

package org.lin.userhprose;

public interface IService {

public String sayHello(String name);

}

至此,客户端编写完毕!

测试结果

rpc调用,返回:Hello,Jack

四、总结

可以看到,客户端可以通过接口调用服务,而服务端甚至不需要有此接口。同时Hprose是跨语言的,其他语言通过相应的类库就可调用我们使用Java编写的服务,是不是很简单??

代码下载:https://github.com/datou-leo/springboot-hprose

相关推荐

小米音响怎么连电视?新手一看就会的教程!
365网站取款不给怎么办

小米音响怎么连电视?新手一看就会的教程!

📅 07-09 👁️ 1033
巴雷拉:遗憾没踢过世界杯 意大利像欧冠决赛的国米?确实要反思
法国球员跑动数据:姆巴佩全场跑动距离11.9km 最高时速33.3km/h
魔兽世界金币交易平台哪个好?权威推荐TOP5
365网站取款不给怎么办

魔兽世界金币交易平台哪个好?权威推荐TOP5

📅 07-04 👁️ 6730
电子游戏的英文是啥?这些热门游戏英文名要知道!
365网站取款不给怎么办

电子游戏的英文是啥?这些热门游戏英文名要知道!

📅 07-06 👁️ 9627
炒股有四难!对收入在20万以上(家庭收入40万以上)的工薪阶层在股市赚到100万不难,甚至到500万也不难。但后面的太难...