শিম এমন একটি জাভা শ্রেণি যা পদ্ধতির নাম যা সম্পত্তি , পদ্ধতিগুলির জন্য জাভা বিন নির্দেশিকা (যাকে ডিজাইনের ধরণগুলিও বলা হয়) অনুসরণ করে এবং ইভেন্টগুলির। সুতরাং, শিম শ্রেণীর যে কোনও পাবলিক পদ্ধতি যা কোনও সংখ্যার সংজ্ঞার অংশ না, সেগুলি শিম পদ্ধতি। সর্বনিম্ন, একটি জাভা শ্রেণি এমনকি একক সদস্য হিসাবে সম্পত্তি (অবশ্যই পাবলিক গেটর এবং সেটটারের সাথে প্রয়োজনীয়), একমাত্র সদস্য হিসাবে পাবলিক পদ্ধতি বা কেবলমাত্র একটি জন ইভেন্ট ইভেন্ট শোনার নিবন্ধকরণ পদ্ধতি জাভা বিন be তদতিরিক্ত, সম্পত্তিটি হয় কেবলমাত্র পঠনযোগ্য সম্পত্তি হতে পারে (একটি গিটার পদ্ধতি রয়েছে তবে সেটার নেই) বা কেবল লেখার সম্পত্তি (কেবলমাত্র সেটার পদ্ধতি রয়েছে)। যে কোনও বিনবক্স সরঞ্জাম বা ধারককে দৃশ্যমান হতে জাভা বিনকে একটি সর্বজনীন শ্রেণি হওয়া দরকার। ধারকটি অবশ্যই এটি ইনস্ট্যান্ট করতে সক্ষম হবে; সুতরাং, এটি একটি পাবলিক কনস্ট্রাক্টর অবশ্যই থাকতে হবে। JavaBeans স্পেসিফিকেশনকোনও ধারক এটি ইনস্ট্যানিয়েট করার জন্য কোনও শিমের সার্বজনীন শূন্য-আরোগ্য নির্মাণকারী, সুস্পষ্ট বা ডিফল্ট থাকতে হবে না। আপনি যদি সিরিয়ালযুক্ত উদাহরণ সহ কোনও ফাইল সরবরাহ করতে পারেন (এক্সটেনশন .ser সহ), একটি বেনবক্স সরঞ্জাম সেই ফাইলটি প্রোটোটাইপ শিমটি ইনস্ট্যান্ট করতে ব্যবহার করতে পারে। অন্যথায়, শিমের অবশ্যই প্রকাশ্য বা ডিফল্ট কোনও শূন্য-আরোগ্য নির্মাণকারী থাকতে হবে।
শিমটি একবার ইনস্ট্যান্ট হয়ে গেলে জাভা বিন এপিআই (জাভা.বিয়ানস। *) এটি আত্মপরিচয় করতে পারে এবং এতে পদ্ধতি কল করতে পারে। ইন্টারফেসটি BeanInfo প্রয়োগ বা কোনও BeanInfo বাস্তবায়ন, সিম্পলবিয়ানফো ক্লাসের কোনও শ্রেণি উপলব্ধ না হলে, অন্তর্নিয়ন্ত্রণ একটি লক্ষ্য বিন দ্বারা সমর্থিত পদ্ধতিগুলি অধ্যয়ন করার জন্য প্রতিবিম্ব (অন্তর্নিহিত অন্তঃকরণ) ব্যবহার করে এবং তারপরে ছাড়ের জন্য সাধারণ নকশার ধরণগুলি (নির্দেশিকা) প্রয়োগ করে এই বৈশিষ্ট্যগুলি কী কী বৈশিষ্ট্য, ইভেন্ট এবং সর্বজনীন পদ্ধতিগুলি সমর্থন করে। যদি কোনও শ্রেণি ইন্টারফেসটি BeanInfo প্রয়োগ করে (একটি বিন বিনের জন্য, এটি অবশ্যই FooBeanInfo নামকরণ করা উচিত) উপলব্ধ থাকে, এপিআই অন্তর্নিহিত অন্তর্নিবেশকে বাইপাস করে এবং পাবলিক পদ্ধতিগুলি (getPropertyDescriptor (), getMethodDescripttors (), getEventSetDescripttors ()) পেতে এই শ্রেণীর জন্য তথ্য। সিম্পলবিয়ানফোন প্রসারিত কোনও শ্রেণি যদি উপলব্ধ থাকে, সিম্পলবিয়ানফোন পাবলিক পদ্ধতিগুলির (গেটপ্রোপার্টিডিজিপ্টর (), গেটমথডিসিপেক্টর (), getEventSetDescripttors ()) ওভাররাইড করা হয়েছে তার উপর নির্ভর করে, তথ্যগুলি পেতে সেগুলি ওভাররাইড হওয়া পদ্ধতিগুলি ব্যবহার করবে; এমন কোনও পদ্ধতির জন্য যা ওভাররাইড করা হয় না, এটি সম্পর্কিত অন্তর্নিবেশের সাথে সম্পর্কিত হবে। কোনও শিমের উপর কোনও অন্তর্নিহিত অন্তর্মুখীতা চালিত না হওয়া সত্ত্বেও কোনও শিমকে তাত্ক্ষণিকভাবে চালিত করা দরকার। সুতরাং, একটি পাবলিক জেরি-আরগস কনস্ট্রাক্টরের প্রয়োজনীয়তা। তবে অবশ্যই এটির স্বীকৃতি পাওয়ার জন্য সিরিয়ালাইজেবল বা বাহ্যিক ইন্টারফেসের প্রয়োজনীয়তা নেই। তবে জাভা বিন স্পেসিফিকেশন বলছে, 'আমরা চাই এটি একটি ক্ষুদ্র বিনের সাধারণ ক্ষেত্রে "তুচ্ছ" হতে চাই যা কেবল তার অভ্যন্তরীণ অবস্থাটি সংরক্ষণ করতে চায় এবং এটি সম্পর্কে ভাবতে চায় না।' সুতরাং, সমস্ত মটরশুটি অবশ্যই সিরিয়ালাইজেবল বা বহিরাগতযোগ্য ইন্টারফেস প্রয়োগ করতে হবে। সামগ্রিকভাবে, জাভাবীনের স্পেসিফিকেশন কোনও শিমের গঠন কী তা সম্পর্কে কঠোর এবং দ্রুত নয়। "জাভাবীনের উপাদানগুলি লেখা আশ্চর্যরকম সহজ You একটি বিন - সরঞ্জামগুলি যেগুলি মটরশুটি ব্যবহার করে তা আপনার শিমকে চিনতে ও ব্যবহার করতে সক্ষম হবে। তুচ্ছভাবে, এমনকি নিম্নলিখিত শ্রেণিটি একটি জাভা বিন,
public class Trivial implements java.io.Serializable {}
বলুন, শিমের কনস্ট্রাক্টরের কিছু প্যারামিটার রয়েছে। ধরুন কিছু সাধারণ ধরণের। ধারকটি তাদের কী কী মূল্য নির্ধারণ করতে পারে তা নাও জানতে পারে; এমনকি যদি এটি হয় তবে ফলাফলটি পুনরায় ব্যবহারযোগ্য হবে না। এটি কেবল তখনই বুদ্ধিমান হতে পারে যখন ব্যবহারকারী বসন্ত মটরশুটি হিসাবে এনোটেশন বা এক্সএমএল কনফিগারেশন ফাইলগুলি কনফিগার (মানগুলি নির্দিষ্ট করে) করতে পারেন। এবং ধরুন কিছু প্যারামিটারগুলি শ্রেণি বা ইন্টারফেসের ধরণের। আবার, ধারকটি এটি নির্ধারণ করতে কোন মানগুলি জানত না। এটি কেবল তখনই বোধগম্য হতে পারে যখন ব্যবহারকারী টীকাগুলি বা এক্সএমএল কনফিগারেশন ফাইলগুলি দ্বারা কনফিগার করতে পারেন (নির্দিষ্ট বিষয়গুলি নির্দিষ্ট করুন)। তবে বসন্তে (এক্সএমএল কনফিগারেশন ফাইলের মাধ্যমে), কনস্ট্রাক্টর আর্গুমেন্টগুলিকে নির্দিষ্ট স্ট্রাক্ট (স্ট্রিং নাম সহ) নির্ধারণ করা (কনস্ট্রাক্টর আর্গুমেন্টের বৈশিষ্ট্য বা উপাদান) টাইপসেফ নয়; এটি মূলত রিসোর্স ইঞ্জেকশনের মতো। অন্যান্য বসন্ত মটরশুটি (যা সহযোগী হিসাবে পরিচিত; একটি কনস্ট্রাক্টর আর্গুমেন্ট উপাদান হিসাবে উপাদান মাধ্যমে) রেফারেন্স করা মূলত নির্ভরতা ইনজেকশন এবং তাই টাইপসেফ হয়। স্পষ্টতই, একটি নির্ভরতা (সহযোগী শিম) এর ইনজেকশন পরামিতিগুলির সাথে কোনও কনস্ট্রাক্টর থাকতে পারে; এই ইনজেকশন নির্ভরতা (ies) এর সাথে প্যারামিটার ইত্যাদির সাথে কনস্ট্রাক্টর থাকতে পারে। এই দৃশ্যে, শেষ অবধি, আপনার কিছু শিমের ক্লাসের প্রয়োজন হবে (যেমন, মাইবিয়ান.class) যা ধারক কেবল নতুন মাইবিয়ান () কল করে কনস্ট্রাক্টরের উপর নির্ভরতা ইনজেকশনের মাধ্যমে অন্যান্য সহযোগী মটরশুটি তৈরি করার আগে এটি ইনস্ট্যান্ট করতে পারে — সুতরাং, প্রয়োজনীয়তার জন্য মটরশুটি জনসাধারণের শূন্য-আরোগ্য নির্মাণকারী আছে। মনে করুন, যদি কোনও ধারক নির্ভরতা ইনজেকশন সমর্থন করে না এবং / অথবা কিছু টীকা বা এক্সএমএল কনফিগারেশন ফাইলগুলি যেমন বসন্তের মতো নির্মাণের জন্য সাধারণ ধরণের মান নির্ধারণের অনুমতি দেয় না, শিম নির্মাতাদের পরামিতি থাকা উচিত নয়। এমনকি একটি বসন্ত মটরশুটি অ্যাপ্লিকেশনটিতে জনসাধারণের শূন্য-আরোগ্য কনস্ট্রাক্টর থাকতে কিছু শিমের প্রয়োজন হবে (উদাহরণস্বরূপ, এমন একটি দৃশ্যে যেখানে আপনার বসন্ত অ্যাপ্লিকেশনটিতে কেবল সাধারণ ধরণের নির্মাতা যুক্তি হিসাবে কোনও বিন নেই)।
জেএসএফ পরিচালিত মটরশুটি একটি ওয়েব পাত্রে চালিত। এগুলি হয় @ ম্যানেজডবিয়ান টিকা দিয়ে বা কোনও অ্যাপ্লিকেশন কনফিগারেশন রিসোর্স ফাইল পরিচালিত-বিন.এক্সএমএল দ্বারা কনফিগার করা যায়। তবে এটি কেবল রিসোর্স ইনজেকশনের মাধ্যমে ইনজেকশন সমর্থন করে (টাইপসেফ নয়); কনস্ট্রাক্টরগুলিতে ইনজেকশনের জন্য উপযুক্ত নয়। দ্যJSF বৈশিষ্টপরিচালিত মটরশুটিগুলির অবশ্যই একটি সর্বজনীন শূন্য-যুক্তি নির্মাণকারী থাকতে হবে। আরও বলা হয়েছে, “এই স্পেসিফিকেশনের ২.৩ সংস্করণ অনুসারে, এই বিভাগে উল্লিখিত ম্যানেজ করা শিমের সুবিধাটি কঠোরভাবে নিরুত্সাহিত করা হয়েছে। একই সমস্যা সমাধানের জন্য আরও ভাল এবং আরও একাত্মকভাবে সংহত সমাধান হ'ল জেএসআর -335-তে উল্লিখিত কনটেক্সটস এবং ডিপেন্ডেন্সি ইনজেকশন (সিডিআই) ব্যবহার করা। "অন্য কথায়, সিডিআই পরিচালিত মটরশুটি ব্যবহার করা হবে, যা কনস্ট্রাক্টরদের উপর টাইপসএফ নির্ভরতা ইনজেকশন সরবরাহ করে offers বসন্ত মটরশুটি থেকে সিডিআই স্পেসিফিকেশন ম্যানেজড বিনস স্পেসিফিকেশন গ্রহণ করে, যা কেবল ওয়েব স্তরের নয়, জেই প্ল্যাটফর্মের সমস্ত ধারকগুলিতে প্রযোজ্য Thus সুতরাং, ওয়েব ধারকটিকে সিডিআই স্পেসিফিকেশন বাস্তবায়ন করতে হবে।
পরিচালিত বিন স্পেসিফিকেশন থেকে এখানে একটি নিষ্কাশন
"পরিচালিত মটরশুটি হ'ল নূন্যতম প্রয়োজনীয়তা সহ ধারক-পরিচালিত অবজেক্টস, অন্যথায় সংক্ষেপে" POJOs "(সাধারণ পুরাতন জাভা অবজেক্টস) এর অধীনে পরিচিত ... এগুলিকে জাভা এসই প্ল্যাটফর্মে পাওয়া জাভাবিয়ান উপাদান উপাদানটির জাভা ইই প্ল্যাটফর্ম-বর্ধিত সংস্করণ হিসাবে দেখা যেতে পারে ...। পাঠক এটি মিস করবেন না যে ম্যানেজড শিমের জাভাসার্ভার ফেসস (জেএসএফ) প্রযুক্তিতে পাওয়া সমকামী সুবিধার পূর্বস্বর আছে ... এই স্পেসিফিকেশনে সংজ্ঞায়িত মটরশুটি জেএসএফ-এ পাওয়া লোকদের একটি সাধারণীকরণের প্রতিনিধিত্ব করে; বিশেষত, পরিচালিত মটরশুটি জাভা ইই অ্যাপ্লিকেশনটিতে যে কোনও জায়গায় ব্যবহার করা যেতে পারে, কেবল ওয়েব মডিউলগুলিতেই নয়। উদাহরণস্বরূপ, বেসিক উপাদান মডেলে, পরিচালিত বিনগুলি অবশ্যই কোনও যুক্তিযুক্ত কনস্ট্রাক্টর সরবরাহ করতে হবে, তবে একটি স্পেসিফিকেশন যা পরিচালিত বিনগুলিতে তৈরি করে, যেমন সিডিআই (জেএসআর -৯৯৯), সেই প্রয়োজনীয়তাটি শিথিল করতে পারে এবং ম্যানেজ করা শিমগুলি আরও জটিল স্বাক্ষরযুক্ত কনস্ট্রাক্টরকে সরবরাহ করতে দেয়, যতক্ষণ না তারা কিছু সু-সংজ্ঞায়িত নিয়ম মেনে চলে ... একটি পরিচালিত শিম এমনটি হওয়া উচিত নয়: একটি চূড়ান্ত শ্রেণি, একটি বিমূর্ত শ্রেণি, একটি স্থিতিশীল অভ্যন্তর শ্রেণি । একটি নিয়মিত জাভাবিয়ান উপাদানগুলির মতো একটি পরিচালিত বিন বিন্যাসযোগ্য হতে পারে না। " সুতরাং, পরিচালিত মটরশুটিগুলির স্পেসিফিকেশন, অন্যথায় POJOs বা POJO বিন হিসাবে পরিচিত, সিডিআই হিসাবে বর্ধনের অনুমতি দেয়।
সিডিআই স্পেসিফিকেশন হ'ল পরিচালিত মটরশুটিগুলি পুনরায় সংজ্ঞা দেয়: জাভা ইইতে চলাকালীন, একটি শীর্ষ স্তরের জাভা শ্রেণি যদি প্রয়োজনীয়তা পূরণ করে তবে একটি পরিচালিত শিম:
• এটি কোনও অন্তর্গত শ্রেণি নয়। • এটি একটি অ-বিমূর্ত শ্রেণি, বা @ ডেকোরেটর টিকা দেওয়া হয়। • এটি javax.enterprise.inject.spi.Existance বাস্তবায়ন করে না। • এটি @ ভেটোড বা টিকিট @ ভেটোডে কোনও প্যাকেজে টিকা নেই। • এটির একটি উপযুক্ত কনস্ট্রাক্টর রয়েছে: হয়: ক্লাসে কোনও প্যারামিটার না দিয়ে একটি কনস্ট্রাক্টর থাকে, বা ক্লাসটি একটি কনস্ট্রাক্টরকে @ ইনজেক্টটি টিকা হিসাবে ঘোষণা করে।
এই শর্তগুলি পূরণ করে এমন সমস্ত জাভা ক্লাস পরিচালনা করা মটরশুটি হয় এবং এইভাবে কোনও পরিচালিত শিমের সংজ্ঞা দেওয়ার জন্য কোনও বিশেষ ঘোষণার প্রয়োজন হয় না। অথবা
যদি এটি অন্য কোনও জাভা ইই স্পেসিফিকেশন দ্বারা পরিচালিত শিম হিসাবে সংজ্ঞায়িত করা হয় এবং যদি
• এটি কোনও ইজেবি উপাদান-সংজ্ঞায়িত টীকা দিয়ে টীকায়িত করা হয় না বা ইজবি-জার.এক্সএমএলে ইজেবি শিমের শ্রেণি হিসাবে ঘোষিত হয় না।
স্প্রিং শিমের বিপরীতে এটি সাধারণ ধরণের কন্সট্রাক্টরদের সমর্থন করে না, এটি যদি স্প্রিংয়ের মতো এক্সএমএল কনফিগারেশন ফাইল বা কোনও টীকাগুলির সাথে কনফিগারেশন সমর্থন করে তবে সম্ভব হতে পারে।
ইজেবিগুলি একটি ইজেবি পাত্রে চালিত হয়। এর স্পেসিফিকেশনবলেছেন: "একটি সেশনের বিনের উপাদানটি একটি পরিচালিত বিন" "" শ্রেণীর অবশ্যই একটি পাবলিক কনস্ট্রাক্টর থাকতে হবে যে কোনও যুক্তিই গ্রহণ করে না, "এটি উভয় সেশন বিন এবং বার্তা-চালিত শিমের জন্য বলে। সেশনবিয়ান ইন্টারফেস বা সিরিয়ালাইজেবল ইন্টারফেস বাস্তবায়নের প্রয়োজন নেই। " জেএসএফ মটরশুটি হিসাবে একই কারণে, যে EJB3 নির্ভরতা ইনজেকশনটি মূলত রিসোর্স ইনজেকশন, জেএসএফ বিনগুলি যুক্তিযুক্ত কনস্ট্রাক্টরকে সমর্থন করে না, এটি নির্ভরতা ইনজেকশনের মাধ্যমে। তবে, যদি ইজেবি ধারক সিডিআই প্রয়োগ করে, "Oচ্ছিকভাবে: শ্রেণীর একটি থাকতে পারে ইনজেক্ট টীকা সহ অতিরিক্ত কন্সট্রাক্টর মন্তব্য করেছেন, "এটি উভয় সেশন বিন এবং বার্তা চালিত শিমের জন্য বলে কারণ," একটি ইজেবি সিডিআই বিন বিন সংরক্ষণাগারে প্যাকেজড এবং জাভ্যাক্স.এন্টারপ্রাইজ। ইনজেক্টের সাথে টিকা দেওয়া হয়নি et শিম। "