Hi,

We are using Wicket as the UI layer in our OSGi application platform
project. The registration of WicketServlet (or filter) is done in the
very similar way like the Edgar wrote (even we have the same class
names :)). And it is quite simple.
The main problem is with Spring (precisely with spring bean
injection). In OSGi each bundle has its own ApplicationContext
(AppCtxt) and ClassLoader, so the standard Wicket mechanism
(wicket-spring & wicket-spring-annot) does not work when you want to
use more than one bundle in your app.

Problems:
1. There is one AppCtxt inside application (eg. SpringWebApplication),
so when each bundle with your Wicket pages (panels, components, etc.)
has its own AppCtxt you cannot get beans or inject beans in it.
2. InjectorHolder holds only one AppCtxt (it is used when you using
injection outside components).

I have to extend these mechanisms to support multiple AppCtxt. I only
mention here that we have added a new interface to provide a proper
injector:

public interface InjectorProvider {
  ConfigurableInjector getInjector();
}

and instead of using default InjectorHolder we use a there similar
class ContextInjector, which is using InjectorProvider interface for
resolving current injector.
The simple implementation is (in apps outside OSGi - with only one AppCtxt):

public class DefaultInjectorProvider implements InjectorProvider {

  public ConfigurableInjector getInjector() {
    return InjectorHolder.getInjector();
  }

}

But inside OSGi injectors are hold in context of bunldes' class
loaders. Maybe in the next versions of Wicket we should think about a
small refactorization to support multiple AppCtxt ;).

"I'm looking for the most flexible way of composing an application and
deploying Wicket pages/panels as OSGi bundles seems like a nice way."

We don't use Pax. We have our own visual plugins' system based on
pages and panels and we can use them to compose a pages or another
plugins. Plugins can be delivered in different bundles. But it is a
long story ;).

Best regards,
Daniel

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to