jboss-remoting服务
JBoss Remoting支持多种协议方式调用远程对象,例如socket的方式、RMI的方式、Http的方式等等
分布式框架JBoss Remoting支持多种协议方式调用远程对象,例如socket的方式、RMI的方式、Http的方式等等
(目前传输协议有tcp和udp两种,其他http、ftp、telnet等都是基于tcp扩展出来的应用协议)
JBoss Remoting 采用了NIO(非阻塞io流,Java NIO可以让你异步的使用IO,例如:当线程从通道读取数据到缓冲区时,线程还是可以进行其他事情。当数据被写入到缓冲区时,线程可以继续处理它。从缓冲区写入通道也类似。)长链接,支持异步调用,采用tcp协议
依赖的jar:
- <dependency>
- <groupId>org.jboss.remoting</groupId>
- <artifactId>jboss-remoting</artifactId>
- <version>2.5.3</version>
- </dependency>
- <dependency>
- <groupId>concurrent</groupId>
- <artifactId>concurrent</artifactId>
- <version>1.3.4</version>
- </dependency>
- <dependency>
- <groupId>jboss</groupId>
- <artifactId>jboss-serialization</artifactId>
- <version>4.2.2.GA</version>
- </dependency>
服务端代码:
- import java.net.MalformedURLException;
- import javax.management.MBeanServer;
- import org.jboss.remoting.InvocationRequest;
- import org.jboss.remoting.InvokerLocator;
- import org.jboss.remoting.ServerInvocationHandler;
- import org.jboss.remoting.ServerInvoker;
- import org.jboss.remoting.callback.InvokerCallbackHandler;
- import org.jboss.remoting.invocation.NameBasedInvocation;
- import org.jboss.remoting.transport.Connector;
- public class ServerTest {
- public static void main(String[] args) {
- String locatorURI = "socket://127.0.0.1:8084";
- String params = "/?backlog=50&numAcceptThreads=30&maxPoolSize=30&clientMaxPoolSize=30&clientLeasePeriod=10000&timeout=8000";
- locatorURI += params;
- try {
- InvokerLocator locator = new InvokerLocator(locatorURI);
- Connector connector = new Connector(locator);
- connector.create();
- connector.addInvocationHandler("com.**.jhb.ServerHandle", new ServerInvocationHandler() {
- @Override
- public void addListener(InvokerCallbackHandler arg0) {
- }
- @Override
- public Object invoke(InvocationRequest arg0) throws Throwable {
- System.out.println("getRequestPayload " + arg0.getRequestPayload());
- // 方式一
- System.out.println("getParameter " + arg0.getParameter());
- // 方式二
- NameBasedInvocation obj = (NameBasedInvocation) arg0.getParameter();
- System.out.println("getParameter " + obj.getParameters()[0]);
- return "hello";
- }
- @Override
- public void removeListener(InvokerCallbackHandler arg0) {
- }
- @Override
- public void setInvoker(ServerInvoker arg0) {
- }
- @Override
- public void setMBeanServer(MBeanServer arg0) {
- }
- });
- connector.start();
- } catch (MalformedURLException e) {
- e.printStackTrace();
- } catch (Exception e) {
- e.printStackTrace();
- }
- }
- }
- public interface ServerHandle {
- String say(String hi);
- }
客户端代码:
- import java.net.MalformedURLException;
- import java.util.HashMap;
- import org.jboss.remoting.Client;
- import org.jboss.remoting.InvokerLocator;
- public class ClientTest {
- public static void main(String[] args){
- String locatorURI = "socket://127.0.0.1:8084";
- String params = "/?backlog=50&numAcceptThreads=30&maxPoolSize=30&clientMaxPoolSize=30&clientLeasePeriod=10000&timeout=8000";
- locatorURI += params;
- try {
- InvokerLocator locator = new InvokerLocator(locatorURI);
- //方式1
- Client client = new Client(locator,ServerHandle.class.getName());
- client.connect();
- client.invoke("jhb ",new HashMap<String,String>());
- //方式二
- /*ServerHandle serverHandle=(ServerHandle) TransporterClient.createTransporterClient(locator, ServerHandle.class);
- serverHandle.say("jhb");*/
- } catch (MalformedURLException e) {
- e.printStackTrace();
- } catch (Exception e) {
- e.printStackTrace();
- } catch (Throwable e) {
- e.printStackTrace();
- }
- }
- }
参考链接:
http://docs.jboss.org/jbossremoting/2.5.3.SP1/html/chapter-configuration.html#d0e1564
jboss-remoting服务相关推荐
- .NET Remoting开发系列:(三) Remoting服务发布方式
Remoting服务发布方式? 使用应用程序发布 这个在第一篇就已经讲了. 通过Windows服务发布 通过IIS发布 通过Windows服务发布Remoting 首先我们要建立一个WindowsSe ...
- Remoting服务集成到IIS的简单总结
因为项目的Remoting服务有可能集成到IIS中,所以下午利用一些时间,做了一个例子,实现了需要的功能,代码就凑合一下. 现在把这个过程总结一下: 1. 创建远程对象类Class1,它实 ...
- .net 安装remoting服务
程序->vs2008->vs tools->vs2008 命令提示 D:\QidianWorkShop\Develop\Source\Services\Snda.Qidian.Hon ...
- jboss jndi服务
http://www.builder.com.cn/2007/1217/684114.shtml
- Microsoft .Net Remoting系列专题之二:Marshal、Disconnect与生命周期以及跟踪服务
Microsoft .Net Remoting系列专题之二 一.远程对象的激活 在Remoting中有三种激活方式,一般的实现是通过RemotingServices类的静态方法来完成.工作过程事实上是 ...
- 使用javaservice 将jboss 注册为服务
近来做项目,需要jboss定期重新启动.不想再看到jboss启动那个黑洞洞的窗口,就想着把它注册为服务,然后在net start.恰好objectweb上有个open source的javaservi ...
- JBoss核心Java Web服务
这篇博客文章涉及Web服务. 好吧,更确切地说,它处理JBoss上的"普通" java Web服务. 这意味着我们将创建一个没有任何其他框架(如CXF,Axis等)的Web服务. ...
- jboss配置ejb容器_JBoss AS 7 EJB3池配置
jboss配置ejb容器 现在已经发布了AS 7.0.1,下面让我们看看有哪些新的EJB3功能可用. 就像我在上一篇文章中提到的那样 ,AS 7.0.1现在允许您为无状态会话bean和MDB配置池. ...
- JBoss AS 7 EJB3池配置
现在,AS 7.0.1已经发布,让我们看一下可用的EJB3新功能. 就像我在上一篇文章中提到的那样 ,AS 7.0.1现在允许您为无状态会话bean和MDB配置池. 当前,我们允许在子系统级别配置池, ...
- jboss eap mysql_JBoss EAP 7概述
规范 JBoss EAP 7基于以下规范构建: Java EE 7(JSR 342) Java SE 1.8 Java EE 7 specifications: Note: orange indica ...
最新文章
- LeetCode 23 合并K个升序链表
- 2 微信公众号开发 服务器配置 Token验证
- mysql行级锁升级_mysql innodb 行级锁升级
- Bootstrap 分页导航
- PYB Nano 开发板的完整设计文档
- 深入学习Java虚拟机(三)
- adb安装apk文件时的常见的错误及解决方法
- 仿Twitter源代码/社交网络源码/基于脉聊二开版本
- 运筹说 第55期丨整数规划先驱——Ralph Gomory
- 如何检测android手机是否支持3g网络或者4g网络 源码,iOS中怎么判断当前网络环境是2G/3G/4G/5G/WiFi...
- Promise、then()、catch()详解
- 各种电脑/软件/生活/音乐/动漫/电影技巧汇总,你肯定能发现你需要的使用技巧,你的生活绝对会因此简化很多,具体操作见本专栏相关文章或点击链接
- iOS 通过数字拼音快速搜索股票
- android SDK buid tools 27.0.3版本离线下载
- Spring/SpringBoot系列之Spring中涉及的9种设计模式【七】
- 判断门禁卡是否加密_离无卡生活更进一步!判断您的门禁卡能否被手机NFC功能模拟...
- 地鼠与植物,hash + 平衡树
- java生成二维码图片(有logo),并在图片下方附文字
- 桥接、NAT、HOST-ONLY三种网络模式的区别详解
- 阿里P7晒出工资单:狠补了这个,真香...