You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@wicket.apache.org by dfernandez <df...@users.sourceforge.net> on 2008/02/07 10:57:14 UTC

@SpringBean and serialization

Hello everyone,

I have a question regarding the relation between the @SpringBean annotation
and the serialization of objects being referenced in a Page. If I have:

@SpringBean(name="myBean")
protected MyService myService;

May I suppose that the proxy object that @SpringBean will create for
"myService" will handle serialization properly? (this is, forgetting about
the reference to the Spring object when serializing, and retrieving it again
when de-serializing...)

If this is so, I also suppose that it would be *incorrect* to mark this
property as "transient", right? like,

@SpringBean(name="myBean")
protected transient MyService myService;

...and if this is incorrect as I suppose, we are on a little "formal issue"
here, as we are using a neither-serializable-nor-transient object (the
service) inside a serializable object (the page), which is formally
incorrect, but which we know will work because we are relying on the proxy
implementation (and thus binding to it)...

Could anyone please confirm that this works this way?

Many thanks,
Daniel.


-- 
View this message in context: http://www.nabble.com/%40SpringBean-and-serialization-tp15330505p15330505.html
Sent from the Wicket - User mailing list archive at Nabble.com.


---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@wicket.apache.org
For additional commands, e-mail: users-help@wicket.apache.org


Re: @SpringBean and serialization

Posted by Nino Saturnino Martinez Vazquez Wael <ni...@jayway.dk>.
Hi Daniel

I've marked it transient, so looking forward to the replies you get..


regards Nino

dfernandez wrote:
> Hello everyone,
>
> I have a question regarding the relation between the @SpringBean annotation
> and the serialization of objects being referenced in a Page. If I have:
>
> @SpringBean(name="myBean")
> protected MyService myService;
>
> May I suppose that the proxy object that @SpringBean will create for
> "myService" will handle serialization properly? (this is, forgetting about
> the reference to the Spring object when serializing, and retrieving it again
> when de-serializing...)
>
> If this is so, I also suppose that it would be *incorrect* to mark this
> property as "transient", right? like,
>
> @SpringBean(name="myBean")
> protected transient MyService myService;
>
> ...and if this is incorrect as I suppose, we are on a little "formal issue"
> here, as we are using a neither-serializable-nor-transient object (the
> service) inside a serializable object (the page), which is formally
> incorrect, but which we know will work because we are relying on the proxy
> implementation (and thus binding to it)...
>
> Could anyone please confirm that this works this way?
>
> Many thanks,
> Daniel.
>
>
>   

-- 
Nino Martinez Wael
Java Specialist @ Jayway DK
http://www.jayway.dk
+45 2936 7684


---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@wicket.apache.org
For additional commands, e-mail: users-help@wicket.apache.org


Re: @SpringBean and serialization

Posted by Igor Vaynberg <ig...@gmail.com>.
On Tue, Jul 29, 2008 at 1:11 AM, Gerald Reinhart <ge...@googlemail.com> wrote:
>
>
> jwcarman wrote:
>>
>> Why are you doing this again?  @SpringBean already takes care of
>> re-establishing the connection upon deserialization.
>>
>
> Are you sure ?

read the spring page on the wiki

-igor

>
>
> Sebastiaan van Erk wrote:
>>
>> The myService field is filled with a proxy to the service which is
>> serializable and can look up
>> the service again if it is lost (due to a serialize/deserialize cycle of
>> the component). The proxy is injected on instantiation of the component
>> and NOT on deserialization (see also IComponentInstantiationListener).
>>
>> Marking it transient will not work because after deserialize the
>> myService field will be null, calling all subsequent calls to the
>> service to fail with a NullPointerException.
>>
>
> --
> View this message in context: http://www.nabble.com/%40SpringBean-and-serialization-tp15330505p18707368.html
> Sent from the Wicket - User mailing list archive at Nabble.com.
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: users-unsubscribe@wicket.apache.org
> For additional commands, e-mail: users-help@wicket.apache.org
>
>

---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@wicket.apache.org
For additional commands, e-mail: users-help@wicket.apache.org


Re: @SpringBean and serialization

Posted by Ari M <ar...@gmail.com>.
Yes, of course, but I'm in the same position as the one who posed the
question: looking for the answer.  I inferred from what was written that
de-/serialization was handled by @SpringBean, but since I haven't had time
to do a full code review, I don't know the details of how it all works, and
therefore don't feel comfortable updating the wiki.

BTW, we appreciate all your efforts.  When my workload gets lighter, I
definitely plan to contribute to Wicket. :-)
Ari


igor.vaynberg wrote:
> 
> its a wiki, you can always update it...
> 
> -igor
> 
> On Thu, Sep 25, 2008 at 6:38 PM, Ari M <ar...@gmail.com> wrote:
>>
>> BTW, I did note that it said "It's possible to have your annotated
>> dependencies automatically injected on construction."  By this I inferred
>> that de-/serialization was handled, but it could be made more explicit,
>> as
>> it is for the other approaches.
>> Ari
>>
>>
>> Ari M wrote:
>>>
>>> I see nothing on the wiki page under Annotation-based Approach
>>> concerning
>>> serialization.  The other approaches discuss serialization issues, but
>>> not
>>> this one.  Am I missing something?  If it said something like
>>> "serialization/de-serialization handled automatically", that would be
>>> clear.
>>>
>>> Thanks,
>>> Ari
>>>
>>>
>>>
>>> lars vonk wrote:
>>>>
>>>> Hi Gerald,
>>>>
>>>> Don't forget Findbugs is a static code analysis tool, so it can't
>>>> figure out everything. To get rid of these (false) warnings you could
>>>> for instance disable these specific warnings in FindBugs for wicket
>>>> classes that are injected by Spring using FindBugs filters. See
>>>> http://findbugs.sourceforge.net/manual/filter.html on how to do that.
>>>>
>>>> BTW: The wicket docs about spring clearly explains the serialization
>>>> problem: http://cwiki.apache.org/WICKET/spring.html
>>>>
>>>> -- Lars
>>>>
>>>>
>>>>
>>>> On Tue, Jul 29, 2008 at 5:10 PM, Gerald Reinhart
>>>> <ge...@googlemail.com>
>>>> wrote:
>>>>>
>>>>> We use Findbugs on our build process, with this
>>>>>
>>>>>  @SpringBean(name = "mySpringBean")
>>>>>   private MyPOJO config;
>>>>>
>>>>> Findbugs Warning :
>>>>>
>>>>>  Class com.......MyPage defines non-transient non-serializable
>>>>> instance
>>>>> field config Bug type SE_BAD_FIELD (click for details)
>>>>> In class com.......MyPage Field com.......MyPage.config In MyPage.java
>>>>>
>>>>> SE_BAD_FIELD: Non-transient non-serializable instance field in
>>>>> serializable
>>>>> class
>>>>> This Serializable class defines a non-primitive instance field which
>>>>> is
>>>>> neither transient, Serializable, or java.lang.Object, and does not
>>>>> appear to
>>>>> implement the Externalizable interface or the readObject() and
>>>>> writeObject()
>>>>> methods.  Objects of this class will not be deserialized correctly if
>>>>> a
>>>>> non-Serializable object is stored in this field.
>>>>>
>>>>> So we set the field transient
>>>>>
>>>>>  @SpringBean(name = "mySpringBean")
>>>>>   transient MyPOJO config;
>>>>>
>>>>> So that Findbugs didn't complain... that the reason why we decided to
>>>>> develop this Helper to set SpringBean in the readObject() method.
>>>>> Perhaps we
>>>>> won't do all that is the documentation tell explicitly that we didn't
>>>>> have
>>>>> to take care of the deserialization of SpringBean (as
>>>>> SpringComponentInjector inject Serializable proxies)
>>>>>
>>>>> Regards,
>>>>>
>>>>>
>>>>> Gerald Reinhart
>>>>>
>>>>>
>>>>> --
>>>>> View this message in context:
>>>>> http://www.nabble.com/%40SpringBean-and-serialization-tp15330505p18714397.html
>>>>> Sent from the Wicket - User mailing list archive at Nabble.com.
>>>>>
>>>>>
>>>>> ---------------------------------------------------------------------
>>>>> To unsubscribe, e-mail: users-unsubscribe@wicket.apache.org
>>>>> For additional commands, e-mail: users-help@wicket.apache.org
>>>>>
>>>>>
>>>>
>>>> ---------------------------------------------------------------------
>>>> To unsubscribe, e-mail: users-unsubscribe@wicket.apache.org
>>>> For additional commands, e-mail: users-help@wicket.apache.org
>>>>
>>>>
>>>>
>>>
>>>
>>
>> --
>> View this message in context:
>> http://www.nabble.com/%40SpringBean-and-serialization-tp15330505p19681208.html
>> Sent from the Wicket - User mailing list archive at Nabble.com.
>>
>>
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: users-unsubscribe@wicket.apache.org
>> For additional commands, e-mail: users-help@wicket.apache.org
>>
>>
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: users-unsubscribe@wicket.apache.org
> For additional commands, e-mail: users-help@wicket.apache.org
> 
> 
> 

-- 
View this message in context: http://www.nabble.com/%40SpringBean-and-serialization-tp15330505p19683608.html
Sent from the Wicket - User mailing list archive at Nabble.com.


---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@wicket.apache.org
For additional commands, e-mail: users-help@wicket.apache.org


Re: @SpringBean and serialization

Posted by Igor Vaynberg <ig...@gmail.com>.
its a wiki, you can always update it...

-igor

On Thu, Sep 25, 2008 at 6:38 PM, Ari M <ar...@gmail.com> wrote:
>
> BTW, I did note that it said "It's possible to have your annotated
> dependencies automatically injected on construction."  By this I inferred
> that de-/serialization was handled, but it could be made more explicit, as
> it is for the other approaches.
> Ari
>
>
> Ari M wrote:
>>
>> I see nothing on the wiki page under Annotation-based Approach concerning
>> serialization.  The other approaches discuss serialization issues, but not
>> this one.  Am I missing something?  If it said something like
>> "serialization/de-serialization handled automatically", that would be
>> clear.
>>
>> Thanks,
>> Ari
>>
>>
>>
>> lars vonk wrote:
>>>
>>> Hi Gerald,
>>>
>>> Don't forget Findbugs is a static code analysis tool, so it can't
>>> figure out everything. To get rid of these (false) warnings you could
>>> for instance disable these specific warnings in FindBugs for wicket
>>> classes that are injected by Spring using FindBugs filters. See
>>> http://findbugs.sourceforge.net/manual/filter.html on how to do that.
>>>
>>> BTW: The wicket docs about spring clearly explains the serialization
>>> problem: http://cwiki.apache.org/WICKET/spring.html
>>>
>>> -- Lars
>>>
>>>
>>>
>>> On Tue, Jul 29, 2008 at 5:10 PM, Gerald Reinhart <ge...@googlemail.com>
>>> wrote:
>>>>
>>>> We use Findbugs on our build process, with this
>>>>
>>>>  @SpringBean(name = "mySpringBean")
>>>>   private MyPOJO config;
>>>>
>>>> Findbugs Warning :
>>>>
>>>>  Class com.......MyPage defines non-transient non-serializable instance
>>>> field config Bug type SE_BAD_FIELD (click for details)
>>>> In class com.......MyPage Field com.......MyPage.config In MyPage.java
>>>>
>>>> SE_BAD_FIELD: Non-transient non-serializable instance field in
>>>> serializable
>>>> class
>>>> This Serializable class defines a non-primitive instance field which is
>>>> neither transient, Serializable, or java.lang.Object, and does not
>>>> appear to
>>>> implement the Externalizable interface or the readObject() and
>>>> writeObject()
>>>> methods.  Objects of this class will not be deserialized correctly if a
>>>> non-Serializable object is stored in this field.
>>>>
>>>> So we set the field transient
>>>>
>>>>  @SpringBean(name = "mySpringBean")
>>>>   transient MyPOJO config;
>>>>
>>>> So that Findbugs didn't complain... that the reason why we decided to
>>>> develop this Helper to set SpringBean in the readObject() method.
>>>> Perhaps we
>>>> won't do all that is the documentation tell explicitly that we didn't
>>>> have
>>>> to take care of the deserialization of SpringBean (as
>>>> SpringComponentInjector inject Serializable proxies)
>>>>
>>>> Regards,
>>>>
>>>>
>>>> Gerald Reinhart
>>>>
>>>>
>>>> --
>>>> View this message in context:
>>>> http://www.nabble.com/%40SpringBean-and-serialization-tp15330505p18714397.html
>>>> Sent from the Wicket - User mailing list archive at Nabble.com.
>>>>
>>>>
>>>> ---------------------------------------------------------------------
>>>> To unsubscribe, e-mail: users-unsubscribe@wicket.apache.org
>>>> For additional commands, e-mail: users-help@wicket.apache.org
>>>>
>>>>
>>>
>>> ---------------------------------------------------------------------
>>> To unsubscribe, e-mail: users-unsubscribe@wicket.apache.org
>>> For additional commands, e-mail: users-help@wicket.apache.org
>>>
>>>
>>>
>>
>>
>
> --
> View this message in context: http://www.nabble.com/%40SpringBean-and-serialization-tp15330505p19681208.html
> Sent from the Wicket - User mailing list archive at Nabble.com.
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: users-unsubscribe@wicket.apache.org
> For additional commands, e-mail: users-help@wicket.apache.org
>
>

---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@wicket.apache.org
For additional commands, e-mail: users-help@wicket.apache.org


Re: @SpringBean and serialization

Posted by Ari M <ar...@gmail.com>.
BTW, I did note that it said "It's possible to have your annotated
dependencies automatically injected on construction."  By this I inferred
that de-/serialization was handled, but it could be made more explicit, as
it is for the other approaches.
Ari


Ari M wrote:
> 
> I see nothing on the wiki page under Annotation-based Approach concerning
> serialization.  The other approaches discuss serialization issues, but not
> this one.  Am I missing something?  If it said something like
> "serialization/de-serialization handled automatically", that would be
> clear.
> 
> Thanks,
> Ari
> 
> 
> 
> lars vonk wrote:
>> 
>> Hi Gerald,
>> 
>> Don't forget Findbugs is a static code analysis tool, so it can't
>> figure out everything. To get rid of these (false) warnings you could
>> for instance disable these specific warnings in FindBugs for wicket
>> classes that are injected by Spring using FindBugs filters. See
>> http://findbugs.sourceforge.net/manual/filter.html on how to do that.
>> 
>> BTW: The wicket docs about spring clearly explains the serialization
>> problem: http://cwiki.apache.org/WICKET/spring.html
>> 
>> -- Lars
>> 
>> 
>> 
>> On Tue, Jul 29, 2008 at 5:10 PM, Gerald Reinhart <ge...@googlemail.com>
>> wrote:
>>>
>>> We use Findbugs on our build process, with this
>>>
>>>  @SpringBean(name = "mySpringBean")
>>>   private MyPOJO config;
>>>
>>> Findbugs Warning :
>>>
>>>  Class com.......MyPage defines non-transient non-serializable instance
>>> field config Bug type SE_BAD_FIELD (click for details)
>>> In class com.......MyPage Field com.......MyPage.config In MyPage.java
>>>
>>> SE_BAD_FIELD: Non-transient non-serializable instance field in
>>> serializable
>>> class
>>> This Serializable class defines a non-primitive instance field which is
>>> neither transient, Serializable, or java.lang.Object, and does not
>>> appear to
>>> implement the Externalizable interface or the readObject() and
>>> writeObject()
>>> methods.  Objects of this class will not be deserialized correctly if a
>>> non-Serializable object is stored in this field.
>>>
>>> So we set the field transient
>>>
>>>  @SpringBean(name = "mySpringBean")
>>>   transient MyPOJO config;
>>>
>>> So that Findbugs didn't complain... that the reason why we decided to
>>> develop this Helper to set SpringBean in the readObject() method.
>>> Perhaps we
>>> won't do all that is the documentation tell explicitly that we didn't
>>> have
>>> to take care of the deserialization of SpringBean (as
>>> SpringComponentInjector inject Serializable proxies)
>>>
>>> Regards,
>>>
>>>
>>> Gerald Reinhart
>>>
>>>
>>> --
>>> View this message in context:
>>> http://www.nabble.com/%40SpringBean-and-serialization-tp15330505p18714397.html
>>> Sent from the Wicket - User mailing list archive at Nabble.com.
>>>
>>>
>>> ---------------------------------------------------------------------
>>> To unsubscribe, e-mail: users-unsubscribe@wicket.apache.org
>>> For additional commands, e-mail: users-help@wicket.apache.org
>>>
>>>
>> 
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: users-unsubscribe@wicket.apache.org
>> For additional commands, e-mail: users-help@wicket.apache.org
>> 
>> 
>> 
> 
> 

-- 
View this message in context: http://www.nabble.com/%40SpringBean-and-serialization-tp15330505p19681208.html
Sent from the Wicket - User mailing list archive at Nabble.com.


---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@wicket.apache.org
For additional commands, e-mail: users-help@wicket.apache.org


Re: @SpringBean and serialization

Posted by James Carman <ja...@carmanconsulting.com>.
Serialization/deserialization is handled for you automatically.

On Thu, Sep 25, 2008 at 9:33 PM, Ari M <ar...@gmail.com> wrote:
>
> I see nothing on the wiki page under Annotation-based Approach concerning
> serialization.  The other approaches discuss serialization issues, but not
> this one.  Am I missing something?  If it said something like
> "serialization/de-serialization handled automatically", that would be clear.
>
> Thanks,
> Ari
>
>
>
> lars vonk wrote:
>>
>> Hi Gerald,
>>
>> Don't forget Findbugs is a static code analysis tool, so it can't
>> figure out everything. To get rid of these (false) warnings you could
>> for instance disable these specific warnings in FindBugs for wicket
>> classes that are injected by Spring using FindBugs filters. See
>> http://findbugs.sourceforge.net/manual/filter.html on how to do that.
>>
>> BTW: The wicket docs about spring clearly explains the serialization
>> problem: http://cwiki.apache.org/WICKET/spring.html
>>
>> -- Lars
>>
>>
>>
>> On Tue, Jul 29, 2008 at 5:10 PM, Gerald Reinhart <ge...@googlemail.com>
>> wrote:
>>>
>>> We use Findbugs on our build process, with this
>>>
>>>  @SpringBean(name = "mySpringBean")
>>>   private MyPOJO config;
>>>
>>> Findbugs Warning :
>>>
>>>  Class com.......MyPage defines non-transient non-serializable instance
>>> field config Bug type SE_BAD_FIELD (click for details)
>>> In class com.......MyPage Field com.......MyPage.config In MyPage.java
>>>
>>> SE_BAD_FIELD: Non-transient non-serializable instance field in
>>> serializable
>>> class
>>> This Serializable class defines a non-primitive instance field which is
>>> neither transient, Serializable, or java.lang.Object, and does not appear
>>> to
>>> implement the Externalizable interface or the readObject() and
>>> writeObject()
>>> methods.  Objects of this class will not be deserialized correctly if a
>>> non-Serializable object is stored in this field.
>>>
>>> So we set the field transient
>>>
>>>  @SpringBean(name = "mySpringBean")
>>>   transient MyPOJO config;
>>>
>>> So that Findbugs didn't complain... that the reason why we decided to
>>> develop this Helper to set SpringBean in the readObject() method. Perhaps
>>> we
>>> won't do all that is the documentation tell explicitly that we didn't
>>> have
>>> to take care of the deserialization of SpringBean (as
>>> SpringComponentInjector inject Serializable proxies)
>>>
>>> Regards,
>>>
>>>
>>> Gerald Reinhart
>>>
>>>
>>> --
>>> View this message in context:
>>> http://www.nabble.com/%40SpringBean-and-serialization-tp15330505p18714397.html
>>> Sent from the Wicket - User mailing list archive at Nabble.com.
>>>
>>>
>>> ---------------------------------------------------------------------
>>> To unsubscribe, e-mail: users-unsubscribe@wicket.apache.org
>>> For additional commands, e-mail: users-help@wicket.apache.org
>>>
>>>
>>
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: users-unsubscribe@wicket.apache.org
>> For additional commands, e-mail: users-help@wicket.apache.org
>>
>>
>>
>
> --
> View this message in context: http://www.nabble.com/%40SpringBean-and-serialization-tp15330505p19681174.html
> Sent from the Wicket - User mailing list archive at Nabble.com.
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: users-unsubscribe@wicket.apache.org
> For additional commands, e-mail: users-help@wicket.apache.org
>
>

---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@wicket.apache.org
For additional commands, e-mail: users-help@wicket.apache.org


Re: @SpringBean and serialization

Posted by Ari M <ar...@gmail.com>.
I see nothing on the wiki page under Annotation-based Approach concerning
serialization.  The other approaches discuss serialization issues, but not
this one.  Am I missing something?  If it said something like
"serialization/de-serialization handled automatically", that would be clear.

Thanks,
Ari



lars vonk wrote:
> 
> Hi Gerald,
> 
> Don't forget Findbugs is a static code analysis tool, so it can't
> figure out everything. To get rid of these (false) warnings you could
> for instance disable these specific warnings in FindBugs for wicket
> classes that are injected by Spring using FindBugs filters. See
> http://findbugs.sourceforge.net/manual/filter.html on how to do that.
> 
> BTW: The wicket docs about spring clearly explains the serialization
> problem: http://cwiki.apache.org/WICKET/spring.html
> 
> -- Lars
> 
> 
> 
> On Tue, Jul 29, 2008 at 5:10 PM, Gerald Reinhart <ge...@googlemail.com>
> wrote:
>>
>> We use Findbugs on our build process, with this
>>
>>  @SpringBean(name = "mySpringBean")
>>   private MyPOJO config;
>>
>> Findbugs Warning :
>>
>>  Class com.......MyPage defines non-transient non-serializable instance
>> field config Bug type SE_BAD_FIELD (click for details)
>> In class com.......MyPage Field com.......MyPage.config In MyPage.java
>>
>> SE_BAD_FIELD: Non-transient non-serializable instance field in
>> serializable
>> class
>> This Serializable class defines a non-primitive instance field which is
>> neither transient, Serializable, or java.lang.Object, and does not appear
>> to
>> implement the Externalizable interface or the readObject() and
>> writeObject()
>> methods.  Objects of this class will not be deserialized correctly if a
>> non-Serializable object is stored in this field.
>>
>> So we set the field transient
>>
>>  @SpringBean(name = "mySpringBean")
>>   transient MyPOJO config;
>>
>> So that Findbugs didn't complain... that the reason why we decided to
>> develop this Helper to set SpringBean in the readObject() method. Perhaps
>> we
>> won't do all that is the documentation tell explicitly that we didn't
>> have
>> to take care of the deserialization of SpringBean (as
>> SpringComponentInjector inject Serializable proxies)
>>
>> Regards,
>>
>>
>> Gerald Reinhart
>>
>>
>> --
>> View this message in context:
>> http://www.nabble.com/%40SpringBean-and-serialization-tp15330505p18714397.html
>> Sent from the Wicket - User mailing list archive at Nabble.com.
>>
>>
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: users-unsubscribe@wicket.apache.org
>> For additional commands, e-mail: users-help@wicket.apache.org
>>
>>
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: users-unsubscribe@wicket.apache.org
> For additional commands, e-mail: users-help@wicket.apache.org
> 
> 
> 

-- 
View this message in context: http://www.nabble.com/%40SpringBean-and-serialization-tp15330505p19681174.html
Sent from the Wicket - User mailing list archive at Nabble.com.


---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@wicket.apache.org
For additional commands, e-mail: users-help@wicket.apache.org


Re: @SpringBean and serialization

Posted by lars vonk <la...@gmail.com>.
Hi Gerald,

Don't forget Findbugs is a static code analysis tool, so it can't
figure out everything. To get rid of these (false) warnings you could
for instance disable these specific warnings in FindBugs for wicket
classes that are injected by Spring using FindBugs filters. See
http://findbugs.sourceforge.net/manual/filter.html on how to do that.

BTW: The wicket docs about spring clearly explains the serialization
problem: http://cwiki.apache.org/WICKET/spring.html

-- Lars



On Tue, Jul 29, 2008 at 5:10 PM, Gerald Reinhart <ge...@googlemail.com> wrote:
>
> We use Findbugs on our build process, with this
>
>  @SpringBean(name = "mySpringBean")
>   private MyPOJO config;
>
> Findbugs Warning :
>
>  Class com.......MyPage defines non-transient non-serializable instance
> field config Bug type SE_BAD_FIELD (click for details)
> In class com.......MyPage Field com.......MyPage.config In MyPage.java
>
> SE_BAD_FIELD: Non-transient non-serializable instance field in serializable
> class
> This Serializable class defines a non-primitive instance field which is
> neither transient, Serializable, or java.lang.Object, and does not appear to
> implement the Externalizable interface or the readObject() and writeObject()
> methods.  Objects of this class will not be deserialized correctly if a
> non-Serializable object is stored in this field.
>
> So we set the field transient
>
>  @SpringBean(name = "mySpringBean")
>   transient MyPOJO config;
>
> So that Findbugs didn't complain... that the reason why we decided to
> develop this Helper to set SpringBean in the readObject() method. Perhaps we
> won't do all that is the documentation tell explicitly that we didn't have
> to take care of the deserialization of SpringBean (as
> SpringComponentInjector inject Serializable proxies)
>
> Regards,
>
>
> Gerald Reinhart
>
>
> --
> View this message in context: http://www.nabble.com/%40SpringBean-and-serialization-tp15330505p18714397.html
> Sent from the Wicket - User mailing list archive at Nabble.com.
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: users-unsubscribe@wicket.apache.org
> For additional commands, e-mail: users-help@wicket.apache.org
>
>

---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@wicket.apache.org
For additional commands, e-mail: users-help@wicket.apache.org


Re: @SpringBean and serialization

Posted by Igor Vaynberg <ig...@gmail.com>.
so you decrease the efficiency of your application so that your static
analysis tool stops reporting false positives?

-igor

On Tue, Jul 29, 2008 at 8:10 AM, Gerald Reinhart <ge...@googlemail.com> wrote:
>
> We use Findbugs on our build process, with this
>
>  @SpringBean(name = "mySpringBean")
>   private MyPOJO config;
>
> Findbugs Warning :
>
>  Class com.......MyPage defines non-transient non-serializable instance
> field config Bug type SE_BAD_FIELD (click for details)
> In class com.......MyPage Field com.......MyPage.config In MyPage.java
>
> SE_BAD_FIELD: Non-transient non-serializable instance field in serializable
> class
> This Serializable class defines a non-primitive instance field which is
> neither transient, Serializable, or java.lang.Object, and does not appear to
> implement the Externalizable interface or the readObject() and writeObject()
> methods.  Objects of this class will not be deserialized correctly if a
> non-Serializable object is stored in this field.
>
> So we set the field transient
>
>  @SpringBean(name = "mySpringBean")
>   transient MyPOJO config;
>
> So that Findbugs didn't complain... that the reason why we decided to
> develop this Helper to set SpringBean in the readObject() method. Perhaps we
> won't do all that is the documentation tell explicitly that we didn't have
> to take care of the deserialization of SpringBean (as
> SpringComponentInjector inject Serializable proxies)
>
> Regards,
>
>
> Gerald Reinhart
>
>
> --
> View this message in context: http://www.nabble.com/%40SpringBean-and-serialization-tp15330505p18714397.html
> Sent from the Wicket - User mailing list archive at Nabble.com.
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: users-unsubscribe@wicket.apache.org
> For additional commands, e-mail: users-help@wicket.apache.org
>
>

---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@wicket.apache.org
For additional commands, e-mail: users-help@wicket.apache.org


Re: @SpringBean and serialization

Posted by Gerald Reinhart <ge...@googlemail.com>.
We use Findbugs on our build process, with this

  @SpringBean(name = "mySpringBean")
   private MyPOJO config; 

Findbugs Warning : 

 Class com.......MyPage defines non-transient non-serializable instance
field config Bug type SE_BAD_FIELD (click for details) 
In class com.......MyPage Field com.......MyPage.config In MyPage.java

SE_BAD_FIELD: Non-transient non-serializable instance field in serializable
class 
This Serializable class defines a non-primitive instance field which is
neither transient, Serializable, or java.lang.Object, and does not appear to
implement the Externalizable interface or the readObject() and writeObject()
methods.  Objects of this class will not be deserialized correctly if a
non-Serializable object is stored in this field.

So we set the field transient 

  @SpringBean(name = "mySpringBean")
   transient MyPOJO config; 

So that Findbugs didn't complain... that the reason why we decided to
develop this Helper to set SpringBean in the readObject() method. Perhaps we
won't do all that is the documentation tell explicitly that we didn't have
to take care of the deserialization of SpringBean (as
SpringComponentInjector inject Serializable proxies)

Regards,


Gerald Reinhart 


-- 
View this message in context: http://www.nabble.com/%40SpringBean-and-serialization-tp15330505p18714397.html
Sent from the Wicket - User mailing list archive at Nabble.com.


---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@wicket.apache.org
For additional commands, e-mail: users-help@wicket.apache.org


Re: @SpringBean and serialization

Posted by James Carman <ja...@carmanconsulting.com>.
You don't have to mark your field as transient.  The proxy is indeed
serializable (at least the object that it writeReplaces itself with
is) and will re-establish itself upon deserialization.

On Tue, Jul 29, 2008 at 4:11 AM, Gerald Reinhart <ge...@googlemail.com> wrote:
>
>
> jwcarman wrote:
>>
>> Why are you doing this again?  @SpringBean already takes care of
>> re-establishing the connection upon deserialization.
>>
>
> Are you sure ?
>
>
> Sebastiaan van Erk wrote:
>>
>> The myService field is filled with a proxy to the service which is
>> serializable and can look up
>> the service again if it is lost (due to a serialize/deserialize cycle of
>> the component). The proxy is injected on instantiation of the component
>> and NOT on deserialization (see also IComponentInstantiationListener).
>>
>> Marking it transient will not work because after deserialize the
>> myService field will be null, calling all subsequent calls to the
>> service to fail with a NullPointerException.
>>
>
> --
> View this message in context: http://www.nabble.com/%40SpringBean-and-serialization-tp15330505p18707368.html
> Sent from the Wicket - User mailing list archive at Nabble.com.
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: users-unsubscribe@wicket.apache.org
> For additional commands, e-mail: users-help@wicket.apache.org
>
>

---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@wicket.apache.org
For additional commands, e-mail: users-help@wicket.apache.org


Re: @SpringBean and serialization

Posted by Gerald Reinhart <ge...@googlemail.com>.

jwcarman wrote:
> 
> Why are you doing this again?  @SpringBean already takes care of
> re-establishing the connection upon deserialization.
> 

Are you sure ?


Sebastiaan van Erk wrote:
> 
> The myService field is filled with a proxy to the service which is
> serializable and can look up
> the service again if it is lost (due to a serialize/deserialize cycle of
> the component). The proxy is injected on instantiation of the component
> and NOT on deserialization (see also IComponentInstantiationListener).
> 
> Marking it transient will not work because after deserialize the
> myService field will be null, calling all subsequent calls to the
> service to fail with a NullPointerException. 
> 

-- 
View this message in context: http://www.nabble.com/%40SpringBean-and-serialization-tp15330505p18707368.html
Sent from the Wicket - User mailing list archive at Nabble.com.


---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@wicket.apache.org
For additional commands, e-mail: users-help@wicket.apache.org


Re: @SpringBean and serialization

Posted by James Carman <ja...@carmanconsulting.com>.
Why are you doing this again?  @SpringBean already takes care of
re-establishing the connection upon deserialization.


On Mon, Jul 28, 2008 at 11:49 AM, Gerald Reinhart
<ge...@googlemail.com> wrote:
>
> I've implemented a little solution to inject SpringBean of Wicket Pages on
> the un-serialization event :
>
> 1 - Make the SpringContext available in a static way :
>
> public class MyWebApplication extends SpringWebApplication {
>
>    private static ApplicationContext springApplicationContext = null ;
>
>        @Override
>          protected void init() {
>                  super.init();
>                  addComponentInstantiationListener(new SpringComponentInjector(this));
>
>                  springApplicationContext = getSpringContextLocator().getSpringContext()
> ;
>
>     (...)
>
>
>        public static ApplicationContext getApplicationContext(){
>                  return springApplicationContext ;
>          }
>
>     (...)
> }
>
>
> 2 - Define an Helper to inspect by introspection your classes in order to :
>   select all transiant fields having a SpringBean and a Required annotation
>   make access to the setter method of the fields (throw all super classes
> of it)
>
>
> public class AnnotatedFieldHelper{
>
>        private Class clazz ;
>
>        private Field field = null;
>
>        private boolean isTransient = false;
>
>        private boolean isSpringBean = false;
>
>        private boolean isRequired = false;
>
>        private String springBeanName = null;
>
>
>    (...)
>
>        /**
>         * Build a list of all transient field of the Class
>         * @param clazz
>         * @return
>         */
>        public static List<AnnotatedField> getTransientAnnotatedField(Class clazz)
> {
>
>                List<AnnotatedField> list = new ArrayList<AnnotatedField>();
>
>               List<Field> fields = new ArrayList<Field>() ;
>
>                // Get all fields (event field from the super classes )
>                Class cl = clazz ;
>                do{
>                        for (Field f : cl.getDeclaredFields()){
>                                fields.add(f) ;
>                        }
>                        cl = cl.getSuperclass() ;
>                }while ( cl != null   ) ;
>
>
>                for (Field f : fields) {
>                        if (Modifier.isTransient(f.getModifiers())) {
>
>                                AnnotatedField af = new AnnotatedField(clazz, f);
>                                af.setTransient(true);
>
>                                Annotation[] annotations = f.getAnnotations();
>                                for (Annotation a : annotations) {
>                                        if (a instanceof SpringBean) {
>                                                af.setSpringBean(true);
>
>                                                SpringBean sb = (SpringBean) a;
>                                                String patternStr =
> "@org.apache.wicket.spring.injection.annot.SpringBean\\(name=(.*)\\)";
>                                                Pattern pattern = Pattern.compile(patternStr);
>                                                Matcher matcher = pattern.matcher("");
>                                                matcher.reset(sb.toString());
>                                                if (matcher.find()) {
>                                                        af.setSpringBeanName(matcher.group(1));
>                                                }else{
>                                                        af.setSpringBeanName(null);
>                                                }
>                                        }
>                                }
>
>                                String setterName = getSetterName (f.getName());
>                                boolean isRequired = false;
>                                try {
>                                        Method setter = clazz.getMethod(setterName, f.getType());
>                                        Annotation[] annotationsSetter = setter.getAnnotations();
>                                        for (Annotation a : annotationsSetter) {
>                                                if (a instanceof Required) {
>                                                        isRequired = true;
>                                                }
>                                        }
>                                } catch (NoSuchMethodException e) {
>                                        isRequired = false;
>                                } catch (SecurityException e) {
>                                        isRequired = false;
>                                }
>
>                                af.setRequired(isRequired);
>                                list.add(af);
>                        }
>                }
>                return list;
>        }
>
>
> }
>
>
> 3 - Define a super class for all your Wicket Page to serialize all transiant
> SpringBean
>
> public class MySuperPage extends WebPage {
>
>
>        @Override
>        public ApplicationContext getApplicationContext(){
>                return MyWebApplication.getApplicationContext() ;
>        }
>
>
>        /**
>         * Set all transient fields of the page managed by Spring from the spring
>         * context
>         *
>         * @throws RuntimeException
>         */
>        protected void setAllTransientSpringFields() throws RuntimeException {
>
>                List<AnnotatedField> tafList =
> AnnotatedFieldHelper.getTransientAnnotatedField(getClass());
>                for (AnnotatedField af : tafList) {
>                        if (af.isSpringBean() && af.getSpringBeanName() != null) {
>                                try {
>                                        Object bean = getApplicationContext().getBean(af.getSpringBeanName());
>                                        af.getSetter().invoke(this, bean);
>                                } catch (BeansException e) {
>                                        throw new RuntimeException("Impossible to get " +
> af.getSpringBeanName()
>                                                        + " the from the Spring Context");
>                                } catch (Exception e) {
>                                        throw new RuntimeException("Impossible to set " +
> af.getField().getName());
>                                }
>                        }
>                }
>        }
>
>
> 4 - Put transiant all SpringBean not serializable of the Wicket Page and
> define the readObject method using your helper
>
> public class MyPage extends MySuperPage {
>
>  private static final long serialVersionUID = 1L;
>
>        @SpringBean(name = "mySpringBean")
>        transient MyPOJO config;
>
>        @Required
>        public void setMyPOJO(MyPOJO config) {
>                this.config = config;
>        }
>
>  (...)
>
>
>        /**
>         * Creates transient objects
>         * Annotation introspection for all Required transient field
>         */
>        private void readObject(ObjectInputStream stream) throws IOException,
> ClassNotFoundException {
>                stream.defaultReadObject();
>                setAllTransientSpringFields();
>        }
>
>
>
> -----------------------------------------------------------------------------
>
> Some questions ?
>  - Is it a good way do that ?
>  - Is there an existing helper to do that ?
>  - If it's a good way and if ther is no existing helper, can i contrib to
> Wicket ?
>
> Regards,
>
>
> Gerald Reinhart
>
> --
> View this message in context: http://www.nabble.com/%40SpringBean-and-serialization-tp15330505p18691954.html
> Sent from the Wicket - User mailing list archive at Nabble.com.
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: users-unsubscribe@wicket.apache.org
> For additional commands, e-mail: users-help@wicket.apache.org
>
>

---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@wicket.apache.org
For additional commands, e-mail: users-help@wicket.apache.org


Re: @SpringBean and serialization

Posted by Gerald Reinhart <ge...@googlemail.com>.
I've implemented a little solution to inject SpringBean of Wicket Pages on
the un-serialization event :

1 - Make the SpringContext available in a static way :

public class MyWebApplication extends SpringWebApplication {

    private static ApplicationContext springApplicationContext = null ;
   
  	@Override
	  protected void init() {
		  super.init();
		  addComponentInstantiationListener(new SpringComponentInjector(this));
		
		  springApplicationContext = getSpringContextLocator().getSpringContext()
;
		
     (...)


   	public static ApplicationContext getApplicationContext(){
		  return springApplicationContext ;
	  }

     (...)
}


2 - Define an Helper to inspect by introspection your classes in order to : 
   select all transiant fields having a SpringBean and a Required annotation 
   make access to the setter method of the fields (throw all super classes
of it)


public class AnnotatedFieldHelper{

	private Class clazz ;
	
	private Field field = null;

	private boolean isTransient = false;

	private boolean isSpringBean = false;

	private boolean isRequired = false;

	private String springBeanName = null;
	

    (...)
   
	/**
	 * Build a list of all transient field of the Class
	 * @param clazz
	 * @return
	 */
	public static List<AnnotatedField> getTransientAnnotatedField(Class clazz)
{

		List<AnnotatedField> list = new ArrayList<AnnotatedField>();

               List<Field> fields = new ArrayList<Field>() ;
        
                // Get all fields (event field from the super classes )
		Class cl = clazz ;
		do{
			for (Field f : cl.getDeclaredFields()){
				fields.add(f) ;
			}
			cl = cl.getSuperclass() ;
		}while ( cl != null   ) ;
				
		
		for (Field f : fields) {
			if (Modifier.isTransient(f.getModifiers())) {

				AnnotatedField af = new AnnotatedField(clazz, f);
				af.setTransient(true);

				Annotation[] annotations = f.getAnnotations();
				for (Annotation a : annotations) {
					if (a instanceof SpringBean) {
						af.setSpringBean(true);

						SpringBean sb = (SpringBean) a;
						String patternStr =
"@org.apache.wicket.spring.injection.annot.SpringBean\\(name=(.*)\\)";
						Pattern pattern = Pattern.compile(patternStr);
						Matcher matcher = pattern.matcher("");
						matcher.reset(sb.toString());
						if (matcher.find()) {
							af.setSpringBeanName(matcher.group(1));
						}else{
							af.setSpringBeanName(null);
						}
					}
				}

				String setterName = getSetterName (f.getName());
				boolean isRequired = false;
				try {
					Method setter = clazz.getMethod(setterName, f.getType());
					Annotation[] annotationsSetter = setter.getAnnotations();
					for (Annotation a : annotationsSetter) {
						if (a instanceof Required) {
							isRequired = true;
						}
					}
				} catch (NoSuchMethodException e) {
					isRequired = false;
				} catch (SecurityException e) {
					isRequired = false;
				}

				af.setRequired(isRequired);
				list.add(af);
			}
		}
		return list;
	}


} 


3 - Define a super class for all your Wicket Page to serialize all transiant
SpringBean

public class MySuperPage extends WebPage {


	@Override
	public ApplicationContext getApplicationContext(){
		return MyWebApplication.getApplicationContext() ;
	}


	/**
	 * Set all transient fields of the page managed by Spring from the spring
	 * context
	 * 
	 * @throws RuntimeException
	 */
	protected void setAllTransientSpringFields() throws RuntimeException {

		List<AnnotatedField> tafList =
AnnotatedFieldHelper.getTransientAnnotatedField(getClass());
		for (AnnotatedField af : tafList) {
			if (af.isSpringBean() && af.getSpringBeanName() != null) {
				try {
					Object bean = getApplicationContext().getBean(af.getSpringBeanName());
					af.getSetter().invoke(this, bean);
				} catch (BeansException e) {
					throw new RuntimeException("Impossible to get " +
af.getSpringBeanName()
							+ " the from the Spring Context");
				} catch (Exception e) {
					throw new RuntimeException("Impossible to set " +
af.getField().getName());
				}
			}
		}
	}


4 - Put transiant all SpringBean not serializable of the Wicket Page and
define the readObject method using your helper 

public class MyPage extends MySuperPage {

  private static final long serialVersionUID = 1L;

 	@SpringBean(name = "mySpringBean")
	transient MyPOJO config;

	@Required
	public void setMyPOJO(MyPOJO config) {
		this.config = config;
	}

  (...)


	/**
	 * Creates transient objects
	 * Annotation introspection for all Required transient field
	 */
	private void readObject(ObjectInputStream stream) throws IOException,
ClassNotFoundException {
		stream.defaultReadObject();
		setAllTransientSpringFields();
	}



-----------------------------------------------------------------------------

Some questions ?
  - Is it a good way do that ?
  - Is there an existing helper to do that ?
  - If it's a good way and if ther is no existing helper, can i contrib to
Wicket ?
  
Regards,


Gerald Reinhart

-- 
View this message in context: http://www.nabble.com/%40SpringBean-and-serialization-tp15330505p18691954.html
Sent from the Wicket - User mailing list archive at Nabble.com.


---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@wicket.apache.org
For additional commands, e-mail: users-help@wicket.apache.org


Re: @SpringBean and serialization

Posted by Igor Vaynberg <ig...@gmail.com>.
correct

-igor


On Feb 7, 2008 4:43 AM, Sebastiaan van Erk <se...@sebster.com> wrote:
> dfernandez wrote:
> > Hello everyone,
> >
> > I have a question regarding the relation between the @SpringBean annotation
> > and the serialization of objects being referenced in a Page. If I have:
> >
> > @SpringBean(name="myBean")
> > protected MyService myService;
> >
> > May I suppose that the proxy object that @SpringBean will create for
> > "myService" will handle serialization properly? (this is, forgetting about
> > the reference to the Spring object when serializing, and retrieving it again
> > when de-serializing...)
>
> > If this is so, I also suppose that it would be *incorrect* to mark this
> > property as "transient", right? like,
> >
> > @SpringBean(name="myBean")
> > protected transient MyService myService;
> >
> > ...and if this is incorrect as I suppose, we are on a little "formal issue"
> > here, as we are using a neither-serializable-nor-transient object (the
> > service) inside a serializable object (the page), which is formally
> > incorrect, but which we know will work because we are relying on the proxy
> > implementation (and thus binding to it)...
> >
> > Could anyone please confirm that this works this way?
>
> As far as I know, that is exactly how it works. The myService field is
> filled with a proxy to the service which is serializable and can look up
> the service again if it is lost (due to a serialize/deserialize cycle of
> the component). The proxy is injected on instantiation of the component
> and NOT on deserialization (see also IComponentInstantiationListener).
>
> Marking it transient will not work because after deserialize the
> myService field will be null, calling all subsequent calls to the
> service to fail with a NullPointerException.
>
> > Many thanks,
> > Daniel.
>
> Regards,
> Sebastiaan
>

---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@wicket.apache.org
For additional commands, e-mail: users-help@wicket.apache.org


Re: @SpringBean and serialization

Posted by Sebastiaan van Erk <se...@sebster.com>.
dfernandez wrote:
> Hello everyone,
> 
> I have a question regarding the relation between the @SpringBean annotation
> and the serialization of objects being referenced in a Page. If I have:
> 
> @SpringBean(name="myBean")
> protected MyService myService;
> 
> May I suppose that the proxy object that @SpringBean will create for
> "myService" will handle serialization properly? (this is, forgetting about
> the reference to the Spring object when serializing, and retrieving it again
> when de-serializing...)

> If this is so, I also suppose that it would be *incorrect* to mark this
> property as "transient", right? like,
> 
> @SpringBean(name="myBean")
> protected transient MyService myService;
> 
> ...and if this is incorrect as I suppose, we are on a little "formal issue"
> here, as we are using a neither-serializable-nor-transient object (the
> service) inside a serializable object (the page), which is formally
> incorrect, but which we know will work because we are relying on the proxy
> implementation (and thus binding to it)...
> 
> Could anyone please confirm that this works this way?

As far as I know, that is exactly how it works. The myService field is 
filled with a proxy to the service which is serializable and can look up 
the service again if it is lost (due to a serialize/deserialize cycle of 
the component). The proxy is injected on instantiation of the component 
and NOT on deserialization (see also IComponentInstantiationListener).

Marking it transient will not work because after deserialize the 
myService field will be null, calling all subsequent calls to the 
service to fail with a NullPointerException.

> Many thanks,
> Daniel.

Regards,
Sebastiaan

Re: @SpringBean and serialization

Posted by Michael Sparer <mi...@gmx.at>.
hi daniel, 

"May I suppose that the proxy object that @SpringBean will create for
"myService" will handle serialization properly? (this is, forgetting about
the reference to the Spring object when serializing, and retrieving it again
when de-serializing...)"

that's how it works AFAIK, so marking it as transient would only work on a
clustered environment if you manually re-inject the beans on
de-serialization, as wicket injects the beans on component instantiation
(and not on deserialization, correct me if I'm wrong)
regards, 

Michael


dfernandez wrote:
> 
> Hello everyone,
> 
> I have a question regarding the relation between the @SpringBean
> annotation and the serialization of objects being referenced in a Page. If
> I have:
> 
> @SpringBean(name="myBean")
> protected MyService myService;
> 
> May I suppose that the proxy object that @SpringBean will create for
> "myService" will handle serialization properly? (this is, forgetting about
> the reference to the Spring object when serializing, and retrieving it
> again when de-serializing...)
> 
> If this is so, I also suppose that it would be *incorrect* to mark this
> property as "transient", right? like,
> 
> @SpringBean(name="myBean")
> protected transient MyService myService;
> 
> ...and if this is incorrect as I suppose, we are on a little "formal
> issue" here, as we are using a neither-serializable-nor-transient object
> (the service) inside a serializable object (the page), which is formally
> incorrect, but which we know will work because we are relying on the proxy
> implementation (and thus binding to it)...
> 
> Could anyone please confirm that this works this way?
> 
> Many thanks,
> Daniel.
> 
> 
> 


-----
Michael Sparer
http://talk-on-tech.blogspot.com
-- 
View this message in context: http://www.nabble.com/%40SpringBean-and-serialization-tp15330505p15330965.html
Sent from the Wicket - User mailing list archive at Nabble.com.


---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@wicket.apache.org
For additional commands, e-mail: users-help@wicket.apache.org