রিমোট জেএমএক্স সংযোগ


97

আমি রিমোট মেশিনে চলমান জাভা অ্যাপ্লিকেশনে একটি জেএমএক্স সংযোগ খোলার চেষ্টা করছি।

অ্যাপ্লিকেশন JVM নিম্নলিখিত বিকল্পগুলির সাথে কনফিগার করা হয়েছে:

  • com.sun.management.jmxremote
  • com.sun.management.jmxremote.port = 1088
  • com.sun.management.jmxremote.authenticate = মিথ্যা
  • com.sun.management.jmxremote.ssl = মিথ্যা

আমি localhost:1088jconsole বা jvisualvm ব্যবহার করে সংযোগ করতে সক্ষম । তবে আমি xxx.xxx.xxx.xxx:1088একটি দূরবর্তী মেশিন ব্যবহার করে সংযোগ করতে পারছি না ।

সার্ভারগুলির মধ্যে বা ওএস-তে কোনও ফায়ারওয়াল নেই। তবে এই সম্ভাবনাটি দূর করতে আমি telnet xxx.xxx.xxx.xxx 1088এবং আমি মনে করি এটি সংযুক্ত, কারণ কনসোল স্ক্রিনটি ফাঁকা হয়ে যায়।

উভয় সার্ভার হ'ল উইন্ডোজ সার্ভার 2008 x64। 64-বিট জেভিএম এবং 32-বিটের সাহায্যে চেষ্টা করা হয়েছে, দু'জনেরই কাজ নয়।


4
সম্ভবত এর সাথে সম্পর্কিত stackoverflow.com/questions/151238/...
tuler

উত্তর:


119

যদি লিনাক্সে সমস্যা হত যে লোকালহোস্টটি লুপব্যাক ইন্টারফেস , আপনার নেটওয়ার্ক ইন্টারফেসের সাথে আবদ্ধ হওয়ার জন্য আপনার অ্যাপ্লিকেশন প্রয়োজন ।

আপনি নেটস্ট্যাটটি নিশ্চিত করতে এটি ব্যবহার করতে পারেন এটি প্রত্যাশিত নেটওয়ার্ক ইন্টারফেসের সাথে আবদ্ধ নয়।

আপনি java.rmi.server.hostname="YOUR_IP"পরিবেশের পরিবর্তনশীল হিসাবে বা ব্যবহার করে সিস্টেম প্যারামিটারের সাহায্যে প্রোগ্রামটি শুরু করে এই কাজটি করতে পারেন

java -Djava.rmi.server.hostname=YOUR_IP YOUR_APP

7
সম্পর্কে ভুলে যাবেন না hostname -i, স্ট্যাকওভারফ্লো . com/a/11654322/99834 বিস্তারিত দেখুন।
সোরিন

কাজ করছে! আমাদের পরিবেশে আমরা ভিএমওয়্যার ভার্চুয়াল মেশিন ব্যবহার করি। সার্ভারটি একটি ভিএম-তে ছিল। ভিএমটি বেড়া মোতায়েন করা হয়েছিল যাতে এর অভ্যন্তরীণ এবং একটি বাহ্যিক আইপি ঠিকানা রয়েছে। আমরা সার্ভার জাভা প্রক্রিয়াটি -Djava.rmi.server.hostname = <ternतर-ip-adressress> দিয়ে শুরু করেছি।
buzz3791

হোস্ট আইপি সেট করতে বা লোকালহোস্ট আইপ পরিবর্তন করতে এই লিঙ্কটি কার্যকর হবে।
রেজা আমেরিকা

আমার এখানে দুটি প্রশ্ন রয়েছে - 1) যদি কেউ জেএমএক্সের চেয়ে জেএমএক্সএমপি ব্যবহার করতে চায় তবে কী হবে। তার জন্য কনফিগারগুলি কী হবে? এবং 2) আরএমআই প্রোটোকল লোড না করে জেএমএক্স সংযোগ তৈরি করা সম্ভব?
কুমার বৈভব

65

আমি জেএমএক্সকে লোকালহোস্টের বাইরে থেকে কাজ করার চেষ্টা করার জন্য এক দিনের বেশি সময় ব্যয় করেছি। দেখে মনে হচ্ছে SUN / ওরাকল এটি সম্পর্কে একটি ভাল ডকুমেন্টেশন সরবরাহ করতে ব্যর্থ হয়েছে।

নিশ্চিত হয়ে নিন যে নীচের কমান্ডটি আপনাকে একটি আসল আইপি বা HOSTNAME দেয়। এটি যদি 127.0.0.1, 127.0.1.1 বা লোকালহোস্টের মতো কিছু ফেরত দেয় তবে এটি কাজ করবে না এবং আপনাকে /etc/hostsফাইল আপডেট করতে হবে ।

hostname -i

বাইরে থেকে এমনকি জেএমএক্স সক্ষম করতে এখানে কমান্ডটি প্রয়োজন

-Dcom.sun.management.jmxremote 
-Dcom.sun.management.jmxremote.authenticate=false 
-Dcom.sun.management.jmxremote.ssl=false 
-Dcom.sun.management.jmxremote.port=1100
-Djava.rmi.server.hostname=myserver.example.com

যেখানে আপনি ধরে নিয়েছেন, myserver.example.com অবশ্যই কি মিলবে তা মিলবে hostname -i

স্পষ্টতই, আপনার নিশ্চিত হওয়া দরকার যে ফায়ারওয়াল আপনাকে ব্লক করে না, তবে আমি প্রায় নিশ্চিত যে এটি আপনার সমস্যা নয়, সমস্যাটি নথিভুক্ত নয় এমন শেষ প্যারামিটার।


-জাজা.আরমি.সভার.হোস্টনাম = myserver.example.com যুক্ত করে কৌতুকটি করলেন! ধন্যবাদ!
জিম বেথানকোর্ট

আমি এর জন্য জেডিকে
ক্লারা

4
"নিশ্চিত হয়ে নিন যে নীচের কমান্ডটি আপনাকে একটি আসল আইপি বা HOSTNAME ফেরত দিয়েছে it যদি এটি 127.0.0.1, 127.0.1.1 বা লোকালহোস্টের মতো কিছু দেয় তবে এটি কাজ করবে না এবং আপনাকে / ইত্যাদি / হোস্ট ফাইল আপডেট করতে হবে।" কি?
পেড্রোড

4
শুধু একটি দ্রুত না, java.rmi.server.hostname=<Public DNS name from AWS EC2 console for the instance>। আশা করি এটি কাউকে সাহায্য করবে।
সনি

@ পেড্রোড: আপনার "আপনার" -Djava.rmi.server.hostname "
সেবাস্তিয়ান

24

টমক্যাট এবং জাভা 8 এর সাথে আমার পরীক্ষায়, জেভিএম জেএমএক্সের জন্য নির্দিষ্ট করা একটি ছাড়াও একটি ক্ষুদ্রতর বন্দর খুলছিল। নিম্নলিখিত কোডটি আমাকে স্থির করেছে; আপনার জেএমএক্স ক্লায়েন্টের (যেমন ভিজুয়ালভিএম সংযোগ করছে না) এমন সমস্যা থাকলে আপনার যদি এটি ব্যবহার করে দেখুন ।

-Dcom.sun.management.jmxremote.port=8989
-Dcom.sun.management.jmxremote.rmi.port=8989

এছাড়াও দেখুন জেএমএক্স কনফিগার করা অবস্থায় জাভা কেন তিনটি বন্দর খোলে?


12

http

যদি আপনি কোনও NAT এর পিছনে থাকা কোনও সার্ভারটি অ্যাক্সেস করার চেষ্টা করছেন - আপনাকে সম্ভবত আপনার সার্ভারটি বিকল্পটি দিয়ে শুরু করতে হবে

-Djava.rmi.server.hostname=<public/NAT address>

যাতে ক্লায়েন্টকে প্রেরিত আরএমআই স্টাবগুলিতে সার্ভারের সর্বজনীন ঠিকানা থাকে যাতে এটি ক্লায়েন্টদের বাইরে থেকে পৌঁছাতে দেয়।


8

এটি সীমাবদ্ধ করে যে আপনার সমাপ্তি উদ্ধৃতিটি খুব তাড়াতাড়ি আসে। এটি শেষ প্যারামিটারের পরে হওয়া উচিত।

এই কৌশলটি আমার পক্ষে কাজ করেছিল।

আমি আকর্ষণীয় কিছু লক্ষ্য করেছি: যখন আমি নিম্নলিখিত কমান্ড লাইনটি ব্যবহার করে আমার অ্যাপ্লিকেশন শুরু করি:

java -Dcom.sun.management.jmxremote.port=9999
     -Dcom.sun.management.jmxremote.authenticate=false
     -Dcom.sun.management.jmxremote.ssl=false

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

সুতরাং, এটি কোনও নেটওয়ার্কের সমস্যা নয়, যদি আমি java.rmi.server.hostname সিস্টেমের সম্পত্তি বা তার সাথে ছাড়াই নেটস্প্যাট সম্পাদন করি তবে আমার নীচের বাইন্ডিংগুলি রয়েছে:

 TCP    0.0.0.0:9999           0.0.0.0:0              LISTENING
 TCP    [::]:9999              [::]:0                 LISTENING

এর অর্থ এই যে উভয় ক্ষেত্রে 9999 পোর্টে তৈরি সকেট যে কোনও ঠিকানায় যে কোনও হোস্টের সংযোগ গ্রহণ করে।

আমি মনে করি এই সিস্টেমের সম্পত্তিটির বিষয়বস্তু সংযোগে কোথাও ব্যবহৃত হয় এবং jconsole এর সাথে যোগাযোগের জন্য এজেন্ট দ্বারা ব্যবহৃত আসল আইপি ঠিকানার সাথে তুলনা করে। এবং যদি এই ঠিকানাগুলির সাথে মেলে না, সংযোগ ব্যর্থ।

Jconsole ব্যবহার করে একই হোস্ট থেকে সংযোগ করার সময় আমার এই সমস্যাটি ছিল না, কেবল আসল শারীরিক দূরবর্তী হোস্ট থেকে। সুতরাং, আমি অনুমান করি যে এই চেকটি কেবল তখনই করা হবে যখন "বাইরের" থেকে সংযোগ আসছে।


"আপনার সমাপ্তি উদ্ধৃতিটি খুব তাড়াতাড়ি আসে" বলতে কী বোঝায়? আমার একই সমস্যা রয়েছে, আমি টিসিপি সংযোগটি দেখতে পাচ্ছি, তবে শেষ পর্যন্ত jconsole দাবি করে যে এটি সংযোগ করতে ব্যর্থ হয়েছে।
Tsuna

আমি জানি না, যদি আমি সঠিকভাবে মনে করি তবে কোথাও কোট খোলা ছিল এবং এই উদ্ধৃতিটি পরামিতিগুলির শেষে ছিল না। সম্ভবত এটি একটি ব্যাচের স্ক্রিপ্টে ছিল, আমি মনে করতে পারি না। তবে আমি অবশ্যই স্বীকার করব যে এই উত্তরটি প্রশ্নের সাথে কোন ধারণা রাখে না ... সম্ভবত প্রশ্নটি সম্পাদিত হয়েছে? প্রশ্নের অধীনে কোনও সম্পাদিত বিজ্ঞপ্তি নেই ... আমি জানি না, আমি দুঃখিত।
yohann.martineau

6

আমার পক্ষে কাজটি হ'ল / ইত্যাদি / হোস্টগুলিকে আইপিতে হোস্টনামটি নির্দেশ করে লুপব্যাক ইন্টারফেসে নয় এবং আমার অ্যাপ্লিকেশন পুনরায় চালু করার চেয়ে।

বিড়াল / ইত্যাদি / হোস্ট

127.0.0.1      localhost.localdomain localhost
192.168.0.1    myservername

এটি আমার কনফিগারেশন:

-Dcom.sun.management.jmxremote.port=1617 
-Dcom.sun.management.jmxremote.ssl=false 
-Dcom.sun.management.jmxremote.authenticate=false

5

অনেক অনেক ধন্যবাদ, এটি এভাবে কাজ করে:

java -Djava.rmi.server.hostname = xxx.xxx.xxx.xxx -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.ssl = false -Dcom.sun.management.jmxremote.authenticate = মিথ্যা - Dcom.sun.management.jmxremote.port = 25000 -জার মাইজার .jar



0

আমার একই সমস্যা আছে এবং আমি স্থানীয় হোস্টের নামের সাথে মেলে এমন কোনও হোস্ট-নেম পরিবর্তন করে 0.0.0.0 এ নিয়ে যাচ্ছি বলে মনে হয় এটি কাজ করে।


0

জেএমএক্স রিমোট সক্ষম করতে, জাভা কমান্ড সহ ভিএম প্যারামিটারের নীচে পাস করুন।

    -Dcom.sun.management.jmxremote 
    -Dcom.sun.management.jmxremote.port=453
    -Dcom.sun.management.jmxremote.authenticate=false                               
    -Dcom.sun.management.jmxremote.ssl=false 
    -Djava.rmi.server.hostname=myDomain.in

4
আপনি কি বলতে পারবেন কেন এটা 0.0.0.0 প্রয়োজন এবং একটি নির্দিষ্ট আইপি না বাঁধাই হয়
বাবু জেমস

0

এটি চেষ্টা করে দেখুন, আমি ডকারের ধারকটির ভিতরে জেএমএক্স অ্যাক্সেস করতে পরীক্ষা করেছি

-ডকম.সুন.ম্যানেজমেন্ট.জেএমএক্স্রমেট = সত্য -ডজভা.আরমি.সভার.হোস্টনাম = লোকালহোস্ট -ডকম.সুন.ম্যানেজমেন্ট.জেএমএক্স্রমেট.পোর্ট = 16000 -ডকম.সুন.ম্যানেজমেন্ট.জেএমএক্স্রমেট.আরমি.পোর্ট = 16000 -ডকম.সুন .management.jmxremote.authenticate = false -Dcom.sun.management.jmxremote.ssl = মিথ্যা

তারপর

con জকনসোল লোকালহোস্ট: 16000


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