আমি কীভাবে জেভিএম ব্যবহার করতে প্রক্সি সেট করব


307

অনেক সময়, একটি জাভা অ্যাপ্লিকেশনটির সাথে ইন্টারনেটের সাথে সংযোগ স্থাপন করা প্রয়োজন। সর্বাধিক সাধারণ উদাহরণটি ঘটে যখন এটি কোনও এক্সএমএল ফাইল পড়তে থাকে এবং এর স্কিমা ডাউনলোড করার প্রয়োজন হয়।

আমি একটি প্রক্সি সার্ভারের পিছনে আছি। আমি কীভাবে আমার জেভিএমকে প্রক্সি ব্যবহার করতে সেট করতে পারি?


এর চারপাশে ওরাকল ডকুমেন্টেশনটি বেশ বাসি বলে মনে হচ্ছে (যদিও এটি সম্ভবত বৈধ)। স্প্রিংয়ের থেকে আরও আধুনিক কিছু এখানে দেওয়া হয়েছে: ডকস.স্প্রিং.আইও
স্প্রিং-

উত্তর:


350

জাভা ডকুমেন্টেশন (এইখান থেকে না javadoc এপিআই):

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

জেভিএম পতাকা সেট http.proxyHostএবং http.proxyPortকমান্ড-লাইনের সাহায্যে আপনার জেভিএম শুরু। এটি সাধারণত শেল স্ক্রিপ্ট (ইউনিক্সে) বা ব্যাট ফাইলে (উইন্ডোজে) করা হয়। ইউনিক্স শেল স্ক্রিপ্টের সাথে উদাহরণটি এখানে:

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

জেবস বা ওয়েবলজিকের মতো পাত্রে ব্যবহার করার সময়, আমার সমাধানটি হ'ল বিক্রেতার সরবরাহিত স্টার্ট-আপ স্ক্রিপ্টগুলি সম্পাদনা করা।

অনেক বিকাশকারী জাভা এপিআই (জাভাদোকস) এর সাথে পরিচিত তবে অনেক সময় ডকুমেন্টেশনটিকে উপেক্ষা করা হয়। এটিতে অনেক আকর্ষণীয় তথ্য রয়েছে: http://download.oracle.com/javase/6/docs/technotes/guides/


আপডেট: আপনি যদি কিছু স্থানীয় / ইন্ট্রানেট হোস্ট সমাধান করতে প্রক্সি ব্যবহার করতে না চান তবে @ তোমালকের মন্তব্যটি দেখুন:

এছাড়াও 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"
এটির

3
হাই বন্ধুরা, আপনি কীভাবে এর মধ্যে ব্যবহারকারীর নাম এবং পাসওয়ার্ড অন্তর্ভুক্ত করতে পারেন? ধন্যবাদ
জোব্ল্যাকদেব 21

8
@ জোবলাকদেব http.proxyUser এবং http.proxyPassword
আসুকিসুকি

4
@ আসুকুকিসুকি http.proxyUserএবং http.proxyPasswordজাভা সিস্টেমের বৈশিষ্ট্য নয়। তারা অ্যাপাচি এইচটিটিপি ক্লায়েন্টের জন্য।
লার্নের মারকুইস

24
এছাড়াও, কনফিগার করতে https.proxyHostএবং https.proxyPortএইচটিটিপিগুলির জন্য ভুলবেন না ।
সি-অটো

101

সিস্টেম প্রক্সি সেটআপ ব্যবহার করতে:

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


অসাধারণ সেটিং
জেভিএম তর্ক

আমি এই কোডটি আমার এসএসএকেটের "মিথ্যা" মান দ্বারা প্রক্সিটি অক্ষম করতে ব্যবহার করেছি। ধন্যবাদ।
ফের

1
সম্ভবত এটি কারণ আমার প্রক্সিটির প্রমাণীকরণ প্রয়োজন, তবে এটি আমার পক্ষে কার্যকর হয়নি। আমি এটা করতে ইচ্ছুক।
সাইমন ফোর্সবার্গ

3
এটি প্রক্সি অটো-কনফিগারেশন (পিএসি) ফাইলগুলির সাথে কাজ করে না, স্ট্যাকওভারফ্লো.com
প্রশ্নগুলি

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 প্রক্সি এবং সোকস প্রক্সিগুলি নেটওয়ার্ক স্ট্যাকের বিভিন্ন স্তরে অপারেট করে, যাতে আপনি একটি বা অন্য বা উভয় ব্যবহার করতে পারেন।


4
"Java.net.socks.username / পাসওয়ার্ড" তে সেট হয়, কেন আরো একটি প্রমাণকারী সেট?
লার্ন

1
কেন "con.setRequest ..." নয় কন কন স্বীকৃত। এর জন্য কি লাইব্রেরি দরকার।
রেন্ডনুম

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, একটি encapsulated ব্রাউজার থেকে এসেছেন সম্পর্কে 1998 সালে একটি মৃত্যুর মারা যান
Lorne এর মার্কুইস

2
সত্যিই কি এইচটিপি / https ছাড়া সম্পত্তির নাম?
বেতলিস্টা

18
এটি তিনটি ক্ষেত্রে ভুল: 1: যেমনটি উল্লেখ করা হয়েছে, কোনও "প্রক্সিসেট" আইটেম নেই; 2: "প্রক্সিহোস্ট" এবং "প্রক্সিপোর্ট" "http.proxyHost" এবং "http.proxyPort" (বা 'https' সমতুল্য) হওয়া দরকার; 3:। System.getProperties () করা (x, y) হল না System.setProperty (x, y) হিসেবে একই। এটি বাদে যদিও - দুর্দান্ত উত্তর।
রব ক্রানফিল

প্রায় সঠিক। দেখুন: memorynotfound.com/configure-http-proxy-settings-java
csvan

1
@ রবক্রানফিল 1: "প্রক্সিসেট" একটি অ-মানক পতাকা হিসাবে ব্যবহৃত হত যা একটি পুরানো জেডিকে প্রয়োজন ছিল তবে এটি আর প্রয়োজন হয় না; 2: "প্রক্সিহোস্ট" এবং "প্রক্সিপোর্ট" কাজ করে, "HTTP"। উপসর্গ কেবলমাত্র এইচটিটিপি প্রোটোকলগুলিতে সীমাবদ্ধ করে ("https" এর অনুরূপ), 3: এখানে আপনি ঠিক বলেছেন।
টুলফোজার

24

জেভিএম এইচটিটিপি কল করতে প্রক্সি ব্যবহার করে

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

এটি ব্যবহারকারীর সেটিং প্রক্সি ব্যবহার করতে পারে

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

System.setPropertyপরিবর্তে ব্যবহার করুনSystem.getProperties().put(...)
সাইমন ফোরসবার্গ

12

আপনি প্রক্সি সার্ভার সম্পর্কে jvm পরামিতি হিসাবে কিছু বৈশিষ্ট্য সেট করতে পারেন

-ডিটিটিপি.প্রক্সিপোর্ট = 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


এটা কাজ করে না. আপনি যদি ইতিমধ্যে প্রমাণিত না হন তবে মূল ফাংশনের প্রথম লাইনটি একগুচ্ছ নাল মান পায় এবং কোডটি বন্ধ হয়ে যায়। এটি কাউকে তাদের jvm প্রমাণীকরণ করতে সহায়তা করে না যাতে তারা প্রক্সি দিয়ে URL কল করতে পারে।
রেন্ডনুম

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 + = "-Djava.net.useSystemProxies = সত্য" রফতানি করুন


9

নিম্নলিখিতটি জাভাতে প্রক্সি ব্যবহারকারী এবং কমান্ড লাইন থেকে প্রক্সি পাসওয়ার্ড সহ একটি প্রক্সি সেট করবেন তা দেখায় যা একটি খুব সাধারণ ঘটনা। কোডটিতে পাসওয়ার্ড এবং হোস্টগুলি প্রথমে নিয়ম হিসাবে সংরক্ষণ করা উচিত নয়।

কমান্ড লাইনে সিস্টেমের বৈশিষ্ট্যগুলি -D এর সাথে পাস করা এবং সিস্টেম.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
প্রক্সিউজার এবং প্রক্সিপাওয়ার্ড জাভা সিস্টেমের বৈশিষ্ট্য নয়, তবে অ্যাপাচি এইচটিটিপি ক্লায়েন্টের বৈশিষ্ট্য তাই এটি সমস্ত ক্ষেত্রে কার্যকর হয় না।
থেল্পার

8

একটি এক্সএমএল ফাইল পড়ার জন্য এটির স্কিমা ডাউনলোড করা দরকার

আপনি যদি ইন্টারনেটের মাধ্যমে স্কিমা বা ডিটিডি পুনরুদ্ধার করতে গণনা করছেন তবে আপনি একটি ধীর, চ্যাটি, ভঙ্গুর অ্যাপ্লিকেশন তৈরি করছেন। সেই রিমোট সার্ভারটি ফাইল হোস্টিং যখন পরিকল্পনাযুক্ত বা অপরিকল্পিত ডাউনটাইম নেয় তখন কী ঘটে? আপনার অ্যাপ্লিকেশন বিরতি এটা কি ঠিক আছে?

Http://xml.apache.org/commons/components/resolver/resolver-article.html#s.catolog.files দেখুন

ইউআরএল স্কিমার জন্য এবং এর মতো অনন্য শনাক্তকারী হিসাবে বিবেচনা করা হয়। দূরবর্তীভাবে সেই ফাইলটি অ্যাক্সেস করার অনুরোধ হিসাবে নয়। "এক্সএমএল ক্যাটালগ" এ কিছু গুগল অনুসন্ধান করুন। একটি এক্সএমএল ক্যাটালগ আপনাকে স্থানীয়ভাবে এই জাতীয় সংস্থানগুলি হোস্ট করার অনুমতি দেয়, স্বচ্ছলতা, আড্ডা এবং ভঙ্গুরতার সমাধান করে।

এটি মূলত দূরবর্তী সামগ্রীর স্থায়ীভাবে ক্যাশেড অনুলিপি। এবং এটি ঠিক আছে, যেহেতু দূরবর্তী সামগ্রী কখনই পরিবর্তিত হবে না। যদি কোনও আপডেট থাকে তবে তা অন্য কোনও ইউআরএলে থাকবে। ইন্টারনেটে বিশেষত নির্বোধের মাধ্যমে সংস্থানটির প্রকৃত পুনরুদ্ধার করা।


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

প্রক্সিটির পিছনে কোনও ইউআরএল সংযোগ করার আগে এটি যুক্ত করুন।

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জাভা সিস্টেমের বৈশিষ্ট্য নয়। তারা অ্যাপাচি এইচটিটিপি ক্লায়েন্টের জন্য।
লার্নের মারকুইস

এর System.setPropertyপরিবর্তে ব্যবহার করুনSystem.getProperties().put(...)
সাইমন ফারসবার্গ

4

এটি একটি গৌণ আপডেট, তবে জাভা pro থেকে, প্রক্সি সংযোগগুলি এখন সিস্টেমের বৈশিষ্ট্যগুলির পরিবর্তে প্রোগ্রামগতভাবে তৈরি করা যেতে পারে। এটি কার্যকর হতে পারে যদি:

  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


2
এটি জাভা ১.২০ এর পরে, ১.৩ নয়।
লার্নের মারকুইস

3

সম্প্রতি আমি জেভিএমকে ব্রাউজারের প্রক্সি সেটিংস ব্যবহার করার অনুমতি দেওয়ার উপায়টি আবিষ্কার করেছি। আপনার যা করা দরকার তা হ'ল ${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যেমন বুটক্লাসপথ দিয়ে জেভিএম শুরু করা দরকার java -Xbootclasspath/a:"%JAVA_HOME%\jre\lib\deploy.jar" -jar my.jar। যদি কেউ এই সীমাবদ্ধতাটি কাটিয়ে উঠতে জানেন তবে আমাকে জানান।


1
আমি আশা করি আমি এই একাধিকবার উত্সাহ দিতে পারতাম, এটিই আমার জন্য কাজ করা একমাত্র সমাধান; ধন্যবাদ! আমাকে এপাচি কমন্স লগিংয়ের জারটি এখান থেকে ডাউনলোড করতে হয়েছিল: commons.apache.org/proper/commons-logging/download_logging.cgi আমার কোড প্রধান (): System.setProperty ("java.net.useSystemProxies", "সত্য") ; System.out.println ("প্রক্সি সনাক্তকরণ"); ExtendedProxyManager.init ();
বরিস

xbootclasspathমোতায়েন করার জন্য নির্দেশকারীটির কী প্রভাব ফেলবে? আমি কি সেই জারটিকে আমার সাধারণ ক্লাসপথে (ওয়েবস্টার্ট ছাড়াই চলতে পারি) নিতে পারি না?
হাউটম্যান

1
জেডিকে 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
হাউটম্যান

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

পি / এস: আমি জিএইচডির উত্তরের ভিত্তিতে রয়েছি।


এই উত্তরটি এমন কিছু সরবরাহ করে না যা ইতিমধ্যে অন্যান্য উত্তরে বলা হয়নি।
সাইমন ফারসবার্গ

1

অন্যান্য উত্তরে যেমন উল্লেখ করা হয়েছে, আপনার যদি প্রামাণিক প্রক্সগুলি ব্যবহার করতে হয় তবে কমান্ড-লাইন ভেরিয়েবলগুলি খাঁটিভাবে ব্যবহার করার কোনও নির্ভরযোগ্য উপায় নেই - এটি বিরক্তিকর যদি আপনি অন্য কারও অ্যাপ্লিকেশন ব্যবহার করেন এবং এর সাথে গোলযোগ করতে চান না ann সোর্স কোড.

উইল আইভারসন এটি পরিচালনা করতে প্রক্সিফায়ার ( http://www.proxifier.com/ ম্যাক ওএস এক্স এবং উইন্ডোজের জন্য প্রক্সি-ম্যানেজমেন্ট সরঞ্জাম) ব্যবহার করার জন্য প্রিমি -ম্যানেজমেন্ট টুল ব্যবহার করার জন্য একটি হোস্টের সাথে প্রিমেটিভ অথেনটিকেশন ব্যবহার করার জন্য এইচটিটিপিপ্রক্সি ব্যবহার করার ক্ষেত্রে সহায়ক পরামর্শ দিয়েছেন

প্রক্সিফায়ারের সাথে উদাহরণস্বরূপ আপনি এটির (প্রমাণীকৃত) প্রক্সিটির মাধ্যমে পরিচালিত ও পুনঃনির্দেশ করার জন্য কেবল জাভা কমান্ডগুলিতে সেট করতে পারেন। আপনি এই ক্ষেত্রে প্রক্সি হস্ট এবং প্রক্সিপোর্ট মানগুলি ফাঁকাতে সেট করতে চাইছেন, যেমন -Dhttp.proxyHost= -Dhttp.proxyPort=আপনার জাভা কমান্ডগুলিতে প্রবেশ করুন।


-1

আপনি যদি কোনও স্ট্যান্ডলোন জেভিএম এর মধ্যে থাকেন তবে আপনি http.proxy * JVM ভেরিয়েবলগুলি ব্যবহার করতে পারেন তবে আপনি তাদের প্রারম্ভিক স্ক্রিপ্টগুলি পরিবর্তন করতে পারবেন না এবং / অথবা আপনার অ্যাপ্লিকেশন সার্ভারের মধ্যে এটি করতে পারেন (সম্ভবত jboss বা টমক্যাট বাদে)। পরিবর্তে আপনার জাভা প্রক্সি এপিআই ব্যবহার করা উচিত (System.setProperty নয়) বা বিক্রেতার নিজস্ব কনফিগারেশন বিকল্পগুলি ব্যবহার করা উচিত। ওয়েবস্পিয়ার এবং ওয়েবলজিক উভয়েরই প্রক্সগুলি স্থাপনের খুব সংজ্ঞায়িত পদ্ধতি রয়েছে যা জে 2 এস-এর চেয়ে অনেক বেশি শক্তিশালী। অতিরিক্তভাবে, ওয়েবস্পিয়ার এবং ওয়েবলজিকের জন্য আপনি সম্ভবত স্টার্টআপ স্ক্রিপ্টগুলিকে ওভাররাইড করে আপনার অ্যাপ্লিকেশন সার্ভারটি সামান্য উপায়ে ভেঙে ফেলবেন (বিশেষত সার্ভারের ইন্টারপ প্রক্রিয়াগুলি যেমন আপনি তাদের প্রক্সি ব্যবহার করতে বলছেন ...)।


-5

আমি মনে করি ডাব্লুআইএনএইচটিটিপি কনফিগারেশনও কাজ করবে।

উইন্ডোজ আপডেট সহ অনেক প্রোগ্রামের প্রক্সি পিছনে সমস্যা রয়েছে। ডাব্লুআইএনএইচটিটিপি স্থাপনের মাধ্যমে সর্বদা এই ধরণের সমস্যাগুলির সমাধান হবে

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.