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端设置超时无效

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/528973.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

python黑客库长安十二时辰 更新_【Python成长之路】python 从零学爬虫 -- 没时间看《长安十二时辰》电视剧怎么办?直接爬取所有剧情吧!...

【写在前面】最近大火的《长安十二时辰》真的是好看,算的是良心网剧了。但是由于平时工作时间较长,经常无法准时追剧,并且又因为不想见到元裁那对挨千刀的(作为演员,演技是值得肯定的,角色演绎的让人看的心烦)。因此就…

java字符串笔试题_五道Java常见笔试题及答案汇总

1、String和StringBuffer的区别?答:Java平台提供了两个类:String和StringBuffer,它们可以储存和操作字符串,即包含多个字符的字符数据。这个String类提供了数值不可改变的字符串。而这个StringBuffer类提供的字符串进行…

遥感原理与应用孙家炳_2.2遥感应用模型

章节概览遥感应用模型是遥感的一种定量化手段,通常在遥感领域有一个更广为人知的名词——定量遥感。但是定量遥感是一种方法模型而非技术手段,随着科学的发展,热门越来越体会到定量遥感的必要性。定量遥感的应用是十分广泛的,也是…

python升级命令debian_debian python 2.7.11 升级

首先下载源tar包可利用linux自带下载工具wget下载,如下所示:下载完成后到下载目录下,解压tar -zxvf Python-2.7.11.tgz进入解压缩后的文件夹cdPython-2.7.11在编译前先在/wp-content/local建一个文件夹python27(作为python的安装路径&#xf…

mysql必学十大必会_MYSQL 学习(一)--启蒙篇《MYSQL必知必会》

MYSQL必知必会一. DDL 数据定义语言Data Definition Language 是指CREATE,ALTER和DROP语句。DDL允许添加/修改/删除包含数据的逻辑结构,或允许用户访问/维护数据(数据库,表,键,视图......)的逻辑结构。DDL是关于“元数…

python连接wifi_python 自动重连wifi windows的方法

如下所示:# codingutf-8import urllib2import urllibfrom cookielib import CookieJarimport osimport reimport timeclass ConnectWeb(object):def __init__(self):self.cookiejarinmemory CookieJar()self.opener urllib2.build_opener(urllib2.HTTPCookieProce…

java for新循环_Java 8 新语法习惯 (for 循环的函数替代方案)

我们看这样一个示例public class ForDemo {public static void main(String[] args) {// TODO Auto-generated method stubSystem.out.println("Get set...");for (int i 0; i < 4; i) {System.out.println(i"...");}}}测试结果Get set...0...1...2...…

喜马拉雅 xm文件转m4a_喜马拉雅电台、课程语音如何转成文字?

今天看了一篇文章“AI面前人类一败涂地”就是说了AI的发展让所有的事情几乎都可以实现科技化&#xff0c;无需人工操作&#xff0c;工作效率还比人工要高很多。这样说来的确是这样。语音转换也是其中一门技术&#xff0c;人们现在对于语音的交流很多&#xff0c;比如社交软件的…

java url特殊字符转义字符_URL中包含有特殊字符,进行转义

String temp URLEncoder.encode(json);URL中的特殊字符有些符号在URL中是不能直接传递的&#xff0c;如果要在URL中传递这些特殊符号&#xff0c;那么就要使用他们的编码了。编码的格式为&#xff1a;%加字符的ASCII码&#xff0c;即一个百分号%&#xff0c;后面跟对应字符的A…

java 多重注解_Java注解-元数据、注解分类、内置注解和自定义注解

大家好&#xff0c;我是乐字节的小乐&#xff0c;上次说过了Java多态的6大特性|乐字节&#xff0c;接下来我们来看看Java编程里的注解。Java注解有以下几个知识点&#xff1a;元数据注解的分类内置注解自定义注解注解处理器Servlet3.0本文先介绍前面4个知识点&#xff1a;元数据…

python getattr函数_Python中的getattr()函数详解

在计算机编程中&#xff0c;自省是指这种能力&#xff1a;检查某些事物以确定它是什么、它知道什么以及它能做什么。自省向程序员提供了极大的灵活性和控制力。自省(introspection)&#xff0c;在计算机编程领域里&#xff0c;是指在运行时来判断一个对象的类型的能力。它是Pyt…

ie8不兼容java项目_常见IE8兼容性问题及解决

1、css3媒体查询IE8不支持媒体查询解决&#xff1a;respond.js&#xff0c;在页面中所有css文件的引用位置之后引用Respond.js2、HTML5新标签IE8不支持H5新标签解决&#xff1a;html5shiv.js&#xff0c;在页面中引用html5shiv.js文件。必须添加在页面的元素内&#xff0c;因为…

python对图像二值化_python如何二值化图像

在python中二值化图像的方法&#xff1a;首先将图片转化为灰色图像&#xff1b;然后自定义灰度界限&#xff1b;最后输入“photoImg.point(table,1)”命令(table为自己创建的数组名)即可二值化图像。# 图片二值化代码如下&#xff1a;from PIL import Imageimg Image.open(tes…

Java快速提升_java快速复习 一 基础语法

最近看很多算法书&#xff0c;比较不错的有不少都是java语言描述&#xff0c;所以用一天时间快速研究并整理java &#xff0c;参考资料&#xff1a;java入门经典Call this file "Example2.java".class Example2 {public static void main(String args[]) {int a&…

酷狗音乐linux版_酷狗音乐概念版APP内测获用户好评:极简化,更高级

这两天在网上冲浪的时候&#xff0c;发现不少网友都在安利一个叫做“酷狗音乐概念版”的APP&#xff0c;难道是酷狗又在闷声搞大事了&#xff1f;搜了一下发现&#xff0c;原来是酷狗音乐概念版APP已经开始进入内测阶段&#xff0c;尝试着下载使用&#xff0c;果然发现“更酷更…

java 计算器类图_多态计算器(封装、继承、多态、简单工厂)

一.封装向对象程序设计中&#xff0c;一个非常重要的技术便是封装&#xff0c;也就是把客观事物封装成抽象的类&#xff0c;并且类可以把自己的数据和方法只让可信的类或者对象操作&#xff0c;对不可信的进行信息隐藏。这样做的好处在于可以使类内部的具体实现透明化&#xff…

图书管理系统 java 源码_[源码和文档分享]基于C语言和SQL SERVER数据库实现的图书管理系统...

摘 要本文根据《数据库应用系统设计》课程要求而做。选择图书馆管理系统设计与开发是因为觉得图书馆管理系统对我们的帮助很大&#xff0c;并且经常去图书馆&#xff0c;对图书馆的大部分功能及流程还是比较了解&#xff0c;而且现在有些地方可能还不够完善。这次课程设计目标是…

java useragent 360 遨游 火狐_各种浏览器UserAgent一览表(桌面+移动)

桌面IE而IE各个版本典型的userAgent如下&#xff1a;Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0)Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.2)Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)Mozilla/4.0 (compatible; MSIE 5.0; Windows NT)其中&#x…

sql server 修改字段不能为空_SQL-SQL介绍

一SQL 介绍SQL&#xff08;Structured Query Language&#xff09;,语义是结构化语言&#xff0c; 是一门 ANSI 的标准计算机语言&#xff0c;用来访问和操作数据库系统&#xff1b;二 数据库介绍2.1 数据库我们已经知道了SQL是操作数据库的语言&#xff0c;那么数据库是什么&a…

python 数组转音频_Python3+将2声道音频,分拆成1声道

现在是将双声道的音频分拆成单声道的。同理可以将多声道的音频文件&#xff0c;转为1声道的音频文件。注意新形成的音频文件的rate&#xff0c;需要与原音频的相同。import osimport waveimport numpy as npimport pyaudiofile1 os.path.join(os.path.abspath(os.path.dirname…