java rmi接口 超时设置_Spring RMI客户端读超时设置 | 学步园
标准Java的RMI设置我所知道的有三种方式,其中第1、2种不区分框架均适用,但影响整个JVM级别的RMI服务
1. 启动时设置sun.rmi.transport.tcp.responseTimeout,单位是毫秒
java -Dsun.rmi.transport.tcp.responseTimeout=50
2.在应用程序中设置环境变量sun.rmi.transport.tcp.responseTimeout
System.setProperty("sun.rmi.transport.tcp.responseTimeout", "5000") 单位也是毫秒
3.自定义socketfactory,具体用法参照官方这个指南
http://docs.oracle.com/javase/1.4.2/docs/guide/rmi/socketfactory/index.html
在Spring中,前面两种都能生效,第三种有些地方需要注意
1. 在server端设置自定义的socket factory
2.需要设置的是clientSocketFactory和serverSocketFactory这两个属性,而不是registryClientSocketFactory和registryServerSocketFactory,而且这两个属性要不全部设置,要不全部不设置,不能只设置一个
3.自定义的socketfactory必须实现Serializable接口(最好同时重写hashCode和equals方法)
具体用法如下:
server端配置
RMICustomClientSocketFactory.java
public class RMICustomClientSocketFactory implements RMIClientSocketFactory, Serializable {
/**
*
*/
private static final long serialVersionUID = 2879181835011310833L;
private int timeout;
/**
* 设置超时时间
*
* @param timeout
*/
public void setTimeout(int timeout) {
this.timeout = timeout;
}
@Override
public Socket createSocket(String host, int port) throws IOException {
Socket socket = new Socket();
socket.setSoTimeout(timeout);
socket.setSoLinger(false, 0);
socket.setKeepAlive(false);
socket.connect(new InetSocketAddress(host, port), timeout);
return socket;
}
}
RMICustomServerSocketFactory.java
public class RMICustomServerSocketFactory implements RMIServerSocketFactory,Serializable {
/**
*
*/
private static final long serialVersionUID = 8357061901854965297L;
private int timeout = 17;
public void setTimeout(int timeout) {
this.timeout = timeout;
}
@Override
public ServerSocket createServerSocket(int port) throws IOException {
ServerSocket serverSocket = new ServerSocket(port);
serverSocket.setSoTimeout(timeout);
return serverSocket;
}
}
在2.5.6和3.1.2中测试通过,另外在client端设置超时无效
标准Java的RMI设置我所知道的有三种方式,其中第1、2种不区分框架均适用,但影响整个JVM级别的RMI服务
1. 启动时设置sun.rmi.transport.tcp.responseTimeout,单位是毫秒
java -Dsun.rmi.transport.tcp.responseTimeout=50
2.在应用程序中设置环境变量sun.rmi.transport.tcp.responseTimeout
System.setProperty("sun.rmi.transport.tcp.responseTimeout", "5000") 单位也是毫秒
3.自定义socketfactory,具体用法参照官方这个指南
http://docs.oracle.com/javase/1.4.2/docs/guide/rmi/socketfactory/index.html
在Spring中,前面两种都能生效,第三种有些地方需要注意
1. 在server端设置自定义的socket factory
2.需要设置的是clientSocketFactory和serverSocketFactory这两个属性,而不是registryClientSocketFactory和registryServerSocketFactory,而且这两个属性要不全部设置,要不全部不设置,不能只设置一个
3.自定义的socketfactory必须实现Serializable接口(最好同时重写hashCode和equals方法)
具体用法如下:
server端配置
RMICustomClientSocketFactory.java
public class RMICustomClientSocketFactory implements RMIClientSocketFactory, Serializable {
/**
*
*/
private static final long serialVersionUID = 2879181835011310833L;
private int timeout;
/**
* 设置超时时间
*
* @param timeout
*/
public void setTimeout(int timeout) {
this.timeout = timeout;
}
@Override
public Socket createSocket(String host, int port) throws IOException {
Socket socket = new Socket();
socket.setSoTimeout(timeout);
socket.setSoLinger(false, 0);
socket.setKeepAlive(false);
socket.connect(new InetSocketAddress(host, port), timeout);
return socket;
}
}
RMICustomServerSocketFactory.java
public class RMICustomServerSocketFactory implements RMIServerSocketFactory,Serializable {
/**
*
*/
private static final long serialVersionUID = 8357061901854965297L;
private int timeout = 17;
public void setTimeout(int timeout) {
this.timeout = timeout;
}
@Override
public ServerSocket createServerSocket(int port) throws IOException {
ServerSocket serverSocket = new ServerSocket(port);
serverSocket.setSoTimeout(timeout);
return serverSocket;
}
}
在2.5.6和3.1.2中测试通过,另外在client端设置超时无效
java rmi接口 超时设置_Spring RMI客户端读超时设置 | 学步园相关推荐
- java 设置组件所有字体_一次性设定Java程序所有组件字体及主题对字体的影响 | 学步园...
转自:http://blog.csdn.net/LoveVV99/archive/2005/10/20/510241.aspx 用Java写程序时,希望能够设置各个控件的字体,一个个地设定各个控件的字 ...
- rtsp端口号_设置RTSP, RTP和RTCP端口号 | 学步园
1.设置RTSP端口号 设置RTSP端口号的处理位于ARTSPConnection.cpp文件中,首先从url中获取端口号,如果读取不到,则设置为默认端口554.代码处理如下: ARTSPConnec ...
- java restful接口开发实例_Spring Boot 中 10 行代码构建 RESTful 风格应用!
点击上方"Java后端技术",选择"置顶或者星标" 你关注的就是我关心的! 作者:江南一点雨 微信公众号:牧码小子(ID:a_javaboy) 推荐阅读:10个 ...
- java调用接口失败重试,httpclient接口测试中重试控制器设置
本人在使用httpclient做接口测试的过程中,之前并没有考虑到请求失败自动重试的情况,但有时又需要在发生某些错误的时候重试,比如超时,比如响应频繁被拒绝等等,在看过官方的示例后,自己写了一个自动重 ...
- java calendar 月 加一_JAVA Calendar设置时间,月份总是加1 | 学步园
代码: Calendar calendar = Calendar.getInstance(); calendar.set(Calendar.MONTH, month-1 ); calendar.set ...
- java配置jndi连接数_JavaWeb:Tomcat下配置数据源(JNDI)连接数据库 | 学步园
---------------------------------------------------------------------------------------------------- ...
- java线程interrupt用法_Java线程中interrupt那点事 | 学步园
1.先看一下例子程序: import java.io.IOException; import java.net.ServerSocket; import javax.rmi.CORBA.Tie; /* ...
- java图像膨胀_java实现的图像腐蚀、膨胀运算 | 学步园
这几天研究图像处理过程接触的腐蚀膨胀操作,要找个java源码参考都比较困难,所以自己写了java实现代码,并添加了阈值判断功能.可以手动修改结构元素以或者局部小改动得到不同的效果.欢迎交流指正!(PS ...
- java对jna的配置选项_JNA编程之一:入门 | 学步园
好了,一堆废话后还是要进入主题,所谓JNA就是"Java Native Access"的缩写.说白了就是Java直接访问/调用本地动态库.最好的入门方法就是从JNA的官网开始. 0 ...
最新文章
- LSJ_NHibernate第三章 IDAL,DAL,BLL
- 9个技巧让你的PyTorch模型训练变得飞快!
- linux网络编程面试题,完美收官!字节4面斩下2-2Offer
- 对话阿里云李飞飞:下一代企业级数据库6大技术方向
- gcp devops_将GCP AI平台笔记本用作可重现的数据科学环境
- 访问tomcat服务器文件路径,外置tomcat映射服务器路径以及springboot内置tomcat映射路径配置...
- linux和安卓交互,Android中webview和js之间的交互及注意事项
- MySQL 8.0 异步复制的三种方式
- Vue学习笔记之15-vue-router详解
- 编译ffmpeg:no match insn: lbu $r16,0($r5)
- fatal error: alsa/asoundlib.h: 没有那个文件或目录
- 计算机硬盘存贮量单位,硬盘存储计量单位KB、MB、GB大小换算
- 苹果手机Safri浏览器 js 解析问题
- 计算机科学与技术b类大学名单,双一流a类大学和b类大学名单及学科
- PNAS:整合抑郁症的分子、细胞和皮层神经影像特征
- 计算机控制台win10,Win10系统打开Windows控制台的方法
- 永恒之蓝勒索漏洞复现
- 爬取女朋友用我淘宝已购买的宝贝数据,发现了她特殊的秘密...
- 墨刀教程:如何快速制作一个App首页原型?
- java异常排列方式_java中排序报:Comparison method violates its general contract异常的解决...
热门文章
- 从 0 到 300,Instagram 创始人 CTO 分享工程团队成长的经验
- android动画文档,Android 动画系统汇总
- docker Harbor2.3.4 https 搭建镜像仓库
- 解决Maven打包(编译)慢的问题
- linux环境下redis5.0的安装配置
- EditPlus连接远程Linux虚拟机
- Android 控件 - Button
- Leetcode 206.反转链表(双指针迭代法和递归操作)
- android重新编译res,使用 gradle 在编译时动态设置 Android resValue / BuildConfig / Manifes中lt;meta-datagt;变量的值...
- 猫眼java开发暑期实习_校招|猫眼 Android日常实习一面面经