CORE
HOME > JAVA > J2SE > CORE
2018.09.27 / 20:46

[java] JVM¿¡¼­ »ç¿ëÇÒ ÇÁ·Ï½Ã¸¦ ¾î¶»°Ô ¼³Á¤Çմϱî?

hangawee
Ãßõ ¼ö 218
Answers

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 ÇÁ·Ï½Ã´Â ³×Æ®¿öÅ© ½ºÅÃÀÇ ¿©·¯ ¼öÁØ¿¡¼­ ÀÛµ¿ÇϹǷΠÇϳª ¶Ç´Â µÑ ´Ù ¶Ç´Â µÑ ´Ù¸¦ »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù.

 Question

¿©·¯ ¹ø, 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");