ওয়ারগুলি কেন সেশন তথ্য ভাগ করতে পারে না?


11

আমি বেশ কয়েকজন বিকাশকারীকে এই সমস্যার সমাধান অনুসন্ধান করতে দেখেছি: একটি আলাদা ওয়ার থেকে সেশন তথ্য অ্যাক্সেস করা (এমনকি একই EAR এর ভিতরে থাকা অবস্থায়ও) - এখানে কিছু নমুনা রয়েছে: টমক্যাটে বিভিন্ন অ্যাপ্লিকেশনের মধ্যে সেশন স্টেট ভাগ করার কোনও উপায়? , অন্য ওয়েব অ্যাপ্লিকেশনটির অ্যাক্সেস সেশন , বিভিন্ন ওয়ার ফাইল, শেয়ার্ড রিসোর্স , টমক্যাট: দুটি অ্যাপ্লিকেশনের মধ্যে ডেটা কীভাবে ভাগ করবেন? , টমক্যাটে ক্রসকন্টেক্সট বৈশিষ্ট্যটি কী করে? এটি সেশন ভাগ করে নেওয়া সক্ষম করে? এবং তাই ...

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

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

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

এবং কোনও সমাধানই প্রথম (এবং সর্বাধিক গুরুত্বপূর্ণ) প্রশ্নের উত্তর দেয়নি : ওয়ারগুলি সেশনের তথ্য কেন ভাগ করতে পারে না?


1
কেন এটিকে নিম্নমানের করা হয়েছিল তা নিশ্চিত নন, অন্যথায় এটি এসওয়ের পক্ষে আরও ভাল ফিট হতে পারে।
নাটডসেন্ট

3
"সার্লেলেট ২.৩ এপিআই স্পেসিফিকেশন অনুসারে, সেশন ম্যানেজার কেবল ওয়েব মডিউল দ্বারা সেশন স্কোপিং সমর্থন করে same একই ওয়েব মডিউলের কেবল সার্লেটগুলি নির্দিষ্ট সেশনের সাথে সম্পর্কিত ডেটা অ্যাক্সেস করতে পারে।" এটি আবার এইচটিটিপিএসশনে দেখা যাবে - "সেশন তথ্য কেবলমাত্র ওয়েব ওয়েব অ্যাপ্লিকেশন (সার্ভলেট কনটেক্সট) এ স্কোপ করা হয়, সুতরাং একটি প্রসঙ্গে সংরক্ষণ করা তথ্য অন্যটিতে সরাসরি দৃশ্যমান হবে না।" - এটি করা নির্দিষ্টকরণের বিপরীতে।

(আরও ভাল, এইচটিটিপিসেশনের জন্য বর্তমান লিঙ্ক )

@ মিশেলটি, আপনাকে ধন্যবাদ তবে এটি এখনও কেন উত্তর দেয় না।
rvcoutinho

@ নেটডেইন্ট যদিও প্রশ্নটি নির্দিষ্ট প্রযুক্তিগুলির সাথে সম্পর্কিত, তবে আমি বিশ্বাস করি এটি একটি ধারণামূলক প্রশ্ন হওয়ার সম্ভাবনা বেশি ছিল। তারপরে, আমি প্রোগ্রামারদের জন্য সিদ্ধান্ত নিয়েছি।
rvcoutinho

উত্তর:


7

সিওডো-ভার্চুয়াল মেশিনের মতো একটি EAR চিকিত্সা করুন

একটি EAR হ'ল সাধারনত JARs থেকে সাধারণ কনফিগারেশন এবং লাইব্রেরিগুলি ভাগ করে এমন ওয়ার ফাইলগুলির একটি সংগ্রহ is এটি আন্তঃনির্ভরশীল পরিষেবার একটি সংগ্রহকে একটি অ্যাপ্লিকেশন ধারকটির মধ্যে আরও সহজে পরিচালিত করতে সক্ষম করে। সুতরাং আপনি কোনও EAR এর ভার্চুয়াল মেশিনের সাধারণ রূপ হিসাবে ভাবতে পারেন একবার এটি তার ধারকটিতে স্থাপন করা হয়।

ভার্চুয়াল মেশিনের একটি প্রক্রিয়া যেভাবে অন্যটিকে প্রভাবিত করতে পারে না, একইভাবে একটি EAR এর ক্ষেত্রেও সত্য। সমস্ত যুদ্ধগুলি তাদের অভ্যন্তরীণ অবস্থা রক্ষার জন্য বিচ্ছিন্ন।

স্কেলিং প্রমাণীকরণ

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

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

প্রাসঙ্গিক তথ্যগুলিতে দ্রুত ক্যাশেড অ্যাক্সেসের উপর মনোনিবেশ করা কিছু জটিল, ভঙ্গুর সেশন ভাগ করে নেওয়ার সমাধানের চেয়ে আরও বেশি মাপের ফলাফল পাবে।


ধন্যবাদ, @ গ্যারিরোউ এই উত্তরটি আমি খুঁজছিলাম। যাইহোক, এটি কি বিকাশকারী সিদ্ধান্ত নিতে পারে না?
rvcoutinho

আরেকটি প্রশ্ন: আপনি কি ভাবেন যে জবস ক্যাশে ভাল সমাধান হতে পারে? আপনি কি আপাচি শিরো (এবং এর সেশন ক্লাস্টারিং) শুনেছেন? এটা কেমন?
rvcoutinho

@rvcoutinho অ্যাপ্লিকেশন বিকাশকারী কী সিদ্ধান্ত নিতে পারেন যে লিনাক্স কার্নেলে প্রক্রিয়াগুলি কীভাবে পরিচালনা করা হয়? এটি একটি প্রশ্নের অনুরূপ ফ্রেমিং - হ্যাঁ, আপনি এটি করতে পারেন তবে এটি চূড়ান্ত হতে পারে এবং সম্ভবত বিকল্প পথ গ্রহণের চেয়ে আপনাকে আরও ব্যথার কারণ করে।
গ্যারি রোয়ে

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

2

এটি এমন কিছু যা আমি মনে করি JEE EAR স্পেসিফিকেশন থেকে কার্যকারিতা অনুপস্থিত an এক EAR এর মধ্যে আবদ্ধ একাধিক ওয়েব সংরক্ষণাগার জুড়ে ওয়েব সেশনগুলি ভাগ করে নেওয়ার ক্ষমতা।

ওয়েব্লোগিকের মতো অ্যাপ সার্ভারগুলির এই কার্যকারিতাটির জন্য অ স্টাড বাস্তবায়ন নেই।


এ পর্যন্ত আমার মতামত ছিল। আমি উল্লিখিত পছন্দটি কেন করা হয়েছে তা বোঝার চেষ্টা করছিলাম।
rvcoutinho

1

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


আমি আপনার সাথে একমত. তবে এটি কেবল যখন সাধারণ সংস্থানগুলিতে আসে। তবে, একটি একক সাইন অন অ্যাপ্লিকেশনটির জন্য, আমার সেশন নির্দিষ্ট তথ্য (লগ ইন করা ব্যবহারকারী সম্পর্কে) ভাগ করা দরকার। এবং আমি কেন এই অনুমানের বিরুদ্ধে হবে তার কোনও কারণ দেখছি না।
rvcoutinho

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

আমি আবার আপনার সাথে একমত হবে। তবুও জাভা ই স্পেসিফিকেশন (জেএএএস ব্যবহার করে) ব্যবহারকারীর তথ্য এইচটিটিপিএসসনের অংশ হিসাবে ধরে রেখেছে, যা এই পদ্ধতির বিরোধী। এর পরিবর্তে আমি শিরো (এটি একটি অर्थোগোনাল অধিবেশন বজায় রাখে) ব্যবহার করার জন্য বিবেচনা করছি of
rvcoutinho

যাইহোক, প্রতিক্রিয়া জন্য ধন্যবাদ। আমার প্রশ্নের এখনও আমার কাছে একটি নির্দিষ্ট উত্তর নেই, তবে আপনি যা বলেছেন তা প্রাসঙ্গিক। +1
rvcoutinho

@ আরভিকাউটিনহো ভাল, বিষয়টি সম্পর্কে আমার মতামত, দুঃখিত এটি আপনার পক্ষে বেশি সহায়ক ছিল না।
শিবান ড্রাগন

0

আমি মনে করি এটি ঘটনাক্রমে একে অপরের অধিবেশন তথ্য ওভাররাইট করা বিভিন্ন ওয়েব অ্যাপ্লিকেশনগুলি এড়াতে উদ্দেশ্যে করা হয়েছিল। এটি আপনার ক্ষেত্রে কার্যকর হতে পারে তবে সাধারণভাবে আপনি ব্যবহারকারীরা অ্যাপটিকে ক্র্যাশ করতে বা তাদের সুবিধাগুলি বাড়িয়ে তুলতে চান না কারণ তারা একই সাথে দুটি ওয়েব অ্যাপ্লিকেশন ব্যবহার করে। স্পষ্টভাবে ওয়েব অ্যাপ্লিকেশনগুলির মধ্যে তথ্য ভাগ করে নেওয়া ঠিক কঠিন নয়; কেবল একটি স্ট্যাটিক হ্যাশম্যাপের সাহায্যে একটি শ্রেণি তৈরি করুন, কী হিসাবে জিইউইডিগুলি ব্যবহার করুন এবং সেগুলি URL বা HTTP প্যারামিটারের অংশ হিসাবে স্থানান্তর করুন।


ধন্যবাদ। আসলে, আমি প্রতিটি অ্যাপ্লিকেশনের মধ্যে পুরো অধিবেশন ভাগ করে নেওয়ার কথা বলছিলাম না, তবে প্রয়োজনের সময় নির্দিষ্ট সেশনের তথ্য (ব্যবহারকারীর তথ্য হিসাবে) ছিল। আমি পরিষ্কার ছিল না। এটি পরিষ্কার করার বিষয়ে কোনও পরামর্শ?
rvcoutinho
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.