मेरे पास 2 अलग-अलग जावा प्रोजेक्ट हैं, एक में 2 कक्षाएं हैं: dynamicbeans.DynamicBean2
और dynamic.Validator
।क्लासकास्ट अपवाद उसी श्रेणी में कास्टिंग करते समय
अन्य परियोजना पर, मैं इन कक्षाओं में गतिशील रूप से दोनों लोड और एक Object
class Form {
Class beanClass;
Class validatorClass;
Validator validator;
}
एक सेम
मैं तो आगे जाना है और validatorClass.newInstance()
का उपयोग कर एक Validator
वस्तु बना सकते हैं और validator
पर संग्रहीत तो मैं बनाने पर उन्हें स्टोर ऑब्जेक्ट के साथ-साथ beanClass.newInstance()
का उपयोग करके और सत्र में जोड़ें।
portletRequest.setAttribute("DynamicBean2", bean);
Form
परियोजना के जीवन चक्र के दौरान, मैं validator.validate()
जो सत्र (मैं Websphere पोर्टल सर्वर चल रहा हूँ) से पहले बनाया था सेम वस्तु को लोड करता है कहते हैं। जब मैं इस ऑब्जेक्ट को DynamicBean2
में डालने का प्रयास करता हूं तो यह क्लासकास्ट अपवाद के साथ विफल रहता है।
जब मैं
faces.getApplication().createValueBinding("#{DynamicBean2}").getValue(faces);
का उपयोग कर सत्र से बाहर वापस वस्तु खींच और .getClass()
का उपयोग कर रहा dynamicbeans.DynamicBean2
प्राप्त यह वर्ग की जाँच करें। यह वह वर्ग है जिसे मैं इसे डालना चाहता हूं, हालांकि जब मैं कोशिश करता हूं कि मुझे क्लासकास्ट अपवाद प्राप्त होता है।
मुझे यह कारण क्यों मिल रहा है?
मेरा अनुमान लगाया है (मुझे पोर्टल सर्वर के साथ अनुभव नहीं है) यह है कि आप विभिन्न पोर्टलों में कक्षा लोड कर रहे हैं, प्रत्येक को अपने स्वयं के क्लासलोडर के साथ। फिर आप इंस्टेंस को सत्र ऑब्जेक्ट में रखें, और जब आप इसे गलत पोर्टलेट से पुनर्प्राप्त करते हैं (जिसमें से इसे बनाया गया था) तो आपका अपवाद है। मुझे लगता है कि होगा (था अनुभव के आधार पर) है कि आप classloading पदानुक्रम में कहीं अधिक अपनी कक्षा के साथ जार जगह इतना है कि यह दोनों portlets classloaders की एक माता पिता के द्वारा लोड किया जाता है की जरूरत है। विवरण के साथ – Robin
यानी संख्या 2। – Robin
@waxwing यह काफी समय रहा है। लेकिन, क्या आप पहले संभावित समाधान को विस्तारित करने के बारे में सोचेंगे? मुझे लगता है कि मेरे द्वारा एक मुद्दा हल किया जा सकता है। अग्रिम में धन्यवाद! –