জ্যাক্স-আরএসে সরবরাহকারীর অর্থ কী?


110

জ্যাকস-আরএস সরবরাহকারী কী এবং '@ প্রোভাইডার' টীকাটি কী তা আমাকে কেউ ব্যাখ্যা করতে পারেন? আমি ডকুমেন্টেশন পড়ছি কিন্তু আমি তা পেতে পারি না।
যদি এমন সংস্থাগুলি শ্রেণি রয়েছে যা আগত অনুরোধগুলিতে পরিষেবা দেয় তবে সরবরাহকারীরা কী করবেন? আমি যখন অবিচ্ছিন্ন রিসোর্স ক্লাস তৈরি করি (প্রতি অনুরোধ নয় এমনটি) তখন তারা কীভাবে সিঙ্গলটন রিসোর্স ক্লাস থেকে আলাদা? নাকি এই ক্লাসগুলিও সরবরাহকারী?


এটির সাথে যেতে: জ্যাকস-আরএস ডকুমেন্ট কেন "সরবরাহকারী" অধ্যায়ের প্রথম অনুচ্ছেদে এটি ব্যাখ্যা করে না understanding বোঝার সন্ধান করার সময় আমি যে যৌক্তিক পৃষ্ঠাটি ঘুরিয়েছিলাম। জ্যাকস-আরএস ডকুমেন্টেশন পিডিএফ
জনাথন কোমার

উত্তর:


138

সরবরাহকারীরা জ্যাক্স-আরএস রানটাইমকে প্রসারিত ও কাস্টমাইজ করার সহজ উপায়। আপনি তাদের প্লাগইন হিসাবে ভাবতে পারেন যা (সম্ভাব্য) রানটাইমের আচরণকে পরিবর্তিত করে, (প্রোগ্রাম সংজ্ঞায়িত) লক্ষ্যগুলির একটি সেট অর্জন করতে।

সরবরাহকারী সংস্থান ক্লাসগুলির মতো নয় , ধারণাগতভাবে, সংস্থার মধ্যবর্তী স্তরে এবং জ্যাকস-আরএস বাস্তবায়নের স্তরে রয়েছে। যদি এটি সহায়তা করে তবে আপনি সেগুলি ডিভাইস ড্রাইভারের মতো একই আলোতে (ব্যবহারকারী এবং কার্নেল স্পেসের মধ্যে বিদ্যমান) ভাবতে পারেন। এটি একটি বিস্তৃত সাধারণীকরণ।

বর্তমান জ্যাক্স-আরএস স্পেসিফিকেশন দ্বারা সংজ্ঞায়িত তিনটি শ্রেণীর সরবরাহকারী রয়েছে। তাদের মধ্যে সাধারণতা হ'ল সমস্ত সরবরাহকারী অবশ্যই @ প্রবাইডার টিকা দ্বারা চিহ্নিত করতে হবে এবং কনস্ট্রাক্টর ঘোষণার জন্য নির্দিষ্ট নিয়মগুলি মেনে চলতে হবে। তা ছাড়াও বিভিন্ন সরবরাহকারীর ধরণের অতিরিক্ত টিকা থাকতে পারে এবং বিভিন্ন ইন্টারফেস প্রয়োগ করবে।


সত্তা সরবরাহকারী

এই সরবরাহকারীরা তাদের জাভা অবজেক্টের সমতুল্যতে ডেটা উপস্থাপনের (যেমন এক্সএমএল, জেএসএন, সিএসভি) ম্যাপিং নিয়ন্ত্রণ করে।

প্রসঙ্গ সরবরাহকারী

এই সরবরাহকারীরা কনটেক্সট এনটেশনগুলির মাধ্যমে সংস্থানগুলি অ্যাক্সেস করতে পারে এমন প্রসঙ্গে নিয়ন্ত্রণ করে।

ব্যতিক্রম সরবরাহকারী

এই সরবরাহকারীরা JAX-RS প্রতিক্রিয়া দৃষ্টান্তে জাভা ব্যতিক্রমগুলির ম্যাপিং নিয়ন্ত্রণ করে।


আপনার রানটাইমটি এমন অনেকগুলি পূর্বনির্ধারিত সরবরাহকারীর সাথে উপস্থিত হবে যা কার্যকারিতার একটি বেস স্তর বাস্তবায়নের জন্য দায়বদ্ধ (যেমন এক্সএমএল থেকে ম্যাপিং করা, সর্বাধিক সাধারণ ব্যতিক্রমগুলি অনুবাদ করা ইত্যাদি ইত্যাদি)। আপনি প্রয়োজন হিসাবে আপনার নিজের সরবরাহকারী তৈরি করতে পারেন।

Jax-আরএস স্পেসিফিকেশন এই বিভিন্ন প্রদানকারী ধরনের এবং তারা কি (অধ্যায় 4 দেখুন) না আপ পড়ার জন্য একটি ভাল রেফারেন্স।


ধন্যবাদ। আমি মনে করি আমি জিনিসটির ধারণা পেয়েছি =)
আর্টেম মোসকালেভ

ঠিক আছে @ পার্সপশন। এটি সত্যিই আমার বুঝতে সাহায্য করেছে।
এল-সামুয়েলস

ভাল করে বুঝিয়েছি। যদিও একটি প্রশ্ন - @ প্রোভাইডার বাস্তবায়ন javax.ws.rs.core এর প্রয়োগ থেকে আলাদা কীভাবে? ওয়েব.এক্সএমএল-তে init প্যারামের (jersey.config.server.provider.classnames) মাধ্যমে ইনফেকশন দেওয়া ফিচার ইন্টারফেস? অর্ডার কীভাবে নিয়ন্ত্রিত হয়?
অ্যান্ডি ডুফ্রেসনে

Jax-আরএস স্পেসিফিকেশন এর সর্বশেষ সংস্করণ নোট (সংস্করণ 2.1 ফাইনাল রিলিজ জুলাই 13, 2017) download.oracle.com/otn-pub/jcp/jaxrs-2_1-final-spec/...
burntsugar

13

@Provider টীকা কিছু আগ্রহের যে জন্য ব্যবহার করা হয় Jax-আরএস রানটাইম যেমন MessageBodyReader এবং MessageBodyWriter । এইচটিটিপি অনুরোধের জন্য, বার্তাবোডিআরিডারটি কোনও HTTP অনুরোধ সত্তা বডিটি পদ্ধতি পরামিতিতে ম্যাপ করতে ব্যবহৃত হয়। প্রতিক্রিয়া দিকে, একটি রিটার্ন মান একটি এইচটিটিপি রেসপন্স সত্তা সংস্থায় মেসেজবিডিউইটার ব্যবহার করে ম্যাপ করা হয়। যদি অ্যাপ্লিকেশনটিকে অতিরিক্ত মেটাডেটা যেমন HTTP শিরোনাম বা ভিন্ন স্ট্যাটাস কোড সরবরাহ করতে হয় তবে কোনও পদ্ধতি কোনও প্রতিক্রিয়া ফিরিয়ে দিতে পারে যা সত্তাকে আবৃত করে এবং এটি প্রতিক্রিয়া ব্যবহার করে তৈরি করা যেতে পারে। রেসপন্সবিল্ডার

@ প্রোভাইডার টীকাটি আপনাকে কাঁচা এক্সএমএল স্তরে আগত এবং বহির্গামী বার্তাগুলি পরীক্ষা করার ক্ষমতা দেয় এবং এইভাবে সরবরাহকারী ক্লায়েন্টে প্রেরণের প্রতিপক্ষ।


6

ফিল্টারিং-অনুরোধ / প্রতিক্রিয়া, ব্যতিক্রম হ্যান্ডলিং এর মতো নির্দিষ্ট ক্রিয়াকলাপ করার জন্য জ্যাক-আরএসের নিজস্ব ডিফল্ট বাস্তবায়ন যুক্তি রয়েছে। তবে এটি ব্যবহারকারীদের পাশাপাশি তাদের নিজস্ব বাস্তবায়ন সরবরাহ করতে দেয়।

আমাদের নিজস্ব বাস্তবায়ন সরবরাহ করতে আমাদের যথাযথ ক্লাসগুলি @ প্রোভাইডার টিকা সহ নির্দিষ্ট করে প্রয়োগ করতে হবে।

জ্যাকস-আরএস @ প্রোভাইডার টিকা রচনার জন্য এই জাতীয় ব্যবহারকারীর দ্বারা সংজ্ঞায়িত প্রয়োগের অস্তিত্ব খুঁজে পেতে স্ক্যানিংয়ের এক দফায় কাজ করবে।

উদাহরণ স্বরূপ:

...
@Provider
public class AppExceptionMapper implements ExceptionMapper<Throwable> {
...

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