You are viewing a plain text version of this content. The canonical link for it is here.
Posted to user@karaf.apache.org by Castor <yg...@gmail.com> on 2017/04/04 19:21:34 UTC
Blueprint and Pax-Web
Hello, i'm trying to create a servlet using Blueprint and register it to
Pax-web using the whiteboard pattern but i'm having some trouble.
I've followed the sample at
https://github.com/ops4j/org.ops4j.pax.web/blob/master/samples/whiteboard-blueprint/src/main/resources/OSGI-INF/blueprint/blueprint.xml
, but it seems that the pax-web is failing to register the context.
Here's the logs:
2017-04-04 16:09:28,135 | INFO | nsole user karaf | RotinaServlet
| 102 - br.com.pcsist.winthor.core.winthor-core-servico - 1.3.0.SNAPSHOT |
Servlet registrado no contexto '/852'
2017-04-04 16:09:28,136 | INFO | nsole user karaf | HttpServiceFactoryImpl
| 64 - org.ops4j.pax.web.pax-web-runtime - 4.3.0 | Binding bundle:
[br.com.pcsist.winthor.rotina.winthor-fer-0852 [180]] to http service
2017-04-04 16:09:28,142 | INFO | nsole user karaf | JettyServerWrapper
| 63 - org.ops4j.pax.web.pax-web-jetty - 4.3.0 | will add
org.apache.jasper.servlet.JasperInitializer to ServletContainerInitializers
2017-04-04 16:09:28,142 | INFO | nsole user karaf | JettyServerWrapper
| 63 - org.ops4j.pax.web.pax-web-jetty - 4.3.0 | Skipt
org.apache.jasper.servlet.JasperInitializer, because specialized handler
will be present
2017-04-04 16:09:28,142 | INFO | nsole user karaf | JettyServerWrapper
| 63 - org.ops4j.pax.web.pax-web-jetty - 4.3.0 | will add
org.springframework.web.SpringServletContainerInitializer to
ServletContainerInitializers
2017-04-04 16:09:28,143 | WARN | nsole user karaf | JettyServerWrapper
| 63 - org.ops4j.pax.web.pax-web-jetty - 4.3.0 | failed to parse and
instantiate of javax.servlet.ServletContainerInitializer in classpath
2017-04-04 16:09:28,143 | INFO | nsole user karaf | JettyServerWrapper
| 63 - org.ops4j.pax.web.pax-web-jetty - 4.3.0 | will add
org.eclipse.jetty.websocket.jsr356.server.deploy.WebSocketServerContainerInitializer
to ServletContainerInitializers
2017-04-04 16:09:28,161 | INFO | nsole user karaf | JettyServerWrapper
| 63 - org.ops4j.pax.web.pax-web-jetty - 4.3.0 | added
ServletContainerInitializer:
org.eclipse.jetty.websocket.jsr356.server.deploy.WebSocketServerContainerInitializer
2017-04-04 16:09:28,162 | INFO | nsole user karaf | HttpServiceContext
| 63 - org.ops4j.pax.web.pax-web-jetty - 4.3.0 | registering context
DefaultHttpContext [bundle=br.com.pcsist.winthor.rotina.winthor-fer-0852
[180], contextID=default], with context-name:
2017-04-04 16:09:28,163 | INFO | nsole user karaf | HttpServiceContext
| 63 - org.ops4j.pax.web.pax-web-jetty - 4.3.0 | registering
JasperInitializer
2017-04-04 16:09:28,184 | INFO | nsole user karaf | ContextHandler
| 50 - org.eclipse.jetty.util - 9.2.19.v20160908 | Started
HttpServiceContext{httpContext=DefaultHttpContext
[bundle=br.com.pcsist.winthor.rotina.winthor-fer-0852 [180],
contextID=default]}
And my blueprint.xml
<blueprint xmlns="http://www.osgi.org/xmlns/blueprint/v1.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:cm="http://aries.apache.org/blueprint/xmlns/blueprint-cm/v1.1.0">
<bean id="rotinaServlet"
class="br.com.pcsist.winthor.core.servico.RotinaServlet">
<argument type="java.lang.String" value="/852" />
</bean>
<service id="rotinaServletService" ref="rotinaServlet"
interface="javax.servlet.Servlet">
<service-properties>
<entry key="alias" value="/852" />
<entry key="servlet-name" value="Rotina 852" />
</service-properties>
</service>
</blueprint>
The servlet is getting instantiated, without any problem, but it seems that
the context is not getting mapped to /852 , since i can't see it in web:list
And here: org.ops4j.pax.web.pax-web-jetty - 4.3.0 | registering context
DefaultHttpContext [bundle=br.com.pcsist.winthor.rotina.winthor-fer-0852
[180], contextID=default], with context-name:
i don't see my context in contextName.
What i am doing wrong?
--
View this message in context: http://karaf.922171.n3.nabble.com/Blueprint-and-Pax-Web-tp4050033.html
Sent from the Karaf - User mailing list archive at Nabble.com.
Re: Blueprint and Pax-Web
Posted by Achim Nierbeck <bc...@googlemail.com>.
Hi,
glad you found a solution.
But I think what you actually should be using is more like what is in this
sample/integration-test [1]
Registering a Servlet in one Bundle and re-using a filter from another
bundle
This is handled by a shared context.
In your case you just need a resource servlet, which can also be done with
DS (reduces the footprint compared to blueprint) [2]
and combine it with the filter in a shared context.
regards, Achim
[1] -
https://github.com/ops4j/org.ops4j.pax.web/blob/master/pax-web-itest/pax-web-itest-container/pax-web-itest-container-jetty/src/test/java/org/ops4j/pax/web/itest/jetty/SharedContextFilterIntegrationTest.java
[2] -
https://github.com/ops4j/org.ops4j.pax.web/blob/master/samples/whiteboard-ds/src/main/java/org/ops4j/pax/web/samples/whiteboard/ds/WhiteboardResource.java
2017-04-05 14:52 GMT+02:00 Castor <yg...@gmail.com>:
> I got it!
>
> For future references if someone needs to solve the same problem, i solved
> it retrieving the OSGI service inside the filter using JNDI, it worked like
> a charm.
>
>
>
> --
> View this message in context: http://karaf.922171.n3.nabble.
> com/Blueprint-and-Pax-Web-tp4050033p4050040.html
> Sent from the Karaf - User mailing list archive at Nabble.com.
>
--
Apache Member
Apache Karaf <http://karaf.apache.org/> Committer & PMC
OPS4J Pax Web <http://wiki.ops4j.org/display/paxweb/Pax+Web/> Committer &
Project Lead
blog <http://notizblog.nierbeck.de/>
Co-Author of Apache Karaf Cookbook <http://bit.ly/1ps9rkS>
Software Architect / Project Manager / Scrum Master
Re: Blueprint and Pax-Web
Posted by Castor <yg...@gmail.com>.
I got it!
For future references if someone needs to solve the same problem, i solved
it retrieving the OSGI service inside the filter using JNDI, it worked like
a charm.
--
View this message in context: http://karaf.922171.n3.nabble.com/Blueprint-and-Pax-Web-tp4050033p4050040.html
Sent from the Karaf - User mailing list archive at Nabble.com.
Re: Blueprint and Pax-Web
Posted by Castor <yg...@gmail.com>.
Just updating, when i navigate to http://localhost/852 the servlet is called,
but i can't see the context registered when a run a web:list, not sure if
it's a bug.
Anyway, what i'm trying to do is to use a shared filter in a WAB with pure
html/css files, but i'm not being able to find a nice way to share it
through the bundles, right now my WABs are using the Web-ContextPath
MANIFEST header, which works like a charm, i've exported the filter as an
osgi service, but i'm having trouble to use it in my WABs, how can i do that
using blueprint?
--
View this message in context: http://karaf.922171.n3.nabble.com/Blueprint-and-Pax-Web-tp4050033p4050034.html
Sent from the Karaf - User mailing list archive at Nabble.com.