मैं JVM द्वारा उपयोग किए जाने वाले प्रॉक्सी को कैसे सेट करूं


307

कई बार, एक जावा ऐप को इंटरनेट से कनेक्ट करने की आवश्यकता होती है। सबसे आम उदाहरण तब होता है जब वह XML फ़ाइल पढ़ रहा होता है और उसे अपना स्कीमा डाउनलोड करने की आवश्यकता होती है।

मैं एक प्रॉक्सी सर्वर के पीछे हूँ। मैं प्रॉक्सी का उपयोग करने के लिए अपना जेवीएम कैसे सेट कर सकता हूं?


इसके आस-पास ओरेकल प्रलेखन बहुत बासी लगता है (हालांकि अभी भी शायद मान्य है)। यहाँ वसंत से कुछ अधिक आधुनिक है: docs.spring.io/spring-integration/reference/html/…
nobar

जवाबों:


350

जावा प्रलेखन से ( नहीं जावाडोक एपीआई):

http://download.oracle.com/javase/6/docs/technotes/guides/net/proxies.html

JVM के झंडे सेट करें http.proxyHostऔर http.proxyPortकमांड लाइन पर अपना JVM शुरू करते समय। यह आमतौर पर शेल स्क्रिप्ट (यूनिक्स में) या बैट फाइल (विंडोज में) में किया जाता है। यहाँ यूनिक्स खोल स्क्रिप्ट के साथ उदाहरण दिया गया है:

JAVA_FLAGS=-Dhttp.proxyHost=10.0.0.100 -Dhttp.proxyPort=8800
java ${JAVA_FLAGS} ...

JBoss या WebLogic जैसे कंटेनरों का उपयोग करते समय, मेरा समाधान विक्रेता द्वारा आपूर्ति की गई स्टार्ट-अप स्क्रिप्ट को संपादित करना है।

कई डेवलपर्स जावा एपीआई (javadocs) से परिचित हैं, लेकिन कई बार बाकी दस्तावेज़ों को अनदेखा कर दिया जाता है। इसमें बहुत सी रोचक जानकारी शामिल है: http://download.oracle.com/javase/6/docs/technotes/guides/


अद्यतन: यदि आप कुछ स्थानीय / इंट्रानेट मेजबानों को हल करने के लिए प्रॉक्सी का उपयोग नहीं करना चाहते हैं, तो @Tomalak से टिप्पणी देखें:

इसके अलावा http.nonProxyHosts संपत्ति को मत भूलना!

-Dhttp.nonProxyHosts="localhost|127.0.0.1|10.*.*.*|*.foo.com‌​|etc"

109
+1। इसके अलावा http.nonProxyHostsसंपत्ति को मत भूलना ! (इस तरह उपयोग: -Dhttp.nonProxyHosts="localhost|127.0.0.1|10.*.*.*|*.foo.com|etc")
Tomalak

3
हाय दोस्तों, आप इसमें उपयोगकर्ता नाम और पासवर्ड कैसे शामिल कर सकते हैं? धन्यवाद
Joeblackdev

8
@ जोबोलेकदेव http.proxyUser और http.proxyPassword
aasukisuki

4
@aasukisuki http.proxyUserऔर http.proxyPasswordजावा सिस्टम गुण नहीं हैं। वे अपाचे HTTP क्लाइंट के लिए हैं।
लोर्ने का

24
इसके अलावा, कॉन्फ़िगर https.proxyHostऔर https.proxyPortHTTP के लिए मत भूलना ।
C-ओटो

102

सिस्टम प्रॉक्सी सेटअप का उपयोग करने के लिए:

java -Djava.net.useSystemProxies=true ...

या प्रोग्रामेटिकली:

System.setProperty("java.net.useSystemProxies", "true");

स्रोत: http://docs.oracle.com/javase/7/docs/api/java/net/doc-files/net-properties.html


विस्मयकारी सेटिंग jvm तर्क मेरे लिए आकर्षण की तरह काम करता है .. धन्यवाद
नैनोसॉफ्ट

मैंने अपने SSLSocket पर "झूठे" मान से प्रॉक्सी को निष्क्रिय करने के लिए इस कोड का उपयोग किया। धन्यवाद।
फेर

1
शायद ऐसा इसलिए है क्योंकि मेरे प्रॉक्सी को प्रमाणीकरण की आवश्यकता है, लेकिन यह मेरे लिए काम नहीं करता है। काश ऐसा होता।
साइमन फोर्सबर्ग

3
यह प्रॉक्सी ऑटो-कॉन्फिगर (PAC) फ़ाइलों के साथ काम नहीं करता है, देखें stackoverflow.com/questions/10324996/…
माइकल_एस

80

एक HTTP / HTTPS और / या SOCKS प्रॉक्सी प्रोग्रामेटिक रूप से सेट करने के लिए:

...

public void setProxy() {
    if (isUseHTTPProxy()) {
        // HTTP/HTTPS Proxy
        System.setProperty("http.proxyHost", getHTTPHost());
        System.setProperty("http.proxyPort", getHTTPPort());
        System.setProperty("https.proxyHost", getHTTPHost());
        System.setProperty("https.proxyPort", getHTTPPort());
        if (isUseHTTPAuth()) {
            String encoded = new String(Base64.encodeBase64((getHTTPUsername() + ":" + getHTTPPassword()).getBytes()));
            con.setRequestProperty("Proxy-Authorization", "Basic " + encoded);
            Authenticator.setDefault(new ProxyAuth(getHTTPUsername(), getHTTPPassword()));
        }
    }
    if (isUseSOCKSProxy()) {
        // SOCKS Proxy
        System.setProperty("socksProxyHost", getSOCKSHost());
        System.setProperty("socksProxyPort", getSOCKSPort());
        if (isUseSOCKSAuth()) {
            System.setProperty("java.net.socks.username", getSOCKSUsername());
            System.setProperty("java.net.socks.password", getSOCKSPassword());
            Authenticator.setDefault(new ProxyAuth(getSOCKSUsername(), getSOCKSPassword()));
        }
    }
}

...

public class ProxyAuth extends Authenticator {
    private PasswordAuthentication auth;

    private ProxyAuth(String user, String password) {
        auth = new PasswordAuthentication(user, password == null ? new char[]{} : password.toCharArray());
    }

    protected PasswordAuthentication getPasswordAuthentication() {
        return auth;
    }
}

...

याद रखें कि HTTP प्रॉक्सी और SOCKS प्रॉक्सी, नेटवर्क स्टैक में विभिन्न स्तरों पर काम करते हैं, इसलिए आप एक या दूसरे या दोनों का उपयोग कर सकते हैं।


4
यदि "java.net.socks.username / पासवर्ड" सेट है, तो एक प्रमाणक भी क्यों सेट करें?
Lorne

1
क्यों "con.setRequest नहीं है ..." con मान्यता प्राप्त नहीं है। इसके लिए किन पुस्तकालयों की आवश्यकता है।
Randnum

1
मोजे के विकल्प के लिए +1 कभी-कभी http प्रॉक्सी मेरी समस्या का समाधान नहीं कर सकता है
manuzhang

1
मेरे परीक्षण में, यह काम करता है यदि आप केवल डिफ़ॉल्ट प्रमाणक सेट करते हैं
ड्रू स्टीफंस

1
काम नहीं करता है तो आप केवल सिस्टम गुण। मेविंक java.net.socks। (उपयोगकर्ता नाम | पासवर्ड) गुण कुछ भी नहीं करते हैं।
आकर्षित स्टीफंस

46

आप उन झंडियों को प्रोग्रामेटिक रूप से इस तरह सेट कर सकते हैं:

if (needsProxy()) {
    System.setProperty("http.proxyHost",getProxyHost());
    System.setProperty("http.proxyPort",getProxyPort());
} else {
    System.setProperty("http.proxyHost","");
    System.setProperty("http.proxyPort","");
}

बस विधियों से सही मान लौटाएं needsProxy(), getProxyHost()और getProxyPort()जब भी आप चाहें इस कोड को स्निपेट कह सकते हैं।


34
"प्रॉक्सीसेट" कुछ नहीं करता है। प्रमाण: इसे "झूठे" पर सेट करें। जेडीके, विभिन्न पुस्तकों और ऑनलाइन संदर्भों के बावजूद ऐसी संपत्ति कभी नहीं रही है। यह एक लंबे समय से खराब हो चुके HotJavaBean से आया था, जो एक एनकैप्सुलेटेड ब्राउज़र था, जिसकी मृत्यु 1998 में हो गई थी।
लोरेन के मार्किस

2
वास्तव में http / https के बिना संपत्ति के नाम हैं?
बेतलिस्ता

18
यह तीन गणनाओं पर गलत है: 1: जैसा कि उल्लेख किया गया है, कोई "प्रॉक्सीसेट" आइटम नहीं है; 2: "प्रॉक्सीहोस्ट" और "प्रॉक्सीपोर्ट" को "http.proxyHost" और "http.proxyPort" (या 'https' समकक्ष) होने की आवश्यकता है; 3: System.getProperties ()। Put (X, Y) System.setProperty (X, Y) के समान नहीं है। इसके अलावा, हालांकि - महान जवाब।
रोब क्रैनफिल

लगभग सही है। देखें: memorynotfound.com/configure-http-proxy-settings-java
csvan

1
@RobCranfill 1: "प्रॉक्सीसेट" एक गैर-मानक ध्वज हुआ करता था जिसकी आवश्यकता एक पुराने JDK को होती थी लेकिन अब आवश्यक नहीं है; 2: "प्रॉक्सीहोस्ट" और "प्रॉक्सीपोर्ट" काम करते हैं, "http।" उपसर्ग केवल उन्हें HTTP प्रोटोकॉल ("https।" ​​के लिए समान) पर सीमित करता है, 3: यहां आप सही हैं।
Toolforger

24

JVM HTTP कॉल करने के लिए प्रॉक्सी का उपयोग करता है

System.getProperties().put("http.proxyHost", "someProxyURL");
System.getProperties().put("http.proxyPort", "someProxyPort");

यह उपयोगकर्ता सेटिंग प्रॉक्सी का उपयोग कर सकता है

System.setProperty("java.net.useSystemProxies", "true");

System.setPropertyइसके बजाय का उपयोग करेंSystem.getProperties().put(...)
साइमन फोर्सबर्ग

12

आप प्रॉक्सी सर्वर के बारे में कुछ गुणों को जेवीएम मापदंडों के रूप में सेट कर सकते हैं

-Http.proxyPort = 8080, प्रॉक्सीहोस्ट आदि।

लेकिन अगर आपको एक प्रामाणिक प्रॉक्सी से गुजरने की आवश्यकता है, तो आपको इस तरह के एक प्रमाणक की आवश्यकता है:

ProxyAuthenticator.java

import java.net.*;
import java.io.*;

public class ProxyAuthenticator extends Authenticator {

    private String userName, password;

    protected PasswordAuthentication getPasswordAuthentication() {
        return new PasswordAuthentication(userName, password.toCharArray());
    }

    public ProxyAuthenticator(String userName, String password) {
        this.userName = userName;
        this.password = password;
    }
}

Example.java

    import java.net.Authenticator;
    import ProxyAuthenticator;

public class Example {

    public static void main(String[] args) {
        String username = System.getProperty("proxy.authentication.username");
        String password = System.getProperty("proxy.authentication.password");

                if (username != null && !username.equals("")) {
            Authenticator.setDefault(new ProxyAuthenticator(username, password));
        }

                // here your JVM will be authenticated

    }
}

इस उत्तर के आधार पर: http://mail-archives.apache.org/mod_mbox/jakarta-jmeter-user/200208.mbox/%3C494FD350388AD511A9DD00025430F33102F1DC2C@MMSX0066%3E


यह काम नहीं करता। यदि आप पहले से ही मुख्य समारोह में पहली पंक्ति को प्रमाणित नहीं कर रहे हैं, तो शून्य मानों का एक गुच्छा मिलता है और कोड बंद हो जाता है। यह किसी को अपने jvm को प्रमाणित करने में मदद नहीं करता है ताकि वे प्रॉक्सी के माध्यम से URL कॉल कर सकें।
3

12

सॉर्टर और जेवराट / लियोनेल के उत्तर का संयोजन:

java -Dhttp.proxyHost=10.10.10.10 -Dhttp.proxyPort=8080 -Dhttp.proxyUser=username -Dhttp.proxyPassword=password -jar myJar.jar

10

के लिए java.net.useSystemProxiesसंपत्ति सेट करें true। आप इसे सेट कर सकते हैं, उदाहरण के लिए, JAVA_TOOL_OPTIONS पर्यावरण चर के माध्यम से । उदाहरण के लिए, उबंटू में, आप निम्न पंक्ति जोड़ सकते हैं .bashrc:

निर्यात JAVA_TOOL_OPTIONS + = "-java.net.useSystemProxies = true"


9

निम्नलिखित दिखाता है कि जावा में प्रॉक्सी उपयोगकर्ता और प्रॉक्सी पासवर्ड के साथ कैसे सेट किया जाए लाइन कमांड , जो कि एक बहुत ही सामान्य मामला है। आपको कोड में पासवर्ड और होस्ट को सहेजना नहीं चाहिए, पहले स्थान पर एक नियम के रूप में।

-D के साथ कमांड लाइन में सिस्टम गुणों को पास करना और उन्हें System.setProperty ("नाम", "मान") के साथ कोड में सेट करना बराबर है।

लेकिन इस पर ध्यान दें

उदाहरण है कि काम करता है:

C:\temp>java -Dhttps.proxyHost=host -Dhttps.proxyPort=port -Dhttps.proxyUser=user -Dhttps.proxyPassword="password" -Djavax.net.ssl.trustStore=c:/cacerts -Djavax.net.ssl.trustStorePassword=changeit com.andreas.JavaNetHttpConnection

लेकिन निम्नलिखित काम नहीं करता है :

C:\temp>java com.andreas.JavaNetHttpConnection -Dhttps.proxyHost=host -Dhttps.proxyPort=port -Dhttps=proxyUser=user -Dhttps.proxyPassword="password" -Djavax.net.ssl.trustStore=c:/cacerts -Djavax.net.ssl.trustStorePassword=changeit

एकमात्र अंतर सिस्टम के गुणों की स्थिति है! (कक्षा के पहले और बाद में)

यदि आपके पास पासवर्ड में विशेष वर्ण हैं, तो आपको उपरोक्त उदाहरण में उद्धरण "@ MyPass123%" में डालने की अनुमति है।

यदि आप एक HTTPS सेवा का उपयोग करते हैं https.proxyHost, तो आपको इसका उपयोग करना होगा , https.proxyPortआदि।

यदि आप एक HTTP सेवा का उपयोग करते हैं http.proxyHost, तो आपको इसका उपयोग करना होगा , http.proxyPortआदि।


5
ProxyUser औरxyPassword जावा सिस्टम गुण नहीं हैं, लेकिन Apache HTTP क्लाइंट गुण हैं इसलिए यह सभी मामलों में काम नहीं करता है।
थेल्पर

8

XML फ़ाइल को पढ़ना और उसका स्कीमा डाउनलोड करना होगा

यदि आप इंटरनेट पर स्कीमा या डीटीडी प्राप्त करने पर भरोसा कर रहे हैं, तो आप एक धीमी, गंदी, नाजुक एप्लिकेशन का निर्माण कर रहे हैं। क्या होता है जब फ़ाइल को होस्ट करने वाला रिमोट सर्वर नियोजित या अनियोजित डाउनटाइम लेता है? आपका ऐप टूट जाता है। क्या वह ठीक है?

देखें http://xml.apache.org/commons/components/resolver/resolver-article.html#s.catalog.files

स्कीमा के लिए URL और इस तरह के अनन्य आइडेंटिफ़ायर के रूप में सबसे अच्छा सोचा जाता है। उस फ़ाइल को दूरस्थ रूप से एक्सेस करने के अनुरोध के रूप में नहीं। "XML कैटलॉग" पर कुछ Google खोज करें। एक XML कैटलॉग आपको ऐसे संसाधनों को स्थानीय रूप से होस्ट करने की अनुमति देता है, धीमेपन, चंचलता और नाजुकता का समाधान करता है।

यह मूल रूप से दूरस्थ सामग्री की स्थायी रूप से कैश्ड प्रतिलिपि है। और यह ठीक है, क्योंकि दूरस्थ सामग्री कभी नहीं बदलेगी। यदि कभी कोई अपडेट होता है, तो वह एक अलग URL पर होगा। इंटरनेट पर संसाधन की वास्तविक पुनर्प्राप्ति को विशेष रूप से मूर्खतापूर्ण बनाना।


7

मैं भी फ़ायरवॉल के पीछे हूँ, यह मेरे लिए काम किया !!

System.setProperty("http.proxyHost", "proxy host addr");
System.setProperty("http.proxyPort", "808");
Authenticator.setDefault(new Authenticator() {
    protected PasswordAuthentication getPasswordAuthentication() {

        return new PasswordAuthentication("domain\\user","password".toCharArray());
    }
});

URL url = new URL("http://www.google.com/");
URLConnection con = url.openConnection();

BufferedReader in = new BufferedReader(new InputStreamReader(
                    con.getInputStream()));

// Read it ...
String inputLine;
while ((inputLine = in.readLine()) != null)
    System.out.println(inputLine);

in.close();

5

यदि आप "सॉक्स प्रॉक्सी" चाहते हैं, तो "सॉक्सप्रॉक्सिहोस्ट" और "सॉक्सप्रॉक्सिपोर्ट" वीएम तर्कों को सूचित करें।

जैसे

java -DsocksProxyHost=127.0.0.1 -DsocksProxyPort=8080 org.example.Main

4

प्रॉक्सी से पीछे URL से कनेक्ट करने से पहले इसे जोड़ें।

System.getProperties().put("http.proxyHost", "someProxyURL");
System.getProperties().put("http.proxyPort", "someProxyPort");
System.getProperties().put("http.proxyUser", "someUserName");
System.getProperties().put("http.proxyPassword", "somePassword");

4
http.proxyUserऔर http.proxyPasswordजावा सिस्टम गुण नहीं हैं। वे अपाचे HTTP क्लाइंट के लिए हैं।
लोर्ने का

System.setPropertyइसके बजाय का उपयोग करेंSystem.getProperties().put(...)
साइमन फोर्सबर्ग

4

यह एक मामूली अद्यतन है, लेकिन जावा 7 के बाद से, प्रॉक्सी कनेक्शन अब सिस्टम गुणों के बजाय प्रोग्रामेटिक रूप से बनाया जा सकता है। यह उपयोगी हो सकता है अगर:

  1. प्रोग्राम के रनटाइम के दौरान प्रॉक्सी को गतिशील रूप से घुमाया जाना चाहिए
  2. एकाधिक समानांतर परदे के पीछे का उपयोग करने की आवश्यकता है
  3. या बस अपना कोड क्लीनर बनाएं :)

यहाँ groovy में एक contrived उदाहरण है:

// proxy configuration read from file resource under "proxyFileName"
String proxyFileName = "proxy.txt"
String proxyPort = "1234"
String url = "http://www.promised.land"
File testProxyFile = new File(proxyFileName)
URLConnection connection

if (!testProxyFile.exists()) {

    logger.debug "proxyFileName doesn't exist.  Bypassing connection via proxy."
    connection = url.toURL().openConnection()

} else {
    String proxyAddress = testProxyFile.text
    connection = url.toURL().openConnection(new Proxy(Proxy.Type.HTTP, new InetSocketAddress(proxyAddress, proxyPort)))
}

try {
    connection.connect()
}
catch (Exception e) {
    logger.error e.printStackTrace()
}

पूरा संदर्भ: http://docs.oracle.com/javase/7/docs/technotes/guides/net/proxies.html


2
यह जावा 1.5 के बाद से है, 1.7 नहीं।
लोर्ने का मार्किस

3

हाल ही में मैंने JVM को ब्राउज़र प्रॉक्सी सेटिंग्स का उपयोग करने की अनुमति देने का तरीका खोजा है। आपको ${java.home}/lib/deploy.jarअपनी परियोजना में जोड़ने के लिए और निम्नलिखित की तरह पुस्तकालय से प्रवेश करने की आवश्यकता है:

import com.sun.deploy.net.proxy.DeployProxySelector;
import com.sun.deploy.services.PlatformType;
import com.sun.deploy.services.ServiceManager;

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;

public abstract class ExtendedProxyManager {

    private static final Log logger = LogFactory.getLog(ExtendedProxyManager.class);

    /**
     * After calling this method, proxy settings can be magically retrieved from default browser settings.
     */
    public static boolean init() {
        logger.debug("Init started");

        // Initialization code was taken from com.sun.deploy.ClientContainer:
        ServiceManager
                .setService(System.getProperty("os.name").toLowerCase().indexOf("windows") != -1 ? PlatformType.STANDALONE_TIGER_WIN32
                        : PlatformType.STANDALONE_TIGER_UNIX);

        try {
            // This will call ProxySelector.setDefault():
            DeployProxySelector.reset();
        } catch (Throwable throwable) {
            logger.error("Unable to initialize extended dynamic browser proxy settings support.", throwable);

            return false;
        }

        return true;
    }
}

बाद में प्रॉक्सी सेटिंग्स जावा एपीआई के माध्यम से उपलब्ध हैं java.net.ProxySelector

इस दृष्टिकोण के साथ एकमात्र समस्या यह है कि आपको deploy.jarबूटक्लासपथ जैसे उदाहरण के साथ JVM शुरू करने की आवश्यकता है java -Xbootclasspath/a:"%JAVA_HOME%\jre\lib\deploy.jar" -jar my.jar। अगर किसी को पता है कि इस सीमा को कैसे पार करना है, तो मुझे बताएं।


1
काश मैं इसे कई बार बढ़ा सकता था, यह एकमात्र समाधान है जो मेरे लिए काम करता है; धन्यवाद! मुझे यहां से अपाचे कॉमन लॉगिंग जार डाउनलोड करना था: commons.apache.org/proper/commons-logging/download_log.cgi मेरा कोड इन मेन (): System.setProperty ("java.net.useSystemProxies", "true") ; System.out.println ("प्रॉक्सी का पता लगाना"); ExtendedProxyManager.init ();
बोरिस

xbootclasspathपरिनियोजन को इंगित करने के लिए क्या होगा। बेहतर प्रभाव के लिए, क्या मैं उस जार को अपने सामान्य वर्गपथ पर नहीं ले जा सकता (जब बिना वेबस्टार्ट के चल रहा हो)?
हौटमैन

1
JDK 9 में, यह विफल रहता है :( Exception in thread "main" java.lang.IllegalAccessError: class ...) cannot access class com.sun.deploy.net.proxy.DeployProxySelector (in module jdk.deploy) because module jdk.deploy does not export com.sun.deploy.net.proxy
Houtman

2

ये मेरे लिए सही है:

public void setHttpProxy(boolean isNeedProxy) {
    if (isNeedProxy) {
        System.setProperty("http.proxyHost", getProxyHost());
        System.setProperty("http.proxyPort", getProxyPort());
    } else {
        System.clearProperty("http.proxyHost");
        System.clearProperty("http.proxyPort");
    }
}

P / S: मैं गद के जवाब पर आधारित हूं।


यह उत्तर कुछ भी प्रदान नहीं करता है जो पहले से ही अन्य उत्तरों में नहीं कहा गया है।
साइमन फोर्सबर्ग

1

जैसा कि अन्य उत्तरों में बताया गया है, अगर आपको ऑथेंटिकेटेड प्रॉक्सी का उपयोग करने की आवश्यकता है, तो शुद्ध रूप से कमांड-लाइन चर का उपयोग करने का कोई विश्वसनीय तरीका नहीं है - यदि आप किसी और के आवेदन का उपयोग कर रहे हैं और आप के साथ गड़बड़ नहीं करना चाहते हैं तो यह कष्टप्रद है। सोर्स कोड।

विल आइवरसन इसे संभालने के लिए प्रोक्सीफायर ( http://www.proxifier.com/ जैसे Mac OS X और Windows) के लिए प्रॉक्सी-मैनेजमेंट टूल का उपयोग करने के लिए HempProxy का उपयोग करने के लिए एक होस्ट से कनेक्ट करने के लिए उपयोगी सुझाव देता है ।

Proxifier के साथ उदाहरण के लिए आप इसे केवल जाट कमांड को प्रबंधित करने के लिए सेट कर सकते हैं जिसे प्रबंधित किया जा सकता है और इसके (प्रमाणित) प्रॉक्सी के माध्यम से पुनः निर्देशित किया जा सकता है। आप भले ही इस मामले में रिक्त करने के लिए प्रॉक्सीहॉट और प्रॉक्सीपोर्ट मान सेट करना चाहते हैं, जैसे -Dhttp.proxyHost= -Dhttp.proxyPort=कि आपके जावा कमांड को पास करना।


-1

यदि आप एक स्वसंपूर्ण JVM के भीतर हैं, तो आप http.proxy * JVM वैरिएबल का उपयोग कर सकते हैं, लेकिन आप उनके स्टार्टअप स्क्रिप्ट को संशोधित नहीं कर सकते हैं और / या अपने एप्लिकेशन सर्वर के भीतर कर सकते हैं (शायद jboss या tomcat को छोड़कर)। इसके बजाय आपको JAVA प्रॉक्सी API (System.setProperty नहीं) का उपयोग करना चाहिए या विक्रेता के स्वयं के कॉन्फ़िगरेशन विकल्पों का उपयोग करना चाहिए। WebSphere और WebLogic दोनों ने प्रॉक्सी को स्थापित करने के बहुत परिभाषित तरीके हैं जो J2SE एक से कहीं अधिक शक्तिशाली हैं। इसके अतिरिक्त, WebSphere और WebLogic के लिए आप संभवतः स्टार्टअप स्क्रिप्ट को ओवरराइड करके अपने एप्लिकेशन सर्वर को थोड़े तरीकों से तोड़ देंगे (विशेष रूप से सर्वर के इंटरोप प्रक्रियाएं जैसा कि आप उन्हें बता रहे हैं कि आप अपने प्रॉक्सी का भी उपयोग कर सकते हैं ...)।


-5

मुझे लगता है कि WINHTTP को कॉन्फ़िगर करना भी काम करेगा।

विंडोज अपडेट सहित कई कार्यक्रमों में प्रॉक्सी के पीछे समस्याएं हैं। WinHTTP की स्थापना करके इस तरह की समस्याओं को हमेशा ठीक किया जाएगा

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.