OpenJDK 25 ରେ Java Socket HTTP CONNECT ସୁଡଙ୍ଗ
OpenJDK 25 ରେ HTTP ପ୍ରକ୍ସି ସକେଟ ପଥ ବ୍ୟବହାର କରି ଅନୁମତିପ୍ରାପ୍ତ TCP ସେବା ପର୍ଯ୍ୟନ୍ତ ପହଞ୍ଚନ୍ତୁ, ଏବଂ ପ୍ରକ୍ସି ଶେଷ ବିନ୍ଦୁ ଓ ଲକ୍ଷ୍ୟସ୍ଥଳ ଅଲଗା ରଖନ୍ତୁ।
ଏକ କଷ୍ଟମ TCP ପ୍ରୋଟୋକଲ HTTP ପ୍ରକ୍ସି ମଧ୍ୟରେ ଯାତ୍ରା କରିପାରେ ଯେତେବେଳେ ସେ ପ୍ରକ୍ସି ଲକ୍ଷ୍ୟସ୍ଥଳକୁ CONNECT ଅନୁମତି ଦିଏ। ଆପ୍ଲିକେସନ ପ୍ରୋଟୋକଲ HTTP ହେବା ଆବଶ୍ୟକ ନାହିଁ: HTTP ସୁଡଙ୍ଗ ସ୍ଥାପନ କରେ, ତା'ପରେ ଆପ୍ଲିକେସନ ନିଜ ବାଇଟ ଭିତରେ ବିନିମୟ କରେ।
OpenJDK 25 Socket(Proxy) ରେ HTTP ପ୍ରକ୍ସି ପଥ ପ୍ରଦାନ କରେ। ଏହାର କାର୍ଯ୍ୟାନ୍ୱୟନ CONNECT ବିନିମୟ କରେ ଏବଂ ଆପ୍ଲିକେସନ ବ୍ୟବହାର ପାଇଁ ସଂଯୁକ୍ତ ସକେଟ ଫେରାଏ।
Proxy route = new Proxy(
Proxy.Type.HTTP,
new InetSocketAddress("proxy.example", 8080));
try (Socket socket = new Socket(route)) {
socket.setSoTimeout(10000);
socket.connect(
InetSocketAddress.createUnresolved("tcp-service.example", 8443),
5000);
InputStream input = socket.getInputStream();
OutputStream output = socket.getOutputStream();
}ଏହି ଅଂଶ java.net ଏବଂ java.io ର ଶ୍ରେଣୀ ବ୍ୟବହାର କରେ। ଦୁଇଟି ଶେଷ ବିନ୍ଦୁ ବଦଳାନ୍ତୁ ଏବଂ try ବ୍ଲକ ଛାଡିବା ପୂର୍ବରୁ ପ୍ରୋଟୋକଲ ବିନିମୟ କରନ୍ତୁ। ଅନୁମତିପ୍ରାପ୍ତ ସାର୍ବଜନୀନ TCP ଲକ୍ଷ୍ୟ ପାଇଁ, ସେ ଲକ୍ଷ୍ୟର ପୋର୍ଟ ପାଇଁ CONNECT ଅନୁମତି ଯାଞ୍ଚ କରିବା ପରେ ହିଁ HTTP ପ୍ରକ୍ସି ତାଲିକାରୁ HTTP ପ୍ରାର୍ଥୀ ବାଛନ୍ତୁ। ପ୍ରକ୍ସି ଠିକଣା ହେଉଛି ସ୍ଥାନ ଯେଉଁଠାରେ Java ପ୍ରଥମେ ସଂଯୋଗ କରେ; connect କୁ ଦିଆଯାଇଥିବା ଠିକଣା ସେ ସେବା ଚିହ୍ନଟ କରେ ଯେଉଁଠାରେ ପ୍ରକ୍ସି ପହଞ୍ଚିବା ଉଚିତ।
ଅସମାଧାନ ହୋଇନଥିବା ଲକ୍ଷ୍ୟସ୍ଥଳ ଏହି କାର୍ଯ୍ୟାନ୍ୱୟନର CONNECT ଅନୁରୋଧ ପାଇଁ ନିଜ ହୋଷ୍ଟନାମ ସଂରକ୍ଷଣ କରେ। ବିପରୀତରେ ସମାଧାନ ହୋଇଥିବା InetSocketAddress ସେ ଅନୁରୋଧକୁ ନିଜ ସମାଧାନ ହୋଇଥିବା IP ଠିକଣା ପ୍ରଦାନ କରେ। ପ୍ରକ୍ସି ସେବାର ନାମ ସମାଧାନ କରିବାକୁ ପଡିଲେ କିମ୍ବା ହୋଷ୍ଟନାମ ଆଧାରିତ ନୀତି ଲାଗୁ କରିବାକୁ ପଡିଲେ ଏହି ପାର୍ଥକ୍ୟ ଗୁରୁତ୍ୱପୂର୍ଣ୍ଣ।
ସଫଳ ସଂଯୋଗ ଆପଣ ପାଇଁ କଣ ଛାଡେ
ଫଳସ୍ୱରୂପ ଷ୍ଟ୍ରିମଗୁଡ଼ିକ ସୁଡଙ୍ଗରେ ଥିବା ସେବାର ତଥ୍ୟ ବହନ କରେ। ସେମାନେ ଅଲଗା HTTP ପ୍ରତିକ୍ରିୟା ପ୍ରକାଶ କରନ୍ତି ନାହିଁ ଯାହାକୁ ଆପଣଙ୍କ ଆପ୍ଲିକେସନ ପଢ଼ି ଫୋପାଡ଼ି ଦେବା ଉଚିତ। ଦ୍ୱିତୀୟ CONNECT ବିନିମୟ ଯୋଡ଼ିଲେ JDK ସୁଡଙ୍ଗ ସ୍ଥାପନ କରିସାରିବା ପରେ ସେବାକୁ HTTP ପାଠ ପଠାଯିବ।
ଉଦାହରଣ ସଂଯୋଗ ସମୟସୀମା ଏବଂ ସକେଟ ପଠନ ସମୟସୀମା ଦିଏ; ସେଗୁଡ଼ିକ ଅଲଗା ନିୟନ୍ତ୍ରଣ, ଆପ୍ଲିକେସନ ଅଧିବେଶନ ପାଇଁ ଗୋଟିଏ ସାମଗ୍ରିକ ସମୟସୀମା ନୁହେଁ।
CONNECT ଅନୁମତି ଏବେ ମଧ୍ୟ ପ୍ରକ୍ସିର। ସାଧାରଣ ୱେବ ଅନୁରୋଧ ଆଗକୁ ପଠାଉଥିବା ଶେଷ ବିନ୍ଦୁ ସେବାର ପୋର୍ଟ ଅଗ୍ରାହ୍ୟ କରିପାରେ କିମ୍ବା ସୁଡଙ୍ଗ ଖୋଲିବା ପୂର୍ବରୁ ପ୍ରମାଣୀକରଣ ମାଗିପାରେ। ସେ ବିଫଳତାଗୁଡ଼ିକୁ ସୁଡଙ୍ଗ ଗ୍ରହଣ କରି ପରେ ଆପଣଙ୍କ ଆପ୍ଲିକେସନ ପ୍ରୋଟୋକଲ ଅଗ୍ରାହ୍ୟ କରୁଥିବା ସର୍ଭରରୁ ଅଲଗା ରଖନ୍ତୁ।
ଯଦି ସେ ପ୍ରୋଟୋକଲକୁ TLS ଆବଶ୍ୟକ, ସଂଯୁକ୍ତ ସକେଟ ମାଧ୍ୟମରେ ସେବାର ଉଦ୍ଦିଷ୍ଟ ହୋଷ୍ଟନାମ ଓ ସାଧାରଣ ପ୍ରମାଣପତ୍ର ଯାଞ୍ଚ ସହିତ TLS ବୁଝାମଣା କରନ୍ତୁ। କେବଳ CONNECT ଷ୍ଟ୍ରିମ ଏନକ୍ରିପ୍ଟ କରେ ନାହିଁ। ପ୍ରକୃତ HTTP API ପାଇଁ, HTTP କ୍ଲାଏଣ୍ଟ HTTP ସନ୍ଦେଶ ମଧ୍ୟ ସମ୍ଭାଳୁଥିବାରୁ ଅଧିକ ସୁବିଧାଜନକ ଇଣ୍ଟରଫେସ ରହେ।