दिलचस्प पोस्ट
स्प्राइटकिट – टाइमर बनाना java.lang.noclassdeffounderror: com.google.android.gms.R $ शैलीबल Std :: type_info :: नाम का परिणाम उतारना आईएसओ स्विफ्ट का इस्तेमाल करते हुए NSURL कनेक्शन मैं विजुअल स्टूडियो 2008 में एक नया CUDA प्रोजेक्ट कैसे शुरू करूं? पोर्ट और गर्तिका के बीच अंतर क्या है? त्रुटि 'लिंक: घातक त्रुटि एलएनके 1123: सीओएफएफ में रूपांतरण के दौरान असफल: विजुअल स्टूडियो 2012 रिलीज पूर्वावलोकन स्थापित करने के बाद फ़ाइल अवैध या भ्रष्ट' अलग-अलग समय पर विभिन्न पैरामीटरों से मैं एक सूची को कैसे सॉर्ट कर सकता हूँ सी # का उपयोग करते हुए मैं .NET में स्वरूपित JSON कैसे प्राप्त करूं? चेकबॉक्स के समूह के लिए HTML5 "आवश्यक" विशेषता का उपयोग करना? मिल-डाल सिद्धांत का स्पष्टीकरण विज़ुअल स्टूडियो में प्रोजेक्ट / समाधान के बीच कोड कैसे साझा करते हैं? जांच करें कि क्या कोई वर्ग किसी दिए गए हस्ताक्षर का सदस्य कार्य है या नहीं सर्लेट बनाम शोकपूर्ण अलग-अलग राज्य के लिए छवि बटन पृष्ठभूमि छवि कैसे सेट करें?

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

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

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

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

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

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

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

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

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

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


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

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

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

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

 ... 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 प्रॉक्सी और सॉक्स प्रॉक्सी नेटवर्क स्टैक में विभिन्न स्तरों पर काम करते हैं, इसलिए आप एक या दूसरे या दोनों का उपयोग कर सकते हैं।

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

 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

आप उन फ़्लैगों को प्रोग्राम से इस तरह सेट कर सकते हैं:

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

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

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

-Dhttp.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/%3C494FD350388AD511A9DD00025530F33102F1DC2C@MMSX006%3E

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

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

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

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

एक XML फ़ाइल को पढ़ने और इसकी स्कीमा डाउनलोड करने की आवश्यकता है

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

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

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

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

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

 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(); 

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

निर्यात JAVA_TOOL_OPTIONS + = "-Djava.net.useSystemProxies = सच"

प्रॉक्सी के पीछे एक यूआरएल से जुड़ने से पहले इसे जोड़ें

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

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

  1. प्रोग्राम के रनटाइम के दौरान प्रॉक्सी गतिशील रूप से घुमाए जाने की आवश्यकता है
  2. कई समानांतर प्रॉक्सी को इस्तेमाल करने की आवश्यकता है
  3. या सिर्फ अपना कोड क्लीनर बनाओ 🙂

यहां गृव्य में एक अनुयायी उदाहरण है:

 // 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

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

 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"); } } 

पी / एस: मैं जी एचड के जवाब पर आधार हूं।

हाल ही में मैंने जेवीएम को ब्राउज़र प्रॉक्सी सेटिंग्स का उपयोग करने की अनुमति देने के तरीके की खोज की है। आपको क्या करने की आवश्यकता है ${java.home}/lib/deploy.jar को अपनी प्रोजेक्ट में ${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 लिए जावा। के माध्यम से उपलब्ध हैं। प्रॉक्सी java.net.ProxySelector

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

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

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

लेकिन यह ध्यान रखें

उदाहरण जो काम करता है:

 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 इत्यादि का उपयोग करना होगा।

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

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

जैसा कि अन्य उत्तरों में बताया गया है, यदि आपको प्रमाणीकृत प्रॉक्सी का उपयोग करने की आवश्यकता है, तो इसका उपयोग करने के लिए कोई विश्वसनीय तरीका कमांड लाइन वैरिएबल का उपयोग नहीं करना है – जो परेशानी है अगर आप किसी और के आवेदन का उपयोग कर रहे हैं और आप के साथ गड़बड़ नहीं करना चाहते हैं सोर्स कोड।

Iverson इस पर नियंत्रण करने के लिए प्रॉक्सी-प्रबंधन उपकरण जैसे प्रॉक्सिफायर (मैक ओएस एक्स और विंडोज के लिए http://www.proxifier.com/ ) का उपयोग करने के लिए प्रीटेमेटिव प्रमाणीकरण वाले होस्ट से कनेक्ट करने के लिए एचटीटीपीप्रोक्सी का उपयोग करने पर सहायक सलाह देता है।

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

इसके अलावा, यदि आप हमेशा एक ही स्कीमा डाउनलोड करना चाहते हैं, तो आप स्कीमा को अपने क्लासपाथ (फाइलसिस्टम या जेएआर) में जोड़ सकते हैं, और उसके बाद कस्टम एंटीटीरॉल्वर का उपयोग कर सकते हैं

इस दृष्टिकोण की अधिक पूरी चर्चा के लिए यहां देखें

संपादित करें: CatalogResolver की @ me.yahoo.com / a / 0QMxE चर्चा देखें, जो EntityResolver दृष्टिकोण का उपयोग करता है:

 CatalogResolver cr = new CatalogResolver(); ... yourParser.setEntityResolver(cr) 

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

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

जैसे

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

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

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