Hi
I refer this blog
http://piotrnowicki.com/2011/03/using-servlets-3-0-servletcontainerinitializer
to write a new java file named BundleServletContainerInitializer which
implement interface ServletContainerInitializer, it override function
onStartup(Set<Class<?>> c, ServletContext ctx) , i don't do any complicate
implementation but print some logs, and build it into a separated Jar, then put
it into WEB-INF/lib/ directory of web application bundle. at last, i run felix
again, i got the following error:
D:\work\felix-framework-4.2.1>java -Dlogback.configurationFile=logback.xml -Dlog
4j.configuration=file:log4j.properties -jar bin/felix.jar
Auto-properties start: file:thirdpart/dep/org.apache.catalina.ha-7.0.53.v2014060
70630.jar (org.osgi.framework.BundleException: Fragment bundles can not be start
ed.)
Auto-properties start: file:thirdpart/dep/org.apache.catalina.tribes-7.0.53.v201
406070630.jar (org.osgi.framework.BundleException: Fragment bundles can not be s
tarted.)
Auto-properties start: file:thirdpart/dep/org.apache.coyote-7.0.53.v201406070630
.jar (org.osgi.framework.BundleException: Fragment bundles can not be started.)
Auto-properties start: file:thirdpart/dep/org.apache.jasper-7.0.53.v201406070630
.jar (org.osgi.framework.BundleException: Fragment bundles can not be started.)
Auto-properties start: file:thirdpart/dep/org.apache.tomcat.util-7.0.53.v2014060
70630.jar (org.osgi.framework.BundleException: Fragment bundles can not be start
ed.)
Auto-properties start: file:thirdpart/dep/org.apache.tomcat.websocket-7.0.53.v20
1406070630.jar (org.osgi.framework.BundleException: Fragment bundles can not be
started.)
____________________________
Welcome to Apache Felix Gogo
g! 七月 14, 2014 5:24:48 下午 org.apache.catalina.core.AprLifecycleListener init
INFO: The APR based Apache Tomcat Native library which allows optimal performanc
e in production environments was not found on the java.library.path: C:\Windows\
system32;C:\Windows\Sun\Java\bin;C:\Windows\system32;C:\Windows;C:\Windows\syste
m32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1
.0\;C:\Program Files\SinoVoice\jTTS 5.0 Desktop\Bin;C:\Program Files\Citrix\Syst
em32\;C:\Program Files\Citrix\ICAService\;C:\PROGRA~1\ULTRAE~1;C:\Program Files\
TortoiseGit\bin;C:\Python27;C:\Program Files\TortoiseSVN\bin;D:\soft\apache-mave
n-3.1.0\bin;D:\soft\apache-maven-3.1.0\bin;.
七月 14, 2014 5:24:48 下午 org.apache.coyote.AbstractProtocol init
INFO: Initializing ProtocolHandler ["http-bio-8080"]
七月 14, 2014 5:24:48 下午 org.apache.catalina.mbeans.GlobalResourcesLifecycleLi
stener createMBeans
SEVERE: No global naming context defined for server
七月 14, 2014 5:24:48 下午 org.apache.catalina.core.StandardService startInterna
l
INFO: Starting service Catalina
七月 14, 2014 5:24:48 下午 org.apache.catalina.core.StandardEngine startInternal
INFO: Starting Servlet Engine: Apache Tomcat/7.0.53
七月 14, 2014 5:24:48 下午 org.apache.coyote.AbstractProtocol start
INFO: Starting ProtocolHandler ["http-bio-8080"]
GossipRouter started at Mon Jul 14 17:24:51 GMT+08:00 2014
Listening on port 12001 bound on address 0.0.0.0/0.0.0.0
Backlog is 1000, linger timeout is 2000, and read timeout is 0
七月 14, 2014 5:25:04 下午 org.glassfish.jersey.server.ApplicationHandler initia
lize
INFO: Initiating Jersey application, version Jersey: 2.4 2013-10-24 18:25:49...
七月 14, 2014 5:25:04 下午 org.apache.catalina.startup.ContextConfig processServ
letContainerInitializers
SEVERE: Failed to process JAR found at URL [/controller/nb/cluster] for ServletC
ontainerInitializers for context with name [{1}]
java.io.IOException: java.lang.ClassCastException: Cannot cast
com.testorg.sdnc.n
orthbound.customservletcontainerinit.BundleServletContainerInitializer to javax.
servlet.ServletContainerInitializer
at org.apache.catalina.startup.WebappServiceLoader.loadServices(WebappSe
rviceLoader.java:196)
at org.apache.catalina.startup.WebappServiceLoader.load(WebappServiceLoa
der.java:152)
at org.apache.catalina.startup.ContextConfig.processServletContainerInit
ializers(ContextConfig.java:1543)
at org.apache.catalina.startup.ContextConfig.webConfig(ContextConfig.jav
a:1265)
at org.apache.catalina.startup.ContextConfig.configureStart(ContextConfi
g.java:873)
at org.apache.catalina.startup.ContextConfig.lifecycleEvent(ContextConfi
g.java:371)
at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(Lifecycl
eSupport.java:117)
at org.apache.catalina.util.LifecycleBase.fireLifecycleEvent(LifecycleBa
se.java:90)
at org.apache.catalina.core.StandardContext.startInternal(StandardContex
t.java:5355)
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase
.java:901)
at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:87
7)
at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:632)
at org.eclipse.gemini.web.tomcat.internal.TomcatServletContainer.startWe
bApplication(TomcatServletContainer.java:125)
at org.eclipse.gemini.web.internal.StandardWebApplication.start(Standard
WebApplication.java:109)
at org.eclipse.gemini.web.extender.WebContainerBundleCustomizer.addingBu
ndle(WebContainerBundleCustomizer.java:49)
at org.osgi.util.tracker.BundleTracker$Tracked.customizerAdding(BundleTr
acker.java:467)
at org.osgi.util.tracker.BundleTracker$Tracked.customizerAdding(BundleTr
acker.java:414)
at org.osgi.util.tracker.AbstractTracked.trackAdding(AbstractTracked.jav
a:256)
at org.osgi.util.tracker.AbstractTracked.track(AbstractTracked.java:229)
at org.osgi.util.tracker.BundleTracker$Tracked.bundleChanged(BundleTrack
er.java:443)
at org.apache.felix.framework.util.EventDispatcher.invokeBundleListenerC
allback(EventDispatcher.java:868)
at org.apache.felix.framework.util.EventDispatcher.fireEventImmediately(
EventDispatcher.java:789)
at org.apache.felix.framework.util.EventDispatcher.fireBundleEvent(Event
Dispatcher.java:514)
at org.apache.felix.framework.Felix.fireBundleEvent(Felix.java:4403)
at org.apache.felix.framework.Felix.startBundle(Felix.java:2092)
at org.apache.felix.framework.Felix.setActiveStartLevel(Felix.java:1291)
at org.apache.felix.framework.FrameworkStartLevelImpl.run(FrameworkStart
LevelImpl.java:304)
at java.lang.Thread.run(Unknown Source)
Caused by: java.lang.ClassCastException: Cannot cast com.huawei.sdnc.northbound.
customservletcontainerinit.BundleServletContainerInitializer to javax.servlet.Se
rvletContainerInitializer
at java.lang.Class.cast(Unknown Source)
at org.apache.catalina.startup.WebappServiceLoader.loadServices(WebappSe
rviceLoader.java:188)
... 28 more
七月 14, 2014 5:25:04 下午 org.apache.catalina.startup.ContextConfig configureSt
art
SEVERE: Marking this application unavailable due to previous error(s)
七月 14, 2014 5:25:04 下午 org.apache.catalina.core.StandardContext startInterna
l
SEVERE: Error getConfigured
七月 14, 2014 5:25:04 下午 org.apache.catalina.core.StandardContext startInterna
l
SEVERE: Context [/controller/nb/cluster] startup failed due to previous errors
seems that i use the wrong jar for interface ServletContainerInitializer, I use
servlet-api.jar, could you please tell me which jar package is right one?
--denghui
Date: Thu, 10 Jul 2014 18:13:44 +0300
From: [email protected]
To: [email protected]
Subject: Re: [gemini-dev] Need help for gemini web.
Hi,
Gemini Web will initialize ServletContainerInitializer placed in
WEB-INF/lib/*.jar or placed in a bundle that is required by web app bundle i.e
import-packages or require-bundle.
Or you can use JarScannerCustomizer - here [1] you can find an example.
You can use one of these three methods depending on the scenario.
Regards,
Violeta
[1]
http://git.eclipse.org/c/gemini.web/org.eclipse.gemini.web.gemini-web-container.git/tree/test-bundles/customizer-bundle
http://git.eclipse.org/c/gemini.web/org.eclipse.gemini.web.gemini-web-container.git/tree/org.eclipse.gemini.web.test/src/test/java/org/eclipse/gemini/web/test/tomcat/TomcatServletContainerTests.java
-> testCustomizers()
2014-07-10 17:41 GMT+03:00 huangdenghui <[email protected]>:
Hi Violeta
Thanks for your quickly reply. Yes, i already download felix and Gemini web
bundles, then start felix with
"java -jar bin/felix.jar", all Gemini web bundles start successfully.
Let's firstly describe what i am done, then describe what problem i met, I
have several bundles to provide web service, just like hosttracker module from
opendaylight, please refer
https://git.opendaylight.org/gerrit/gitweb?p=controller.git;a=tree;f=opendaylight/northbound/hosttracker;hb=eee61ea351b6179d2862dce6875bdc25dd0fb272,
it has a web.xml to describe this web application's attribute, such as servlet
class, please refer hosttracker's web.xml
https://git.opendaylight.org/gerrit/gitweb?p=controller.git;a=tree;f=opendaylight/northbound/hosttracker/src/main/resources/WEB-INF;h=b42ae8116d116e38e6cf44eaffda6daeeba3b97c;hb=eee61ea351b6179d2862dce6875bdc25dd0fb272
Now, coming to my problem,
after start gemini web, when web application bundled get start, gemini web will
found it is web application, it will try to allocate one context container for
it, this is my understanding, if it is wrong, please correct me,
my error log is
can't find JAR for some web application URL ServletContainerInitializer
so because this error, gemini web mark that web application unavailable.
Then i follow this article
http://stackoverflow.com/questions/10776599/servletcontainerinitializer-vs-servletcontextlistener
to custom my servletcontainerinitializer, but still it doesn't work,
also i read tomcat source code, there is some code section to check whether the
servletcontainerinitializer existed?
but technically, the ServletContainerInitializer is not a listener �C it is an
initializer and it’s executed before
any servlet context will even be ready. You can use this initializer to
do some programatic servlet/filters/listeners addition,
So, is there any configuration option to make gemini web not to check it.
Date: Wed, 9 Jul 2014 21:31:08 +0300
From: [email protected]
To: [email protected]
Subject: Re: [gemini-dev] Need help for gemini web.
Hi,
Just download felix [1], then extract its archive and put all 34 Gemini Web
bundles in the "bundle" directory.
Then start felix with "java -jar bin/felix.jar".
That's all.
Regards
Violeta
[1] http://felix.apache.org/downloads.cgi -> Felix Framework Distribution
2014-07-09 19:01 GMT+03:00 huangdenghui <[email protected]>:
>
> Hi team,
>
>
> I want to use gemini web to implement web application in OSGI environment
> to support northbound API in one SDN controller, just like opendaylight
> project does, but i use different OSGI container from opendaylight, my
> project is based on felix, opendaylight is based on equinox. So is there any
> docs about how to configure gemini web in felix OSGI environment? Yes, i
> check user guide, but it don't provide very detailed information for how to
> configure it.
>
> --denghui
>
>
> _______________________________________________
> gemini-dev mailing list
> [email protected]
> To change your delivery options, retrieve your password, or unsubscribe from
> this list, visit
> https://dev.eclipse.org/mailman/listinfo/gemini-dev
_______________________________________________
gemini-dev mailing list
[email protected]
To change your delivery options, retrieve your password, or unsubscribe from
this list, visit
https://dev.eclipse.org/mailman/listinfo/gemini-dev
_______________________________________________
gemini-dev mailing list
[email protected]
To change your delivery options, retrieve your password, or unsubscribe from
this list, visit
https://dev.eclipse.org/mailman/listinfo/gemini-dev
_______________________________________________
gemini-dev mailing list
[email protected]
To change your delivery options, retrieve your password, or unsubscribe from
this list, visit
https://dev.eclipse.org/mailman/listinfo/gemini-dev
_______________________________________________
gemini-dev mailing list
[email protected]
To change your delivery options, retrieve your password, or unsubscribe from
this list, visit
https://dev.eclipse.org/mailman/listinfo/gemini-dev