Hi,
thanks for the answer.
The deserialization code is like this :
final byte[] byteData = Base64.decodeBase64(dataStr);
ByteArrayInputStream bout = null;
ObjectInputStream oos = null;
try {
bout = new ByteArrayInputStream(byteData);
oos = new ObjectInputStream(bout);
toReturn = oos.readObject();
} catch( ...) {
} finally {
}
With the ObjectInputStream there is no class loader parameters but some
resolver (i will check this way).
For the second case, do you have an example of "class context injection" ?
Regards
Hervé
On Tue, Apr 24, 2012 at 4:36 PM, Christian Schneider <
[email protected]> wrote:
> That is the typical case like in jpa where you have a generic service that
> needs to create objects from a packages it can not know at compile time.
>
> The typical solution for this is to give B the classloader of C. So
> currently you might have a deserialize method like:
> Object object = unmarshal(InputStream is);
> So the idea is to change this to
> Object object = unmarshal(InputStream is, Classloader classloader);
>
> So C can give B his classloader and B can use this to create objects only
> C knows but not B. Another way is to give B a kind of context that is
> configured with a list of the
> classes from A. C can initialize this context so B does not have to load
> these classes at all.
>
> Christian
>
> Am 24.04.2012 15:53, schrieb Hervé BARRAULT:
>
> Hi,
>>
>> I have a case where i can't see how to cleanly list the imported packages
>> without using DynamicImport-Package.
>>
>> Example :
>>
>> I have a bundle A where there is the whole dto.
>>
>> I have a bundle B which defines a "container" library (basically a
>> container can support any Serializable and provides
>> serialization/deserialization tools).
>>
>> I have a bundle C which use a container (from B) and add in this
>> container some object from the dto (from A)
>> In the bundle C, I instantiate the classes from the bundle B and A.
>>
>> When i put "object from A" into "container from B" in "my code from C" it
>> is working without problem.
>>
>> When i try to get "object from A" from "container from B" in "my code
>> from C" i get a ClassNotFoundException for the object in A.
>>
>> My Bundle B has no specific import (i think this library shall be
>> "agnostic").
>>
>> My bundle C import packages from A and B.
>>
>>
>> For Information, in B library we are using genericity which is perhaps a
>> problem for imports.
>>
>>
>> Where am I missing something ?
>>
>> Regards
>> Hervé
>>
>>
>
> --
> Christian Schneider
> http://www.liquid-reality.de
>
> Open Source Architect
> Talend Application Integration Division http://www.talend.com
>
>