Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/351.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/vim/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何为JVM中的load server应用程序设置指定代理&;Jboss?_Java_Jboss_Proxy_Jvm - Fatal编程技术网

Java 如何为JVM中的load server应用程序设置指定代理&;Jboss?

Java 如何为JVM中的load server应用程序设置指定代理&;Jboss?,java,jboss,proxy,jvm,Java,Jboss,Proxy,Jvm,我有一个load server应用程序,它在两个应用程序App1和App2之间切换。每个应用程序都有自己的IFrame与银行对话,但当银行返回数据时,加载服务器无法区分哪个应用程序是该应用程序。我对此进行了调查,然后我发现这是代理问题 结果,我试图强制应用程序使用proxyHost&proxyport但它不起作用,然后我强制Jboss使用特定的proxyHost&proxyport,但它也不起作用。它在盒子上使用默认代理,不关心我的配置 在Jboss启动脚本(bin\run.bat)上设置pro

我有一个load server应用程序,它在两个应用程序App1和App2之间切换。每个应用程序都有自己的IFrame与银行对话,但当银行返回数据时,加载服务器无法区分哪个应用程序是该应用程序。我对此进行了调查,然后我发现这是代理问题

结果,我试图强制应用程序使用
proxyHost
&
proxyport
但它不起作用,然后我强制Jboss使用特定的
proxyHost
&
proxyport
,但它也不起作用。它在盒子上使用默认代理,不关心我的配置

在Jboss启动脚本(
bin\run.bat
)上设置
proxyHost
proxyPort
): Jboss日志显示,当我们运行时,它已经接受了java VM参数(例如
-Dhttp.proxyHost=XX.XX.XX-Dhttp.proxyPort=8080
) 在应用程序中,它仍将通过对话框上的默认代理设置

我在google&stackoverflow中搜索,尝试了不同的想法,但没有成功。
有人能解释一下吗?

你能试着用以下JVM参数运行你的应用程序吗:
-Dsun.net.inetaddr.ttl=0-Dnetworkaddress.cache.ttl=0


DNS设置在成功请求后被缓存,这些参数将禁用缓存

您可以强制应用程序忽略proxyHost和 只需使用运行它的长方体的默认代理即可。您可以编写一个小java程序,它只打印默认代理并在特定框上运行它(如下图所示):

基本上在代码中,如果清除http.proxyHost和http.proxyPort,然后将java.net.useSystemProxies设置为true,它将使用 系统默认代理(如果有)并忽略任何VM参数

System.setProperty("http.proxyHost", "");
System.setProperty("http.proxyPort", "");

System.setProperty("java.net.useSystemProxies", "true");
System.out.println("detecting proxies");
然后你在你的盒子上运行它,并给它传递了一些伪造的代理地址:

C:\t>“C:\ProgramFiles\Java\jdk1.6.0\u 19\bin\Java.exe”-Dhttp.proxyHost=99.0.0.99.9-Dhttp.proxyPort=8080 PrintDefaultProxy
检测代理
代理类型:直接
无代理
注意,如果您不清除这两个属性,它将使用您传递给JVM的参数——但据我所知,应用程序似乎并不是这样做的。这是一种应用程序“只工作”而不必专门设置proxyHost的方式——这很可能就是为什么它会忽略您在JVM/Jboss级别提供的任何设置


当行为与您在Jboss中尝试更改这些设置时所经历的情况一致时,这意味着您无法在应用程序或Jboss级别将其配置为使用代理主机,并且很可能需要在网络级别执行此操作。

您所说的“加载服务器无法区分是哪个应用程序”是什么意思?你能解释一下吗,我想大多数人都不知道它的意思。通常,如果代理设置不正确,你甚至无法连接到互联网,而不是区分哪个应用。我是说负载平衡器,它会检查负载。如果App1过载,负载平衡器将allrequest重定向到App2。我们有一个默认代理,可以正常工作(连接到Internet),但我们不能强制它使用特定的代理,它总是选择默认代理。每个应用的iframe需要通过cookie保持会话或其他内容吗?
System.setProperty("http.proxyHost", "");
System.setProperty("http.proxyPort", "");

System.setProperty("java.net.useSystemProxies", "true");
System.out.println("detecting proxies");