সার্ভলেট 2.5 এবং 3 এর মধ্যে পার্থক্য কী?


92

আমি জে 2 ই ই কোডটি ঘূর্ণন করছি যা সার্লেলেট 2.5 এর সাথে মেনে চলে এবং আমি ভাবছি যে 2.5 এবং 3 এর মধ্যে প্রধান পার্থক্যগুলি কী official সরকারী সূর্য ডক্স এবং ব্যক্তিগত অভিজ্ঞতার জন্য পয়েন্টারগুলি সবচেয়ে প্রশংসিত।

আপাতত আমার সাথে 3 নিয়ে নিজেকে নিয়ে না থাকলে, কেবল তাই বলুন। ধন্যবাদ!


4
+1 কেবল উত্তরের জন্য অপেক্ষা করছে :)
এটোরাস

উত্তর:


150

হালনাগাদ

আপডেট হিসাবে এবং আরও সুস্পষ্টভাবে বোঝার জন্য, এগুলি সার্লেলেট 2.5 এবং 3 এর মধ্যে মূল পার্থক্য (আমি পরিপূর্ণ হওয়ার চেষ্টা করছি না, আমি কেবল সবচেয়ে আকর্ষণীয় অংশগুলি উল্লেখ করছি):

সার্লেটস, ফিল্টার এবং শ্রোতার ঘোষণার জন্য টিকা (বিকাশের সহজ)

সার্ভলেট ২.৫-এ, একটি আরআইডি প্যারামিটার সহ একটি সার্লেট ঘোষণা করার জন্য আপনাকে এটি ওয়েব.এক্সএমএল এ যুক্ত করতে হবে :

<servlet>
    <servlet-name>myServlet</servlet-name>
    <servlet-class>my.server.side.stuff.MyAwesomeServlet</servlet-class>
    <init-param>
        <param-name>configFile</param-name>
        <param-value>config.xml</param-value>
    </init-param>
</servlet>

<servlet-mapping>
    <servlet-name>myServlet</servlet-name>
    <url-pattern>/path/to/my/servlet</url-pattern>
</servlet-mapping>

সার্ভলেট 3 এ, ওয়েব.এক্সএমএল alচ্ছিক এবং আপনি এক্সএমএলের পরিবর্তে টিকা ব্যবহার করতে পারেন। একই উদাহরণ:

@WebServlet(name="myServlet",
    urlPatterns={"/path/to/my/servlet"},
    initParams={@InitParam(name="configFile", value="config.xml")})
public class MyAwesomeServlet extends HttpServlet { ... }

ফিল্টারগুলির জন্য, আপনাকে সার্ভলেট 2.5 এ ওয়েব.এক্সএমএল এ যুক্ত করতে হবে :

<filter>
    <filter-name>myFilter</filter-name>
    <filter-class>my.server.side.stuff.MyAwesomeServlet</filter-class>
</filter>
<filter-mapping>
    <filter-name>myFilter</filter-name>
    <url-pattern>/path/to/my/filter</url-pattern>
</filter-mapping>

সার্ভলেট 3 এ টিকা ব্যবহার করে সমান:

@ServletFilter(name="myFilter", urlPatterns={"/path/to/my/filter"})
public class MyAwesomeFilter implements Filter { ... }

শ্রোতার জন্য (এই ক্ষেত্রে একটি সার্লেটলেট কনটেক্সটলাইজনার), সার্ভলেট 2.5 এ:

<listener>
    <listener-class>my.server.side.stuff.MyAwesomeListener</listener-class>
</listener>

টীকাগুলি ব্যবহার করে একই:

@WebServletContextListener
public class MyAwesomeListener implements ServletContextListener { ... }

ওয়েব.এক্সএমএল (পরিবহনযোগ্যতা) এর মডুলারাইজেশন

  • সার্ভলেটগুলি 2.5 এ কেবলমাত্র এক মনোলিথিক ওয়েব.এক্সএমএল ফাইল রয়েছে।
  • সার্লেটলেট 3-এ, প্রতিটি "লোডযোগ্য" জারটিতে তার মেটা-আইএনএফ ডিরেক্টরিতে একটি ওয়েব- ফ্রেগমেন্ট.এক্সএমএল থাকতে পারে সার্লেটলেট, ফিল্টার ইত্যাদি উল্লেখ করে এটি লাইব্রেরি এবং ফ্রেমওয়ার্কগুলিকে তাদের নিজস্ব সার্লেট বা অন্যান্য অবজেক্ট নির্দিষ্ট করার অনুমতি দেয়।

প্রারম্ভিক সময়ে সার্লেটস, ফিল্টার এবং শ্রোতার গতিশীল নিবন্ধকরণ (প্লাগবিলিটি)

সার্ভলেট 3, একটি ServletContextListenerপরিবর্তনশীল সার্ভলেট ফিল্টার এবং নিম্নলিখিত পদ্ধতি ব্যবহার করে শ্রোতাকে যোগ করা যোগ করতে পারেন SevletContext: addServlet(), addFilter()এবংaddListener()

অ্যাসিক্রোনাস সমর্থন

উদাহরণ: বলুন যে কিছু সার্লেট পাত্রে তার থ্রেড পুলে পাঁচটি থ্রেড রয়েছে এবং অনুরোধ অনুযায়ী কার্যকর করার জন্য একটি সময়সাপেক্ষ প্রক্রিয়া রয়েছে (একটি জটিল এসকিউএল কোয়েরির মতো)।

  • সার্ভলেট 2.5 সঙ্গে এই সার্ভলেট ধারক প্রাপ্তিসাধ্য থ্রেডের রান আউট হলে একই সময়ে পাঁচটি অনুরোধ এবং পাঁচটি প্রাপ্তিসাধ্য থ্রেড প্রক্রিয়া কাজ শুরু পায়, কারণ থ্রেড না হওয়া অবধি ফিরবে না service()(অথবা doGet(), doPost()ইত্যাদি) শুরু থেকে কার্যকর শেষ এবং একটি প্রতিক্রিয়া ফেরত।

  • সার্লেটস 3.0.০ সহ, দীর্ঘ-সময় প্রক্রিয়াটি অন্য থ্রেডে অর্পণ করা যেতে পারে এবং service()প্রতিক্রিয়া পাঠানোর আগে শেষ করা উচিত (এখন প্রতিক্রিয়াটি সর্বশেষতম থ্রেড দ্বারা প্রেরণ করা হবে)। এইভাবে থ্রেড নতুন প্রতিক্রিয়া পেতে বিনামূল্যে।

অ্যাসিক্রোনাস সমর্থনের একটি উদাহরণ:

পরিবেশন 2.5:

public class MyAwesomeServlet extends HttpSerlvet {

    @Override
    public void doGet(HttpServletRequest request, HttpServletResponse response) {
        // ...

        runSlowProcess();
        // no async support, thread will be free when runSlowProcess() and
        // doGet finish

        // ...
    }

}

সার্লেটস 3:

@WebServlet(name="myServlet",
             urlPatterns={"/mySlowProcess"},
             asyncSupported=true) // asyncSupported MUST be specified for
                                  // servlets that support asynchronous
                                  // processing
public class MyAwesomeServlet extends HttpSerlvet {

    @Override
    public void doGet(HttpServletRequest request, HttpServletResponse response) {


        // an AsyncContext is created, now the response will be completed
        // not when doGet finalizes its execution, but when
        // myAsyncContext.complete() is called.
        AsyncContext myAsyncContext = request.startAsync(request, response);

        // ...

        // myAsyncContext is passed to another thread
        delegateExecutionToProcessingThread(myAsyncContext);

        // done, now this thread is free to serve another request
    }

}

// ... and somewhere in another part of the code:

public class MyProcessingObject {

    public void doSlowProcess() {

        // ...

        runSlowProcess();
        myAsyncContext.complete(); // request is now completed.

        // ...

    }

}

AsyncContextঅনুরোধ অবজেক্ট, প্রতিক্রিয়া অবজেক্ট এবং শ্রোতা যুক্ত করার প্রক্রিয়াটি শেষ হওয়ার পরে তাদের সূচিত করার জন্য ইন্টারফেসেরও পদ্ধতি রয়েছে।

প্রোগ্রামেটিক লগইন এবং লগআউট (সুরক্ষা বর্ধন)

সার্ভলেট 3 এ, ইন্টারফেসটি HttpServletRequestদুটি নতুন পদ্ধতি যুক্ত করা হয়েছে: login(username, password)এবং logout()

আরও তথ্যের জন্য, জাভা EE 6 API এ দেখুন


4
এটি উল্লেখযোগ্য যে, সার্লেট ৩.০৯৯৯ ডিসেম্বর ২০০৯ এ ফিরে মুক্তি পেয়েছিল। প্রশ্ন এবং বর্তমান গৃহীত উত্তরগুলির উত্তরগুলি সেগুলির পূর্বে রয়েছে।
eis

4
@ServletFilter@WebFilterএবং @WebServletContextListener@WebListenerসরকারী চশমা মধ্যে AFAICT।
lapo

21

সার্ভলেট 3.0 এখনও প্রকাশিত হয় নি, তবে দেখে মনে হচ্ছে এটি খুব কাছে। 3.0 এর মধ্যে সর্বাধিক গুরুত্বপূর্ণ পরিবর্তনগুলি হ'ল: সাশ্রয়যোগ্যতা, উন্নয়নের সহজতা, অ্যাসিঙ্ক সার্লেট, সুরক্ষা। এগুলি আপনার পক্ষে গুরুত্বপূর্ণ কিনা তা আমার পক্ষে বলা অসম্ভব।

এর মধ্যে সর্বাধিক উল্লেখযোগ্য হ'ল অ্যাসিক্রোনাস সার্লেটগুলির সমর্থন। এখানে একটি নিবন্ধ যা এটি বিস্তারিতভাবে বর্ণনা করে। সম্পূর্ণ স্পেসিফিকেশন এখানে ডাউনলোড করা যাবে


পবিত্র বোকা, দুর্দান্ত। অ্যাসিঙ্ক স্টাফ দুর্দান্ত দেখায়, তথ্যের জন্য ধন্যবাদ। আমি সবেমাত্র এর সাথে সাদৃশ্যপূর্ণ কিছু কোডিং শেষ করেছি।
সর্বোচ্চ এ।

@ এডি এটি ২০০৯ সালের ডিসেম্বর মাসে প্রকাশিত হয়েছিল ( jcp.org/aboutJava/communeprocess/final/jsr315 )
মউহিজ

4
আপডেট আপডেট সার্লেট 3.1 স্পেস 2013-05 প্রকাশিত। নতুন কি দেখুন ।
বাসিল বাউর্ক

13

ডন যেমন উল্লেখ করেছে, উন্নতি এবং সংযোজনের মূল ক্ষেত্রগুলি হ'ল:

  • প্লাগবিলিটি (ওয়েব.এক্সএমএল মডুলারাইজিং)
  • বিকাশের স্বাচ্ছন্দ্য (টীকাগুলি, জেনেরিক্স, কনফিগারেশন ওভার কনভেনশন)
  • অ্যাসিঙ্ক সার্ভলেট সমর্থন (ধূমকেতু স্টাইল প্রোগ্রামিং, অ্যাসিঙ্ক ওয়েব প্রক্সি, অ্যাসিঙ্ক ওয়েব পরিষেবাদির জন্য)
  • সুরক্ষা বর্ধন (প্রোগ্রাম্যাটিক লগইন / লগআউট)
  • অন্যরা (এইচটিপিপি কেবল কুকি, সেশন ট্র্যাকিং, ওয়ার ওয়ার্ডে ইজেবি)

জাভাওন ২০০৮ উপস্থাপনাটি দেখুন " জাভা সার্লেটলেট 3.0 এপিআই: নতুন এবং আকর্ষণীয় কী " What's


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