জেএসএফ কেন সার্ভারে ইউআই উপাদানগুলির অবস্থা সংরক্ষণ করে?


108
  1. জেএসএফ ঠিক কোন মুহুর্ত পর্যন্ত সার্ভার সাইডের ইউআই উপাদানগুলির অবস্থা সংরক্ষণ করে এবং ঠিক কখন ইউআই উপাদানটির রাষ্ট্রীয় তথ্য সার্ভারের স্মৃতি থেকে সরানো হয়? অ্যাপ্লিকেশনটিতে লগ-ইন করা ব্যবহারকারী যেমন পৃষ্ঠাগুলি নেভিগেট করে, উপাদানগুলির অবস্থা কি সার্ভারে জমা হতে থাকবে?

  2. ইউআই উপাদানগুলি সার্ভারে রাখার কী লাভ তা আমি বুঝতে পারছি না !? ম্যানেজ করা মটরশুটিগুলিতে সরাসরি বৈধতা / রূপান্তরিত ডেটা পাস করা কি যথেষ্ট নয়? আমি বা আমার এড়াতে চেষ্টা করা উচিত?

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


আপডেট 1:

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


আপডেট 2 (24-02-2013):

একটি দুর্দান্ত খবর যে মোজারা ২.১.১৯ স্টেটহীন মোডে আউট !

এখানে দেখো:

http://weblogs.java.net/blog/mriem/archive/2013/02/08/jsf-going-stateless?force=255

http://java.net/jira/browse/JAVASERVERFACES-2731

http://balusc.blogspot.de/2013/02/stateless-jsf.html

উত্তর:


199

জেএসএফকে সার্ভারের পাশের UI উপাদানগুলির অবস্থা সংরক্ষণ করার দরকার নেই কেন?

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


জেএসএফ কখন কোন পর্যায়ে সার্ভারের পাশের ইউআই উপাদানগুলির অবস্থা সংরক্ষণ করে এবং ঠিক কখন ইউআই উপাদানটির রাষ্ট্রীয় তথ্য সার্ভারের স্মৃতি থেকে সরানো হয়?

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

<context-param>
    <param-name>com.sun.faces.numberOfLogicalViews</param-name>
    <param-value>15</param-value>
</context-param>

আরও দেখুন Mojarra প্রায়শই জিজ্ঞাসিত প্রশ্নাবলী অন্যান্য Mojarra-নির্দিষ্ট প্যারাম এবং এই সংশ্লিষ্ট উত্তরের জন্য com.sun.faces.numberOfViewsInSession com.sun.faces.numberOfLogicalViews বনাম


অ্যাপ্লিকেশনটিতে লগ-ইন করা ব্যবহারকারী যেমন পৃষ্ঠাগুলি নেভিগেট করে, উপাদানগুলির অবস্থা কি সার্ভারে জমা হতে থাকবে?

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

অথবা, যখন রাষ্ট্রীয় সঞ্চয় ক্লায়েন্টে সেট করা থাকে, তখন জেএসএফ সেশনে কোনও কিছুই সঞ্চয় করবে না। আপনি নিম্নলিখিত প্রসঙ্গের পরম দ্বারা এটি করতে পারেন web.xml:

<context-param>
    <param-name>javax.faces.STATE_SAVING_METHOD</param-name>
    <param-value>client</param-value>
</context-param>

এরপরে javax.faces.ViewStateএটি ফর্মের নামের সাথে একটি লুকানো ইনপুট ক্ষেত্রে একটি এনক্রিপ্ট করা স্ট্রিংয়ে সিরিয়ালযুক্ত করা হবে ।


ইউআই উপাদানগুলির স্থিতি সার্ভারের পাশে রাখার সুবিধা কী তা আমি বুঝতে পারি না। ম্যানেজ করা মটরশুটিগুলিতে সরাসরি বৈধতা / রূপান্তরিত ডেটা পাস করা কি যথেষ্ট নয়? আমি কি এড়াতে চেষ্টা করব?

এটি জেএসএফের অখণ্ডতা এবং দৃust়তা নিশ্চিত করার জন্য যথেষ্ট নয়। জেএসএফ নিয়ন্ত্রণের একক প্রবেশ পয়েন্ট সহ একটি গতিশীল কাঠামো। রাজ্য পরিচালনা ব্যতীত, জেএসএফকে বিভিন্ন-এবং সম্ভাব্য ঝুঁকিপূর্ণ-কাজ করতে দেওয়ার জন্য disabled, কোনও নির্দিষ্ট উপায়ে (উদাহরণস্বরূপ ম্যানিপুলেটিং , readonlyএবং renderedবৈশিষ্ট্যগুলি) এইচটিটিপি অনুরোধগুলিকে ফাঁকি দেওয়া / হ্যাক করতে সক্ষম হবে । এটি এমনকি সিএসআরএফ আক্রমণ এবং ফিশিংয়ের ঝুঁকিপূর্ণ হতে পারে।


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

স্মৃতি বিশেষভাবে সস্তা। কেবলমাত্র অ্যাপসভারটিকে যথেষ্ট মেমরি দিন। অথবা যদি নেটওয়ার্ক ব্যান্ডউইথ আপনার কাছে সস্তা হয় তবে কেবল ক্লায়েন্টের দিকে স্টেট সাভিং স্যুইচ করুন। সেরা ম্যাচটি সন্ধান করতে, কেবলমাত্র চাপযুক্ত এবং আপনার ওয়েবপ্যাপটি প্রত্যাশিত সর্বাধিক পরিমাণ সহবর্তী ব্যবহারকারীদের সাথে প্রোফাইল করুন এবং তারপরে সর্বাধিক পরিমাপক মেমরির 125% ~ 150% এপসভারটি দিন।

নোট করুন যে জেএসএফ ২.০ রাষ্ট্র পরিচালনায় অনেক উন্নতি করেছে। এটা তোলে আংশিক রাষ্ট্র রক্ষা করা সম্ভব (উদাহরণ শুধুমাত্র<h:form> থেকে পুরো কাপড় বদলে সংরক্ষণ করা হবে <html>সব শেষ উপায়)। উদাহরণস্বরূপ মোজাররা তা করে। 10 ইনপুট ক্ষেত্রগুলির সাথে একটি গড় ফর্ম (প্রতিটি লেবেল এবং বার্তা সহ) এবং 2 টি বোতাম 1KB এর বেশি লাগে না। সেশনে 15 টি দর্শন সহ, প্রতি সেশনে 15 কেবি এর বেশি হওয়া উচিত নয়। ~ 1000 সমবর্তী ব্যবহারকারী সেশনগুলির সাথে, এটি 15MB এর চেয়ে বেশি হওয়া উচিত নয়।

আপনার উদ্বেগটি অধিবেশন বা অ্যাপ্লিকেশন স্কোপে আসল অবজেক্টগুলিতে (পরিচালিত মটরশুটি এবং / অথবা এমনকি ডিবি সত্তা) আরও বেশি কেন্দ্রীভূত হওয়া উচিত। আমি প্রচুর কোড এবং প্রকল্প দেখেছি যা অগত্যা জাভর স্মৃতিতে পুরো ডাটাবেস টেবিলটিকে একটি সেশন স্কোপড শিমের স্বাদে নকল করে তোলে যেখানে এসকিউএল এর পরিবর্তে জাভা ব্যবহার করা হয় রেকর্ডার / গোষ্ঠী / রেকর্ডের জন্য। ~ 1000 রেকর্ড সহ, এটি সহজেই প্রতি ব্যবহারকারী সেশনে 10 এমবি ছাড়িয়ে যায় ।


1
আপনি # 2 স্পষ্ট করতে পারেন? প্রতিটি অনুরোধে কেন উপাদান গাছটি পুনরায় তৈরি করা যায় না? অনুরোধের মধ্যে আসলে কোন রাষ্ট্রটি সংরক্ষণ করা দরকার এবং কেন? দেখে মনে হচ্ছে অনুরোধগুলির মধ্যে উপাদান গাছ সংরক্ষণ করার একমাত্র কারণটি হবে পারফরম্যান্স।
রায়ান

এখানে আরও কেন্দ্রীভূত প্রশ্ন: স্ট্যাকওভারফ্লো.com
রায়ান ২

আপনার উত্তরটি আমার কাছে খুব স্পষ্ট ছিল! জেএসএফের পারফরম্যান্স এবং স্কেলাবিলিটি সম্পর্কিত সমস্যাগুলির সাথে প্রোগ্রামারের বাস্তবায়নের সাথে অন্তর্নিহিত সম্পর্ক রয়েছে! এটি সঠিকভাবে প্রযুক্তিটি ব্যবহার করা জেনে রাখা দরকার!
লুকাস বাটিস্তুসি

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

আপনার উত্তরটি খুব পরিষ্কার ছিল এবং এর জন্য ধন্যবাদ। জাভাএক্স.ফেসস সেট করা থাকলে JSF ফ্ল্যাশ স্কোপটি অদৃশ্য হয়ে গেল P getFacesContext ()। getExternContext ()। getFlash ()। put ("বিল্ডিংআইড", বিল্ডিংআইড) পাবেন।
মে থেট
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.