এর জন্য আমার একটি সমাধান রয়েছে:
যদি আপনার জাভা প্রক্রিয়াটি ফায়ারওয়ালের পিছনে লিনাক্সে চলমান থাকে এবং আপনি আপনার জাভা প্রক্রিয়াটির জেএমএক্স পোর্টের সাথে সংযোগ স্থাপনের জন্য আপনার স্থানীয় মেশিনে উইন্ডোজে জে কনসোল / জাভা ভিজ্যুয়ালভিএম / জাভা মিশন নিয়ন্ত্রণ শুরু করতে চান ।
আপনার এসএসএইচ লগইনের মাধ্যমে আপনার লিনাক্স মেশিনে অ্যাক্সেস দরকার। সমস্ত যোগাযোগ এসএসএইচ সংযোগের মাধ্যমে সুর করা হবে।
টিপ: ফায়ারওয়াল থাকুক বা না থাকুক এই সমাধানটি কার্যকর হয় না।
অসুবিধা: যতবার আপনি নিজের জাভা প্রক্রিয়া পুনরায় চালু করবেন, আপনাকে আবার 4 - 9 থেকে সমস্ত পদক্ষেপগুলি করতে হবে।
1. আপনার উইন্ডোজ মেশিনের জন্য পুটি-স্যুটটি এখান থেকে আপনার প্রয়োজন:
http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html
কমপক্ষে putty.exe
২. আপনার লিনাক্স মেশিনে একটি মুক্ত পোর্ট নির্ধারণ করুন:
<jmx-remote-port>
উদাহরণ:
jmx-remote-port = 15666
৩. লিনাক্স মেশিনে জাভা প্রক্রিয়াতে যুক্তি যুক্ত করুন
এটি অবশ্যই ঠিক এভাবে করা উচিত। যদি এটি নীচের মতো হয়ে থাকে তবে এটি ফায়ারওয়ালের পিছনে লিনাক্স মেশিনগুলির জন্য কাজ করে (এটি -Djava.rmi.server.hostname=localhost
তর্কের কারণ হিসাবে কাজ করে )।
-Dcom.sun.management.jmxremote
-Dcom.sun.management.jmxremote.port=<jmx-remote-port>
-Dcom.sun.management.jmxremote.ssl=false
-Dcom.sun.management.jmxremote.authenticate=false
-Dcom.sun.management.jmxremote.local.only=false
-Djava.rmi.server.hostname=localhost
উদাহরণ:
java -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=15666 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.local.only=false -Djava.rmi.server.hostname=localhost ch.sushicutta.jmxremote.Main
৪. আপনার জাভা প্রক্রিয়াটির প্রসেস-আইডি পান
ps -ef | grep <java-processname>
result ---> <process-id>
উদাহরণ:
ps -ef | grep ch.sushicutta.jmxremote.Main
result ---> 24321
৫. আরএমআইএসভারের স্টাব ডাউনলোডের জন্য নির্বিচারে পোর্টটি সন্ধান করুন
জাভা প্রক্রিয়াটি লিনাক্স মেশিনে একটি নতুন টিসিপি পোর্ট খুলবে, যেখানে আরএমআই সার্ভার-স্টাবগুলি ডাউনলোডের জন্য উপলব্ধ থাকবে। জাভা ভার্চুয়াল মেশিনের সাথে সংযোগ পেতে এই বন্দরটি এসএসএইচ টানেলের মাধ্যমেও পাওয়া দরকার।
netstat -lp
এই বন্দরটির সাথে lsof -i
জাভা প্রক্রিয়াটি তৈরি করে কী বন্দরটি খোলা হয়েছে তার ইঙ্গিত দেয়।
দ্রষ্টব্য: জাভা প্রক্রিয়া শুরু হওয়ার সাথে সাথে এই বন্দরটি সর্বদা পরিবর্তিত হয়।
netstat -lp | grep <process-id>
tcp 0 0 *:<jmx-remote-port> *:* LISTEN 24321/java
tcp 0 0 *:<rmi-server-port> *:* LISTEN 24321/java
result ---> <rmi-server-port>
উদাহরণ:
netstat -lp | grep 24321
tcp 0 0 *:15666 *:* LISTEN 24321/java
tcp 0 0 *:37123 *:* LISTEN 24321/java
result ---> 37123
6. পুট্টি দিয়ে আপনার উইন্ডোজ মেশিন থেকে দুটি এসএসএইচ-টানেল সক্ষম করুন
Source port: <jmx-remote-port>
Destination: localhost:<jmx-remote-port>
[x] Local
[x] Auto
Source port: <rmi-server-port>
Destination: localhost:<rmi-server-port>
[x] Local
[x] Auto
উদাহরণ:
Source port: 15666
Destination: localhost:15666
[x] Local
[x] Auto
Source port: 37123
Destination: localhost:37123
[x] Local
[x] Auto
Put. এই এসএসএইচ-টানেল সক্ষম করে পুট্টির সাথে আপনার লিনাক্স মেশিনে লগইন করুন।
পুটি সেশনটি খোলা রাখুন।
আপনি লগ ইন করার পরে, পুট্টি এসএসএইচ পোর্ট 22 এর মাধ্যমে লিনাক্স মেশিনে সমস্ত টিসিপি-সংযোগগুলি সুড়ঙ্গ করবে।
JMX-পোর্ট:
Windows machine: localhost:15666 >>> SSH >>> linux machine: localhost:15666
RMIServer-অসম্পূর্ণ-পোর্ট:
Windows Machine: localhost:37123 >>> SSH >>> linux machine: localhost:37123
8. নীচের ইউআরএলটি ব্যবহার করে আপনার জাভা প্রসেসের সাথে সংযোগ করতে জে কনসোল / জাভা ভিজ্যুয়ালভিএম / জাভা মিশন নিয়ন্ত্রণ শুরু করুন
এটি কাজ করে, কারণ জে কনসোল / জাভা ভিজ্যুয়ালভিএম / জাভা মিশন কন্ট্রোল মনে করে যে আপনি আপনার স্থানীয় উইন্ডোজ মেশিনের কোনও পোর্টের সাথে সংযুক্ত আছেন। তবে পুট্টি আপনার লিনাক্স মেশিনে 15666 বন্দরে সমস্ত পেডলোড প্রেরণ করুন।
লিনাক্স মেশিনে প্রথমে জাভা প্রক্রিয়া উত্তর দেয় এবং আরএমআইএসবার পোর্টটি ফেরত প্রেরণ করে। এই উদাহরণে 37123।
তারপরে জে কনসোল / জাভা ভিজ্যুয়ালভিএম / জাভা মিশন কন্ট্রোল মনে করে যে এটি লোকালহোস্টের সাথে সংযুক্ত: 37123 এবং পুটি পুরো পেলোডটি লিনাক্স মেশিনে এগিয়ে পাঠিয়ে দেবে
জাভা প্রক্রিয়া উত্তর দেয় এবং সংযোগটি উন্মুক্ত।
[x] Remote Process:
service:jmx:rmi:///jndi/rmi://localhost:<jndi-remote-port>/jmxrmi
উদাহরণ:
[x] Remote Process:
service:jmx:rmi:///jndi/rmi://localhost:15666/jmxrmi
9. উপভোগ করুন # 8-]