Je suis en train de commencer une application Wicket en utilisant la mise en œuvre Felix de services OSGi HTTP, pour que j'enregistrer juste le paramètre service à l'aide WicketServlet
avec applicationClassName
:Démarrage application web Wicket avec OSGi service HTTP
props.put("applicationClassName", MainApplication.class.getName());
service = (HttpService)context.getService(httpReference);
service.registerServlet("/", new WicketServlet(), props, null);
Je également essayé d'utiliser la mise en œuvre et de l'enregistrement Felix Whiteboard le service Web comme un Servlet
:
props.put("alias", "/");
props.put("init.applicationClassName", MainApplication.class.getName());
registration = context.registerService(Servlet.class.getName(), new WicketServlet(), props);
Dans les deux cas, il ne parvient quand je déploie à l'aide de Pax Runner et Felix (mvn package install pax:run -Dframework=felix -Dprofiles=log,config
) , L'exception semble être lié à la ClassLoader
:
[Jetty HTTP Service] ERROR org.apache.felix.http.whiteboard - Failed to register servlet
org.apache.wicket.WicketRuntimeException: Unable to create application of class es.warp.sample.HTTPLocalGUI.MainApplication
....
....
at java.lang.ClassLoader.loadClass(ClassLoader.java:252)
at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:320)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:247)
....
....
J'ai essayé d'exporter tout le bundle et il fait la même chose.
Le plus étrange est que cela fonctionne parfaitement si je l'aide Equinox déploie (mvn package install pax:run -Dframework=felix -Dprofiles=log,config
).
Il semble être un problème de visibilty, mais je ne sais pas comment le résoudre, je fais quelque chose de mal? Dois-je essayer d'étendre WicketServlet
pour prendre le contrôle sur l'instanciation de l'application? Ou peut-être en utilisant une application Factory?
Mise à jour: Ou peut-être en utilisant une application Factory?
J'ai essayé de régler le paramètre applicationFactoryClassName
-ContextParamWebApplicationFactory.class.getName()
et n'a pas aidé, à défaut encore avec felix et de travailler avec l'équinoxe.
Toute lumière est la bienvenue.
Un grand merci, cela a fonctionné, aussi en utilisant WicketServlet :) –
Toute idée pourquoi il ne semble pas fonctionner pour moi? Au lieu du code dans l'activateur, je l'ai défini dans mon site Web.fichier xml: \t \t \t wicket.web-hub filter-name> \t \t com.hub.web.base.MyWicketFilter filtre classe> \t \t \t \t \t applicationClassName \t \t \t com.hub.web.base.WicketApplication param-value> \t \t \t –
SSV