在不更改代码的情况下将代理添加到网络应用程序?

时间:2012-12-09 10:26:07

标签: java proxy

我想使用一个Java应用程序,它不是由我编写的,也不再维护,这意味着我不能只是去找作者并要求一个新功能。我有什么选择来添加代理功能。是否可以添加一些shell参数?将代理的二进制代码直接添加到.class文件中是否可行?我可以编写自己的类,从.class文件中导入内容并覆盖网络功能吗?

3 个答案:

答案 0 :(得分:2)

这可能对您有用:

java -Dhttp.proxyHost=IP_address -Dhttp.proxyPort=8080 -jar App.jar

答案 1 :(得分:2)

可以通过创建具有相同名称/包的类并将其放在类路径中以使其优先,从而将类替换为您自己的实现。但是,如果代码的其他部分使用此类,则无法破坏二进制兼容性。

还有一些检测API可用于在加载类时对其进行修改。请参阅Instrumentation API

答案 2 :(得分:0)

如果您要创建引用已编译的.class的源文件,那么请在您的文件中尝试执行此操作:

java.util.Properties systemProperties = System.getProperties();
systemProperties.setProperty("http.proxyHost", PROXY_HOST);
systemProperties.setProperty("http.proxyPort", PROXY_PORT);

我认为这应该有用。