[java] JVM¿¡¼ »ç¿ëÇÒ ÇÁ·Ï½Ã¸¦ ¾î¶»°Ô ¼³Á¤Çմϱî?
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 ÇÁ·Ï½Ã´Â ³×Æ®¿öÅ© ½ºÅÃÀÇ ¿©·¯ ¼öÁØ¿¡¼ ÀÛµ¿ÇϹǷΠÇϳª ¶Ç´Â µÑ ´Ù ¶Ç´Â µÑ ´Ù¸¦ »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù.
¿©·¯ ¹ø, Java ÀÀ¿ë ÇÁ·Î±×·¥Àº ÀÎÅͳݿ¡ ¿¬°áÇؾßÇÕ´Ï´Ù. °¡Àå ÀϹÝÀûÀÎ ¿¹´Â XML ÆÄÀÏÀ» ÀÐ°í ½ºÅ°¸¶¸¦ ´Ù¿î·ÎµåÇؾßÇÏ´Â °æ¿ìÀÔ´Ï´Ù.
³ª´Â ÇÁ·Ï½Ã ¼¹ö µÚ¿¡ÀÖ´Ù. JVMÀÌ ÇÁ·Ï½Ã¸¦ »ç¿ëÇϵµ·Ï ¼³Á¤ÇÏ·Á¸é ¾î¶»°ÔÇؾßÇմϱî?
´Ù¸¥ ´äº¯¿¡¼ ÁöÀûÇÑ´ë·Î ÀÎÁõ µÈ ÇÁ·Ï½Ã¸¦ »ç¿ëÇؾßÇÏ´Â °æ¿ì ¸í·É ÁÙ º¯¼ö¸¦ »ç¿ëÇÏ¿©ÀÌ ÀÛ¾÷À» ¼öÇà ÇÒ ¼öÀÖ´Â È®½ÇÇÑ ¹æ¹ýÀÌ ¾ø½À´Ï´Ù. ´Ù¸¥ »ç¶÷ÀÇ ÀÀ¿ë ÇÁ·Î±×·¥À» »ç¿ëÇÏ°íÀÖ´Â °æ¿ì ¼º°¡½Å ÀÏÀÌ¸ç ¼Ò½º ÄÚµå.
Iverson Àº HttpProxy¸¦ »ç¿ëÇÏ¿© »çÀü ó¸® ÀÎÁõ À» »ç¿ëÇÏ¿© È£½ºÆ®¿¡ ¿¬°áÇÏ¿© Proxifier (Mac OS X ¹× WindowsÀÇ °æ¿ì http://www.proxifier.com/ ¿Í °°Àº ÇÁ·Ï½Ã °ü¸® µµ±¸¸¦ »ç¿ë ÇÏ¿©ÀÌ ¹®Á¦¸¦ ÇØ°áÇÏ´Â µ¥ µµ¿òÀ̵Ǵ Á¦¾ÈÀ»ÇÕ´Ï´Ù.
¿¹¸¦ µé¾î Proxifier¸¦ »ç¿ëÇϸé (ÀÎÁõ µÈ) ÇÁ·Ï½Ã¸¦ ÅëÇØ °ü¸®µÇ°í ¸®µð·º¼ÇµÇ´Â Java ¸í·ÉÀ» ÀÎÅͼÁÆ®Çϵµ·Ï ¼³Á¤ÇÒ ¼ö ÀÖ½À´Ï´Ù. ÀÌ °æ¿ì proxyHost ¹× proxyPort °ªÀ» °ø¹éÀ¸·Î ¼³Á¤ÇÏ·Á°íÇÕ´Ï´Ù (¿¹ : -Dhttp.proxyHost= -Dhttp.proxyPort=
¸¦ java ¸í·É¿¡ Àü´Þ).
WINHTTP ¸¦ ±¸¼ºÇÏ´Â °Íµµ È¿°ú°¡ ÀÖ´Ù°í »ý°¢ÇÕ´Ï´Ù.
Windows ¾÷µ¥ÀÌÆ®¸¦ ºñ·ÔÇÑ ¸¹Àº ÇÁ·Î±×·¥¿¡¼ ÇÁ·Ï½Ã »ç¿ë¿¡ ¹®Á¦°¡ ÀÖ½À´Ï´Ù. WINHTTP¸¦ ¼³Á¤Çϸé Ç×»ó ÀÌ·± Á¾·ùÀÇ ¹®Á¦°¡ ÇØ°áµË´Ï´Ù.
´ÙÀ½Àº ¸Å¿ì ÀϹÝÀûÀÎ °æ¿ì ÀÎ ¸í·É ÁÙ¿¡¼ ÇÁ·Ï½Ã »ç¿ëÀÚ ¹× ÇÁ·Ï½Ã ¾ÏÈ£ ·Î Java¸¦ ÇÁ·Ï½Ã·Î ¼³Á¤ÇÏ´Â ¹æ¹ýÀ» º¸¿©ÁÝ´Ï´Ù. ¾ÏÈ£¿Í È£½ºÆ®´Â ¿øÄ¢ÀûÀ¸·Î Äڵ忡 ÀúÀåÇÏ¸é ¾ÈµË´Ï´Ù.
-D¸¦ »ç¿ëÇÏ¿© ½Ã½ºÅÛ ¼Ó¼ºÀ» ¸í·É ÁÙ¿¡ Àü´ÞÇÏ°í System.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 µîÀ» »ç¿ëÇؾßÇÕ´Ï´Ù.
µ¶¸³ ½ÇÇà Çü JVM ³»¿¡¼ http.proxy * JVM º¯¼ö¸¦ »ç¿ëÇÒ ¼ö ÀÖÁö¸¸ ½ÃÀÛ ½ºÅ©¸³Æ®¸¦ ¼öÁ¤Çϰųª ÀÀ¿ë ÇÁ·Î±×·¥ ¼¹ö (¾Æ¸¶ jboss ¶Ç´Â tomcat Á¦¿Ü)¿¡¼ ¼öÇàÇؾßÇÕ´Ï´Ù. ´ë½Å JAVA ÇÁ·Ï½Ã API (System.setProperty ¾Æ´Ô)¸¦ È°¿ëÇϰųª °ø±Þ ¾÷ü °íÀ¯ÀÇ ±¸¼º ¿É¼ÇÀ» È°¿ëÇؾßÇÕ´Ï´Ù. WebSphere¿Í WebLogicÀº J2SEº¸´Ù ÈξÀ °·ÂÇÑ ÇÁ·Ï½Ã¸¦ ¼³Á¤ÇÏ´Â ¹æ¹ýÀ» ¸Å¿ì Àß Á¤ÀÇÇÏ°í ÀÖ½À´Ï´Ù. ¶ÇÇÑ WebSphere ¹× WebLogicÀÇ °æ¿ì ½ÃÀÛ ½ºÅ©¸³Æ® (ƯÈ÷ ÇÁ·Ï½Ã¸¦ »ç¿ëÇϵµ·Ï Áö½Ã ÇÑ ¼¹öÀÇ interop ÇÁ·Î¼¼½º ...)¸¦ ¹«½ÃÇÔÀ¸·Î½á ¾ÖÇø®ÄÉÀÌ¼Ç ¼¹ö¸¦ °ÅÀÇ ¼Õ»ó½ÃÅ°Áö ¾ÊÀ» °ÍÀÔ´Ï´Ù.
ÀÌ·¯ÇÑ Ç÷¡±×¸¦ ÇÁ·Î±×·¡¹Ö ¹æ½ÄÀ¸·Î ´ÙÀ½°ú °°ÀÌ ¼³Á¤ÇÒ ¼ö ÀÖ½À´Ï´Ù.
if (needsProxy()) {
System.setProperty("http.proxyHost",getProxyHost());
System.setProperty("http.proxyPort",getProxyPort());
} else {
System.setProperty("http.proxyHost","");
System.setProperty("http.proxyPort","");
}
needsProxy()
, getProxyHost()
¹× getProxyPort()
¸Þ¼µå¿¡¼ ¿Ã¹Ù¸¥ °ªÀ» ¹ÝȯÇϱâ needsProxy()
ÄÚµå ½º ´ÏÆêÀ» È£Ãâ ÇÒ ¼ö ÀÖ½À´Ï´Ù.
±×°ÍÀº ³ª¸¦ À§ÇØ ÀÏÇÑ´Ù.
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 : Àú´Â GHadÀÇ ´ë´äÀ» ±âº»À¸·ÎÇÕ´Ï´Ù.
JVMÀº ÇÁ·Ï½Ã¸¦ »ç¿ëÇÏ¿© HTTP È£ÃâÀ»ÇÕ´Ï´Ù.
System.getProperties().put("http.proxyHost", "someProxyURL");
System.getProperties().put("http.proxyPort", "someProxyPort");
»ç¿ëÀÚ ¼³Á¤ ÇÁ·Ï½Ã¸¦ »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù.
System.setProperty("java.net.useSystemProxies", "true");
³ª´Â ¶ÇÇÑ ¹æȺ® µÚ¿¡ ÀÖÀ¸¸ç, ÀÌ°ÍÀº ³ª¸¦ À§ÇØ ÀÏÇß´Ù !!
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();
ÇÁ·Ï½Ã µÚ¿¡ÀÖ´Â 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");