在项目中发现了Hprose。 使用此开放源代码组件可以方便地以Web APP应用程序的形式公开web服务并实现远程过程调用。 真的很强大。 读了几篇博文,试着亲手实现了,现在的总结过程如下。
一. Hprose依赖Maven
ependencygroupidorg.HP rose/groupidartifactidhprose-Java/artifactidversion 2.0.32/version/dependency
二、写服务端
首先创建Web项目,然后为POJO创建服务类。 这个班对外提供服务。
package com.lin.pr; 公共类服务{公共字符串服务健康(string name ) { return 'Hello,' name; }
然后,它继承HproseServlet并创建定制的servlet以向外部公开服务接口。
package com.lin.pr; importhprose.com mon.hprosemethods; importhprose.server.hproseservlet; @ web servlet (URL patterns={ '/HP rose/service ' } ) publicclassservicepublishextendshproseservlet @ overrideprotectedviet methods.addmethod('sayHello ',service ); }
入口方法要适当修改
importorg.spring framework.boot.spring application; importorg.spring framework.boot.auto configure.springbootapplication; importorg.spring framework.boot.web.servlet.servletcomponentscan; @ServletComponentScan //启动启动器时, 扫描附加到此目录和子目录的web servlet注释@ springbootapplicationpublicclasshproseapplication { publicstaticvoidmain ()
三.创建客户端
客户端只需创建一个简单的Maven项目并部署hprose依赖的jar包即可。
可以通过两种形式调用远程服务: invoke和创建服务界面。 具体看代码就好了。
package org.lin.userhprose; importhprose.client.hprosehttpclient; /** * Hello world! * /公共类别应用程序(publicstaticvoidmain (string [ ] args ) hprosehttpclientclient=newhprosehttpclient ); client.useservice (http://localhost :8080/HP rose/service ); 从界面调用//iserviceservice=client.useservice (I service.class )的string content=service.say hello (' jack ); system.out.println(RPC调用,返回: ' content ); //try/////从invoke调用//string content=client.invoke (say hello ),newobject ) (jack ),String.class ) //catch(throwablee ) {//e.printStackTrace ); //} }}
package org.lin.userhprose; publicinterfaceiservice { public string say hello (string name ); }
这样就完成了客户端的创建。
测试结果
rpc呼叫,返回: hello,杰克
四.总结
客户端可以通过接口调用服务,可以看到服务端不需要这个接口。 此外,Hprose还可以跨越多种语言,其他语言可以通过适当的类库调用用Java创建的服务。 很简单吧?
代码下载:千兆位数据/打印引导- HProse :打印引导集成HP rose进行rpc调用