Hi,

I think your problem is that in Wicket the whole Spring injection
mechanism is prepared for applications where there is only one
ApplicationContext (AC). This AC is hold in the Wicket application
instance. So when you are trying to use @SpringBean annotation Wicket
tries to inject a bean from this AC.
Inside OSGi there are many AC (each bundle has its own AC), so the
base Wicket injection mechanism does not work here for all ACs, only
for one which you are save in Wicket application instance. The best
solution here is to make adaptation of Wicket injection mechanism to
OSGi environment (as we did in our application platform). It is not so
easy, but it can be done :).

It can work as follows (short draft):
When you are using @SpringBean to inject bean inside a class PanelA
then injection mechanism should injects a bean from ApplicationContext
of bundle where class PanelA is defined. So you must store somewhere
information about ApplicationContext in context of bundle class
loader. Then when you injecting a bean to PanelA: get a class PanelA
classloader find a proper AC for it and then inject a bean from this
AC.

--
Daniel

On Tue, Jun 23, 2009 at 10:05 AM, Daniel Dominik
Holúbek<[email protected]> wrote:
> Okay, but I still don't understand the reason of doing this stuff :)I've
> already created the Application bean, and implemented
> ApplicationContextAware.
> Then the setApplicationContext method gets called, so I created
> ApplictionContext variable in that class and set it it that method.
> But if I try to access it in another bundle via Application.get(), it is
> still "null".
> But even if it wasn't, I think that the DAO bean, declared in other bundle
> (database-bundle) would not be there.
>
> Just to make it clear - we've got three bundles. The database bundle has
> everything needed to operate with DB. It creates DAO beans and makes OSGi
> sevices from them. Then, there is an Application bundle. And the last bundle
> is Panel bundle, which is loaded into the App bundle via an extension point.
> I need to access the DAO in the Panel bundle, and there comes the problem
> mentioned above.
>
> That's why I do not understand why should I change the Application bundle
> (except the Panel complaining about Application not being in Spring Extender
> thread).
>
> Thanks for your help :)
>

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to