我正在尝试设置一个Java程序,其中每个线程都可以使用自己的代理。
现在我只找到了一种全局设置代理的方法。(http://docs.oracle.com/javase/6/docs/technotes/guides/net/proxies.html)
如前所述,这些设置会影响使用这些选项调用的VM的整个生命周期内的所有http连接。然而,使用该系统是可能的。setProperty()方法,使其具有更具动态性的行为。
下面是一段代码摘录,展示了如何做到这一点:
//将http代理设置为webcache。mydomain。通信:8080
System.set属性(“http.proxy主机”、“webcache.mydomain.com”);System.set属性(“http.proxy端口”、“8080”);
我尝试使用proxy类,但当我不想使用所述代理时,无法创建直接连接:
private void setProxy()
{
if(proxyUrl != null)
{
SocketAddress addr = new InetSocketAddress(proxyUrl, proxyPort);
proxy = new Proxy(Proxy.Type.HTTP, addr);
}
else
{
proxy = new Proxy(Proxy.Type.DIRECT, null);
}
}
…中的异常。。。。Java语言lang.IllegalArgumentException:type DIRECT与地址null不兼容
我怎样才能让它在直接连接中工作?尚未尝试代理。
Barry NL的解决方案半途而废,因为我不知道如何不使用该解决方案的代理。
我想到的是:
proxyUrl
和
proxyPort
在我的类的构造函数中。
我无法调用url。openConnection(代理)
如果我刚刚设置代理=null
或者代理=新代理(proxy.Type.DIRECT,null)
。所以我写了我自己的openConnection
private void setProxy()
{
if(proxyUrl != null)
{
SocketAddress addr = new InetSocketAddress(proxyUrl, proxyPort);
proxy = new Proxy(Proxy.Type.HTTP, addr);
}
else
{
proxy = null;
}
}
private URLConnection openConnection2(URL url)
{
try {
if(proxy != null)
return url.openConnection(proxy);
else
return url.openConnection();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
return null;
}
}
setProxy()
必须在建立任何连接之前调用。
另外我更换了
url = new URL(http_url);
con = (HttpURLConnection)url.openConnection(proxy);
与
url = new URL(http_url);
con = (HttpURLConnection)openConnection2(url);
可以使用代理类,如第3节所述:
正如我们所看到的,系统属性很强大,但不灵活。大多数开发人员认为“全有或全无”行为的限制过于严格。这就是为什么决定在J2SE 5.0中引入一个新的、更灵活的API,以便可以使用基于连接的代理设置。
你可以使用代理。没有代理到:
... 不使用任何代理。
做这样的事情:
private void setProxy()
{
if(proxyUrl != null)
{
SocketAddress addr = new InetSocketAddress(proxyUrl, proxyPort);
proxy = new Proxy(Proxy.Type.HTTP, addr);
}
else
{
proxy = Proxy.NO_PROXY;
}
}
我有多个带有注释的组件,我看到Spring一次只启动一个组件,即使它们被安排在同一时间运行。
问题内容: 我正在编写一个多线程Java程序,其中每个线程可能都需要将其标准输出重定向到一个单独的文件。每个线程都有其自己的文件。是否可以在“每个线程”的基础上重定向System.out或在所有线程上全局更改System.out? 问题答案: 是否可以基于“每线程”重定向System.out 不,这是不可能的。 是静态的,并且在JVM最初启动时,每个JVM都会作为系统类加载器的一部分进行加载。尽管
我有一个无界数据源(Kafka流)作为我的beam工作的输入。 数据的特性: 它们是元素组(组大小介于5-20个元素之间)。 每个组的键是唯一的标识符,并且仅用于该组。 组中第一个元素和最后一个元素之间的最大时间差小于2秒。 null 我的问题是:有没有一种方法可以让我在自己的窗口中分组每个键,并在一定时间后关闭它?非常感谢
我试图理解这句话的含义: 每个Java虚拟机线程都有自己的pc(程序计数器)寄存器。在任何时候,每个Java虚拟机线程都在执行单个方法的代码,即该线程的当前方法(§2.6)。 https://docs.oracle.com/javase/specs/jvms/se7/html/jvms-2.html#jvms-2.5.1 我假设JVM线程像任何其他线程一样工作——每次调度线程运行(比如Linux内
我在试着理解这句话的意思: 每个Java虚拟机线程都有自己的pc(程序计数器)寄存器。在任何一点上,每个Java虚拟机线程都在执行单个方法的代码,即该线程的当前方法(§2.6)。 https://docs.oracle.com/javase/specs/jvms/se7/html/jvms-2.html#jvms-2.5.1 我假设JVM线程的工作方式与任何其他线程一样--每次调度线程运行时(比方
我正在编写一个多线程Java程序,其中每个线程可能需要将其标准输出重定向到一个单独的文件。每个线程都有自己的文件。是否有可能在“每个线程”的基础上重定向System.out,还是所有线程对System.out全局更改?