文档章节

使用System.getProperties()获取系统参数 配置代理

吐槽的达达仔
 吐槽的达达仔
发布于 2014/12/05 22:18
字数 1344
阅读 35
收藏 1

 

1.java的System.getProperty()方法可以获取的值

 

java.version

Java 运行时环境版本

java.vendor

Java 运行时环境供应商

java.vendor.url

Java 供应商的 URL

java.home

Java 安装目录

java.vm.specification.version

Java 虚拟机规范版本

java.vm.specification.vendor

Java 虚拟机规范供应商

java.vm.specification.name

Java 虚拟机规范名称

java.vm.version

Java 虚拟机实现版本

java.vm.vendor

Java 虚拟机实现供应商

java.vm.name

Java 虚拟机实现名称

java.specification.version

Java 运行时环境规范版本

java.specification.vendor

Java 运行时环境规范供应商

java.specification.name

Java 运行时环境规范名称

java.class.version

Java 类格式版本号

java.class.path

Java 类路径

java.library.path

加载库时搜索的路径列表

java.io.tmpdir

默认的临时文件路径

java.compiler

要使用的 JIT 编译器的名称

java.ext.dirs

一个或多个扩展目录的路径

os.name

操作系统的名称

os.arch

操作系统的架构

os.version

操作系统的版本

file.separator

文件分隔符(在 UNIX 系统中是“/”)

path.separator

路径分隔符(在 UNIX 系统中是“:”)

line.separator

行分隔符(在 UNIX 系统中是“/n”)

user.name

用户的账户名称

user.home

用户的主目录

user.dir

用户的当前工作目录

 

2.java 通过System.getProperties()获取系统参数

   Properties props=System.getProperties(); //系统属性
   System.out.println("Java
的运行环境版本:"+props.getProperty("java.version"));
   System.out.println("Java
的运行环境供应商:"+props.getProperty("java.vendor"));
   System.out.println("Java
供应商的URL"+props.getProperty("java.vendor.url"));
   System.out.println("Java
的安装路径:"+props.getProperty("java.home"));
   System.out.println("Java
的虚拟机规范版本:"+props.getProperty("java.vm.specification.version"));
   System.out.println("Java
的虚拟机规范供应商:"+props.getProperty("java.vm.specification.vendor"));
   System.out.println("Java
的虚拟机规范名称:"+props.getProperty("java.vm.specification.name"));
   System.out.println("Java
的虚拟机实现版本:"+props.getProperty("java.vm.version"));
   System.out.println("Java
的虚拟机实现供应商:"+props.getProperty("java.vm.vendor"));
   System.out.println("Java
的虚拟机实现名称:"+props.getProperty("java.vm.name"));
   System.out.println("Java
运行时环境规范版本:"+props.getProperty("java.specification.version"));
   System.out.println("Java
运行时环境规范供应商:"+props.getProperty("java.specification.vender"));
   System.out.println("Java
运行时环境规范名称:"+props.getProperty("java.specification.name"));
   System.out.println("Java
的类格式版本号:"+props.getProperty("java.class.version"));
   System.out.println("Java
的类路径:"+props.getProperty("java.class.path"));
   System.out.println("
加载库时搜索的路径列表:"+props.getProperty("java.library.path"));
   System.out.println("
默认的临时文件路径:"+props.getProperty("java.io.tmpdir"));
   System.out.println("
一个或多个扩展目录的路径:"+props.getProperty("java.ext.dirs"));
   System.out.println("
操作系统的名称:"+props.getProperty("os.name"));
   System.out.println("
操作系统的构架:"+props.getProperty("os.arch"));
   System.out.println("
操作系统的版本:"+props.getProperty("os.version"));
   System.out.println("
文件分隔符:"+props.getProperty("file.separator"));   // unix 系统中是"/"
   System.out.println("
路径分隔符:"+props.getProperty("path.separator"));   // unix 系统中是":
   System.out.println("
行分隔符:"+props.getProperty("line.separator"));   // unix 系统中是"/n
   System.out.println("
用户的账户名称:"+props.getProperty("user.name"));
   System.out.println("
用户的主目录:"+props.getProperty("user.home"));
   System.out.println("
用户的当前工作目录:"+props.getProperty("user.dir"));

 

3.Java编写通过代理访问的应用程序

很多公司的网络都不能直接访问外网,如果需要在办公网络进行网站访问。

就需要配置代理。

//通知Java您要通过代理进行连接
System.getProperties().put("proxySet","true");

//指定代理所在的服务器
System.getProperties().put("proxyHost","myProxyMachineName");

//指定代理监听的端口
System.getProperties().put("proxyPort","85"); 

 有些代理在授权用户访问因特网之前,要求用户输入用户名和口令。如果您使用位于防火墙之内的Web浏览器,您就可能碰到过这种情况。以下是执行认证的方法:
URLConnection
 connection=url.openConnection();
String
   password="username:password";
String
   encodedPassword=base64Encode(password);
connection.setRequestProperty("Proxy-Authorization",encodedPassword); 

 

这段代码的思想是,您必须调整HTTP标头以发出用户信息。这是通过调用setRequestProperty()来实现的。这种方法允许您在发出请求之前处理HTTP标头。HTTP要求用base64对用户名和口令进行编码。幸运的是,有一组公用域API,它们将代您执行编码(请参阅参考资源部分)。

  如您所见,在Java应用程序中加入代理支持并不需要做多少工作。有了现在的知识,再做一点研究(您必须查明您的代理是如何处理您感兴趣的协议以及如何进行用户认证的),您就能用其他协议实现代理。
    HTTP代理:(例子)

Properties props = System.getProperties();

           props.put("http.proxyHost""192.168.0.150");

           props.put("http.proxyPort""808");
  FTP代理

  ScottD.Taylor提出这个秘诀来处理FTP协议代理:

defaultProperties.put("ftpProxySet","true");
defaultProperties.put("ftpProxyHost","proxy-host-name");
defaultProperties.put("ftpProxyPort","85"); 

  接下来您便可以通过以下代码使用"ftp"协议访问文件URL

URL
 url=newURL("ftp://ftp.netscape.com/pub/navigator/3.04/windows/readme.txt"); 

  如果有人有使用其他网际协议代理的例子,我很想看看。

 

对于仍在使用JDK1.1.7(配合WebSphere3.0)的开发人员而言,将proxyHostproxyPort设为系统属性不起作用;conn.getInputStream()或者返回连接超时,或者是找不到主机路径。但是,我使用接受HostPort为参数的URL构造函数解决了这一问题(使用我的代理主机和端口):

public
 URL(String protocol,String host,int port,String file). 

  借助用户名和口令进行认证的方法不起作用。应将"Basic"置于认证字符串的开头;例如:

String
 encodedPassword=base64Encode(password); 

  应该是:

String
 encodedPassword="Basic"+base64Encode(password); 

  您也不必用一个单独的程序来进行64位编码。您可以使用sun.misc.BASE64Encoder()类。下面是完成这两处改动之后的代码:

System.getProperties().put("proxySet","true");
System.getProperties().put("proxyHost",proxyHost);
System.getProperties().put("proxyPort",proxyPort);
String
 authString="userid:password";
String
 auth="Basic"+newsun.misc.BASE64Encoder().encode(authString.getBytes());
URL
 url=newURL("http://java.sun.com/");
URLConnection
 conn=url.openConnection();
conn.setRequestProperty("Proxy-Authorization",auth); 

  下面是使用socks4代理服务器的方法:

System.getProperty("socksProxySet",true);
System.getProperty("socksProxyHost",proxyHostName);
System.getProperty("socksProxyPort",proxyPort);
Usually
 the proxyPort for Socks 4 is port 1080

 

refer to http://www.blogjava.net/RoyPayne/archive/2012/01/04/367837.html

 

 

本文转载自:http://dacoolbaby.iteye.com/blog/2036955

吐槽的达达仔
粉丝 28
博文 102
码字总数 5838
作品 0
广州
程序员
私信 提问
PhpSms 稳定可靠的php短信发送库

可能是目前最聪明、优雅的PHP短信发送库了。从此不再为各种原因造成的个别短信发送失败而烦忧! phpsms的任务均衡调度功能由toplan/task-balancer提供。 转载GitHub:https://github.com/to...

请天点
2016/12/22
694
0
CAS单点登陆proxy代理实现

CAS(Central Authentication Service)框架是一个开源的单点登陆框架。 最近公司要将几个产品实现单点登陆,同事在负责技术筛选时选择了CAS,并已实现了单点登陆功能,但是在配置代理功能时...

hy86
2013/05/10
0
0
Spring中事务内部调用引发的惨案

在一个类内部有2个方法foo和bar,其中bar方法配有注解(@Transactional),即bar是事务执行的,而foo不是事务执行,当foo方法内部调用bar方法后,bar方法的事务是不生效的。示例代码如下: pub...

hnrpf
2016/04/14
226
0
Linux代理环境连接外网时,给yum, apt-get和linux网络配置代理

一、给CentOS的yum和wget配置代理 在公司中为了网络安全,通常需要用代理才能连接外网。这种情况下安装的Linux机器无法也无法直接连上yum服务器,导致安装软件很不方便。 解决方法就是,也给...

dhb_oschina
2015/12/01
1K
0
taobao-pamirs-proxycache源码分析学习与修改

taobao-pamirs-proxycache源码分析学习 --------------- 最近,由于公司业务量增长,对数据库的压力比较大,需要一款框架缓存查询结果,找到了淘宝的开源框架pamirs-proxycache,于是将其源码改改...

jason-寒江雪
2015/09/07
1K
5

没有更多内容

加载失败,请刷新页面

加载更多

Linus 本尊来了!为什么 KubeCon 越来越火?

阿里妹导读: 从200人的小会议到3500 多位云原生和开源领域工程师齐聚一堂的大会,KubeCon 只用了四年,昨天,在KubeCon China 2019 上阿里巴巴宣布开源 OpenKruise,今天,Linus 本尊竟然现...

阿里云云栖社区
15分钟前
0
0
五小时构建云原生电商平台 | KubeCon SOFAStack Workshop 详解

本文根据 KubeCon China 2019 同场活动 SOFAStack Cloud Native Workshop 内容整理, 文末包含文档、PPT 地址,欢迎试用和提出建议。 2019 年 6 月 25 日,在 KubeCon China 2019,全球知名开...

SOFAStack
16分钟前
0
0
跨平台开发框架DevExtreme v19.1.4正式发布|附下载

DevExtreme Complete Subscription是性能最优的 HTML5,CSS 和 JavaScript 移动、Web开发框架,可以直接在Visual Studio集成开发环境,构建iOS,Android,Tizen和Windows Phone 8应用程序。D...

FILA6666
17分钟前
0
0
数据库链接断开 Cause: com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link failure

报错信息如下: Cause: com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link failureThe last packet successfully received from the server was 97,130 mill......

为了美好的明天
23分钟前
1
0
Flutter for Web 详细预研

背景 Google在最新的Google I/O上推出了Flutter for Web,旨在进一步解决一次代码,多端运行的问题。Flutter for Web还处于早期试验版,官方不建议在生产环境上使用。那么到底它的实际情况怎...

阿里云官方博客
26分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部