Java ProxySelector: ଅନୁପସ୍ଥିତ HTTP ଏବଂ HTTPS ପୋର୍ଟଗୁଡ଼ିକୁ ସାଧାରଣ କରନ୍ତୁ
କଷ୍ଟମ ProxySelector ରେ ଗନ୍ତବ୍ୟଗୁଡ଼ିକୁ ତୁଳନା କରିବା ପୂର୍ବରୁ ଛାଡ଼ି ଦିଆଯାଇଥିବା HTTP ପୋର୍ଟଗୁଡ଼ିକୁ ସାଧାରଣ କରନ୍ତୁ ଏବଂ HTTP ନିୟମଗୁଡ଼ିକୁ କଞ୍ଚା socket ଚୟନରୁ ଦୂରେଇ ରଖନ୍ତୁ।
ଏକ ନିୟମ http://reports.example:80/ କୁ proxy ମାଧ୍ୟମରେ ପଠାଏ କିନ୍ତୁ http://reports.example/ କୁ ସିଧାସଳଖ ଯିବାକୁ ଦିଏ। ସେହି ଦୁଇ URL ଏକ ସାଧାରଣ HTTP ଶେଷ ବିନ୍ଦୁକୁ ବର୍ଣ୍ଣନା କରେ। ଅସଙ୍ଗତି ସାଧାରଣତଃ ସେମାନଙ୍କ ପାର୍ସ କରାଯାଇଥିବା ପୋର୍ଟର ଆକ୍ଷରିକ ତୁଳନାରୁ ଆସେ।
URI ରେ କୌଣସି ପୋର୍ଟ ନ ଥିଲେ URI.getPort() -1 ଫେରାଏ। ଏହା ସ୍କିମ୍ ପାଇଁ ଡିଫଲ୍ଟକୁ ବଦଳାଏ ନାହିଁ। ମୂଲ୍ୟକୁ 80 ସହିତ ତୁଳନା କରୁଥିବା ରାଉଟିଂ ନୀତି ଦ୍ୱିତୀୟ URL କୁ ଛାଡ଼ିଯିବ।
String scheme = uri.getScheme();
int port = uri.getPort();
if (port == -1) {
if ("http".equalsIgnoreCase(scheme)) port = 80;
else if ("https".equalsIgnoreCase(scheme)) port = 443;
}
ତୁଳନାର ଉଭୟ ପାର୍ଶ୍ୱରେ ସମାନ ସାଧାରଣୀକରଣ ପ୍ରୟୋଗ କରନ୍ତୁ। କେବଳ ଅନୁରୋଧ URI ସଂଶୋଧନ କଲେ ଛାଡ଼ି ଦିଆଯାଇଥିବା ପୋର୍ଟ ସହିତ ବିନ୍ୟାସିତ ଗନ୍ତବ୍ୟ ତଥାପି ମେଳ ଖାଉ ନାହିଁ। ହୋଷ୍ଟ, ପ୍ରଭାବୀ ପୋର୍ଟ ଏବଂ ଉଦ୍ଦିଷ୍ଟ ସ୍କିମ୍ ତୁଳନା କରନ୍ତୁ; ବିକୃତ କିମ୍ବା ହୋଷ୍ଟହୀନ ଗନ୍ତବ୍ୟଗୁଡ଼ିକୁ ଏକ ନିର୍ଦ୍ଦିଷ୍ଟ ତ୍ରୁଟି ପଥ ମାଧ୍ୟମରେ ପ୍ରତ୍ୟାଖ୍ୟାନ କରନ୍ତୁ।
ପ୍ରତ୍ୟେକ callback କୁ HTTP ନିଷ୍ପତ୍ତି କରନ୍ତୁ ନାହିଁ
ଏକ ଡିଫଲ୍ଟ ଚୟନକର୍ତ୍ତାକୁ କଞ୍ଚା socket ସଂଯୋଗ ପାଇଁ ମଧ୍ୟ socket ସ୍କିମ୍ ସହିତ ପଚରାଯାଇପାରେ। କେବଳ ହୋଷ୍ଟ ଏବଂ ପୋର୍ଟ ମେଳ ହେବା ଯୋଗୁଁ ସେହି callback URL ଅନୁରୋଧ ପାଇଁ ଉଦ୍ଦିଷ୍ଟ HTTP proxy ଫେରାଇବା ଉଚିତ ନୁହେଁ। ଅସମର୍ଥିତ ସ୍କିମ୍ ଗୁଡ଼ିକୁ ପୂର୍ବ ଚୟନକର୍ତ୍ତାକୁ ଦାୟିତ୍ୱ ଦିଅନ୍ତୁ ଏବଂ ତାହାର ଉପଯୁକ୍ତ ଆଚରଣ ରକ୍ଷା କରନ୍ତୁ।
ନିଜର କଷ୍ଟମ ଚୟନକର୍ତ୍ତା ସ୍ଥାପନ କରିବା ପୂର୍ବରୁ ସେହି ପୂର୍ବ ଚୟନକର୍ତ୍ତାକୁ ଧରି ରଖନ୍ତୁ। ପ୍ରତିସ୍ଥାପକ ଭିତରୁ ବର୍ତ୍ତମାନର ଡିଫଲ୍ଟ ଖୋଜିବା ପ୍ରତିସ୍ଥାପକକୁ ପୁନର୍ବାର ଡାକିପାରେ।
ଅସଙ୍ଗତି ନିର୍ଣ୍ଣୟ କରିବା ସମୟରେ ସ୍କିମ୍, ହୋଷ୍ଟ, ମୂଳ ପୋର୍ଟ ଏବଂ ପ୍ରଭାବୀ ପୋର୍ଟ ଲଗ୍ କରନ୍ତୁ। JDK କାର୍ଯ୍ୟକାରୀକରଣ ମଧ୍ୟରେ ଗୋଟିଏ ପର୍ଯ୍ୟବେକ୍ଷିତ ସଂଖ୍ୟା କିମ୍ବା callback କ୍ରମ ଉପରେ ନିର୍ଭର କରନ୍ତୁ ନାହିଁ। ନୀତି ପ୍ରତ୍ୟେକ ପ୍ରଦତ୍ତ URI ପାଇଁ ସଠିକ୍ ନିଷ୍ପତ୍ତି ନେବା ଉଚିତ।