1、写在前面
没有好的开头语言,真的让我很尬(0哈哈0)! 项目中用到了Hprose远程连接,觉得很强大贴出来分享一下!
2、代码实现
引用(也可以到https://github.com/hprose/hprose-java 下载jar)
<dependency>
<groupId>org.hprose</groupId>
<artifactId>hprose-java</artifactId>
<version>2.0.32</version>
</dependency>
在启动类上加上 @ServletComponentScan 注解
写一个测试类
@WebServlet(urlPatterns = {"/hprose"})
public class TcpCommand extends HproseServlet {
/**
* 注册
* methods.addMethod("Hello", Test ); //注册sayHello单个方法
*
* @param methods
*/
@Override
public void setGlobalMethods(HproseMethods methods) {
Test test = new Test();
methods.addInstanceMethods(test);
}
}
Test.Class 代码
public class Test {
public String sayHello(String name) {
return "Hello," + name;
}
}
服务端已经可以! 这么简单? 没想到吧(哈哈)
3、客户端
public interface IStub {
@SimpleMode(true)
String sayHello(String name);
@SimpleMode(true)
String haha(String name, int iii);
@SimpleMode(true)
String UserInfo(TestUser user);
}
public static void main(String[] args) throws IOException, URISyntaxException {
// HproseClassManager.register(TestUser.class, "testuser");
HproseTcpClient client = new HproseTcpClient("http://localhost:8080/");
client.setFullDuplex(true);
client.setMaxPoolSize(1);
IStub stub = client.useService(IStub.class);
stub.Hello("Async World", new HproseCallback1<String>() {
public void handler(String result) {
System.out.println(result);
}
});
System.out.println(stub.Hello("World5"));*/
TestUser user = new TestUser();
user.setId(5);
user.setName("222");
System.out.println(stub.UserInfo(user));
client.close();*/
HproseClient client = new HproseHttpClient();
client.useService("http://localhost:8080/hprose");
//通过接口调用
IStub stub = client.useService(IStub.class);
String content = stub.gexx(getPropertisByIsPayment());
System.out.println("rpc调用,返回:" + content);
}