আপনি কীভাবে জেএনডিআই ব্যবহার বুঝতে পারবেন, যদি সম্ভব হয় তবে একটি উদাহরণ সহ?
আপনি কীভাবে জেএনডিআই ব্যবহার বুঝতে পারবেন, যদি সম্ভব হয় তবে একটি উদাহরণ সহ?
উত্তর:
জেএনডিআই হ'ল জাভা নামকরণ এবং ডিরেক্টরি ইন্টারফেস। এটি অ্যাপ্লিকেশন বিকাশকারী এবং অ্যাপ্লিকেশন ডিপ্লোয়ারের উদ্বেগগুলি পৃথক করতে ব্যবহৃত হয় । আপনি যখন কোনও অ্যাপ্লিকেশন লিখছেন যা কোনও ডাটাবেসের উপর নির্ভর করে তখন আপনার সেই ডাটাবেসে সংযোগের জন্য ব্যবহারকারীর নাম বা পাসওয়ার্ড সম্পর্কে চিন্তা করার দরকার নেই। জেএনডিআই বিকাশকারীকে একটি ডাটাবেসে একটি নাম দেওয়ার অনুমতি দেয় এবং ডেটাবেসের কোনও প্রকৃত উদাহরণে সেই নামটি মানচিত করতে ডিপ্লোয়ারের উপর নির্ভর করে।
উদাহরণস্বরূপ, আপনি যদি জাভা EE ধারকটিতে চলমান কোডটি লিখছেন, আপনি JNDI নাম "ডাটাবেস" সহ ডেটা উত্স ধরে রাখতে এটি লিখতে পারেন:
DataSource dataSource = null;
try
{
Context context = new InitialContext();
dataSource = (DataSource) context.lookup("Database");
}
catch (NamingException e)
{
// Couldn't find the data source: give up
}
নোট করুন এখানে ডাটাবেস ড্রাইভার, বা ব্যবহারকারীর নাম, বা পাসওয়ার্ড সম্পর্কে কিছুই নেই। এটি ধারকটির ভিতরে কনফিগার করা আছে।
জেএনডিআই কেবল ডাটাবেসে (জেডিবিসি) সীমাবদ্ধ নয়; সমস্ত ধরণের পরিষেবাগুলির নাম দেওয়া যেতে পারে। আরও তথ্যের জন্য, আপনার ওরাকল এর টিউটোরিয়ালটি পরীক্ষা করা উচিত ।
জেএনডিআই হ'ল উভয়টি কনফিগারেশন তথ্য সংগঠিত করার জন্য এবং এর মাধ্যমে পরিষেবাগুলি আবিষ্কার এবং শোনার জন্য একটি অত্যন্ত শক্তিশালী প্রক্রিয়া EventContext
। জেএনডিআইতে আপনি আপনার জেএনডিআই পরিষেবা সরবরাহকারী এটি সমর্থন করে ধরে নিচ্ছেন এবং কোনও বস্তু (কেবলমাত্র নয় DataSource
) শুনতে এবং শুনতে পারেন ।
অবশ্যই, একমাত্র ইস্যুতে আসলে একটি জেএনডিআই পরিষেবা সরবরাহকারী রয়েছে; এই সম্পর্কে দুর্দান্ত জিনিস হ'ল এটি আপনার নিজের রোল করা আশ্চর্যজনকভাবে সহজ। সব পরে আপনি এনকোড করতে কোন জাভা উদাহরণস্বরূপ মধ্যে XML
JavaBeans ব্যবহার XMLEncoder
এবং XMLDecoder
: যদি আপনি একটি অ্যাপ্লিকেশন সার্ভার মধ্যে চলমান উপর নির্ভর করতে হবে না!
সুতরাং এই একটি কনফিগারেশন ফাইল থাকার মধ্যে পার্থক্য কি? ঠিক আছে, এটি অনেক পরিষ্কার হতে পারে কারণ আপনার সমস্ত অ্যাপ্লিকেশন একই স্থান থেকে তাদের কনফিগারেশন পেতে পারে । তাদের যদি কনফিগারেশন সম্পর্কিত তথ্য ভাগ করা প্রয়োজন (উদাহরণস্বরূপ ডাটাবেস অবস্থান) তবে এটি একবার জেএনডিআই-তে সংজ্ঞায়িত করা যায় । মনে করুন আপনি ডাটাবেস সার্ভারগুলি সরিয়ে নিয়েছেন: এতে গ্যাজিলিয়ান কনফিগারেশন ফাইলের অবস্থানের সাথে আপনার মনে রাখার দরকার নেই। আপনি কেবল একটি জায়গায় যান: জেএনডিআই।
জেএনডিআই হ'ল একটি এপিআই যা ডিরেক্টরি এবং নামকরণ পরিষেবাদি অ্যাক্সেস করতে ব্যবহৃত হয় (অর্থাত্ উপায়গুলির সাথে নামগুলির সাথে সম্পর্কিত হয়)। কোনও অবজেক্টের সাথে নামের সংযুক্তি একটি বাধ্যতামূলক বলে called
নামকরণ পরিষেবার একটি প্রাথমিক উদাহরণ হ'ল ডিএনএস যা মেশিনের নামগুলি আইপি ঠিকানাগুলিতে ম্যাপ করে।
জেএনডিআই ব্যবহার করে অ্যাপ্লিকেশনগুলি যেকোন প্রকারের নামযুক্ত জাভা অবজেক্টগুলি সঞ্চয় এবং পুনরুদ্ধার করতে পারে।
জাভা প্রসঙ্গে এটি কনফিগারেশন ফাইলগুলিতে ব্যবহার করা যেতে পারে যেখানে আপনি হার্ড-কোড পরিবেশ নির্দিষ্ট ভেরিয়েবলগুলি চান না।
বসন্ত উদাহরণ:
বসন্ত প্রসঙ্গে ফাইল
<bean id="WSClientConfig" class="com.example.BaseClientConfigImpl">
<property name="protocol">
<jee:jndi-lookup jndi-name="java:comp/env/protocol" />
</property>
<property name="endpoint">
<jee:jndi-lookup jndi-name="java:comp/env/endpoint" />
</property>
<property name="requestPath">
<jee:jndi-lookup jndi-name="java:comp/env/requestPath" />
</property>
টমক্যাট প্রসঙ্গ ফাইল
<Environment name="protocol" type="java.lang.String" value="https://"/>
<Environment name="endpoint" type="java.lang.String" value="172.0.0.1"/>
<Environment name="requestPath" type="java.lang.String" value="/path/to/service"/>
জেএনডিআই কেবলমাত্র একটি নামে একটি সংস্থান তৈরির সরলীকরণের অনুমতি দেয় । সুতরাং, সুবিধার্থে / সুরক্ষা / ইত্যাদির জন্য এটি অনেক বিশদ গোষ্ঠী 1। (ওরফে বিমূর্ত স্তর)
অনুধাবন করার জন্য: একটি বৈশিষ্ট্য তালিকা সেট করুন যা জেন্ডি প্রসঙ্গ ইন্টারফেসে পূর্বনির্ধারিত ক্ষেত্রগুলির সাথে মিলে যায়। (এই বৈশিষ্ট্যগুলি jndi সম্পাদনের জন্য সেটিংস নির্দিষ্ট করে; তবে * অনুসন্ধানের নাম নয়)
Properties props = new Properties();
//field Context.INITIAL_CONTEXT_FACTORY => property name java.naming.factory.initial
//field Context.PROVIDER_URL => property name java.naming.provider.url
props.load(new FileInputStream("*properties file*")); //prop file in this case
Context ctx = new InitialContext(props);
Object o = ctx.lookup("*name of resource*");
আদর্শভাবে, আপনার প্রতিষ্ঠানে এলডিএপি ডিরেক্টরি, ডিএনএস, ইত্যাদি বজায় রাখার জন্য একটি বিশেষ ক্রিয়াকলাপ উপস্থিত থাকবে (সুতরাং একটি ইউনিফাইড একক ম্যাপিং সেট পরিষেবাগুলি, তাত্পর্য হ্রাস করে)
জেএনডিআই পরিষেবা সরবরাহকারীদের তালিকা: https://www.ibm.com/support/ জ্ঞানসেন্টার/en/SSVSD8_8.4.1/com.ibm.websphere.dtx.adapjndi.doc/concepts/c_jndi_JNDI_S सर्विस_প্রাইভাইডার_ইচটিএম