An update...

I found this:

http://www.tuckey.org/urlrewrite

It's a servlet filter that does all kinds of rewrites. It solves all the
problems with legacy URL's I have. Really neat. I also found an OSGI
wrapped version of this on maven central. Just use this:

<dependency>
>   <groupId>org.apache.servicemix.bundles</groupId>
>   <artifactId>org.apache.servicemix.bundles.urlrewritefilter</artifactId>
>   <version>4.0.4_1</version>
> </dependency>


I also subclassed the UrlRewriteFilter class to make it possible to load
the configuration from a string that I construct at runtime using
configuration properties.

All is well,

/Bengt



2016-11-10 17:31 GMT+01:00 Bengt Rodehav <[email protected]>:

> I now managed to get this working.
>
> I stopped using the Jetty handler for publishing resources from the
> filesystem. Instead I created a Servlet for that purpose. Hope Java with
> NIO is performant enough.
>
> Using that approach it is possible to have overlapping URL's. Servlets
> allow it.
>
> Thanks for all your help!
>
> The one remaining problem for my now is to have aliases for some of my
> URL's for backward compatibility reasons. E g the previous vendor used:
>
>   .../index.php
>
> while we use:
>
>   .../index.html
>
> Also the previous vendor used:
>
>   .../index.php/fund?id=xyz
>
> while we use:
>
>   .../index.html/fund.html?isin=xyz
>
> I've been trying to get Jetty's RewriteHandler to work but can't figure it
> out. I can have it process my URL's but the replacement URL is never found
> (I get a 404).
>
> Maybe there is a trick in Pax-Web for this? Or some fallback Servlet I can
> create that forwards/redirects/rewrites (not exactly sure which term is
> correct) the old URL's to the new URL's. Also sounds like a pretty common
> problem since one often need to support legacy URL's.
>
> /Bengt
>
> /Bengt
>
>
> 2016-11-10 16:12 GMT+01:00 'Achim Nierbeck' via OPS4J <
> [email protected]>:
>
>> The thing is not really two servlets (but for those it's the same) it
>> isn't possible to have two different connection handlers, which you have
>> right now.
>>
>> So if you want to have a chain of responsibility, you'll need servlets
>> and filters, those you can chain. Filters can always be in a pre and post
>> mode.
>>
>> Regarding moving static content to the outside world ... 20 years ago
>> you'd done that to have performance improvments. Nowadays, modern cpus and
>> java are fast enough so you don't need to care anymore.
>> When using different handlers you can't use filters etc for those
>> resources registered via different handlers, as those aren't chained.
>>
>> hope that helps :)
>>
>> regards, Achim
>>
>>
>>
>>
>> 2016-11-10 16:00 GMT+01:00 Bengt Rodehav <[email protected]>:
>>
>>> It seems like a general problem and not just a Pax-Web problem. It is
>>> probably not possible to have two servlets with overlapping context paths.
>>> Although I think it should be possible if one could control the order in
>>> which they are invoked.
>>>
>>> Strange, I would think that this would be a pretty normal thing.
>>>
>>> You seem to be very knowledgable about servlets. How does the actual
>>> invoking of a servlet work? Is it possible to have a chain where one
>>> servlet leaves the request unhandled to be passed on to the next? If not,
>>> then I guess it's Jetty internals that decide what servlet to invoke.
>>>
>>> Would a workaround be to move all my static files out of the bundle and
>>> not use the registerResources() method at all but only use jetty.xml
>>> and org.eclipse.jetty.server.handler.ResourceHandler. Would I loose any
>>> Pax-Web functionality this way?
>>>
>>> /Bengt
>>>
>>>
>>> 2016-11-10 15:35 GMT+01:00 'Achim Nierbeck' via OPS4J <
>>> [email protected]>:
>>>
>>>> ok, at least #1 is solved ... that one worried me.
>>>>
>>>> Using "/" for the HttpService in conjunction with aliases plus an extra
>>>> handler on the same context path ... seems hard to achieve. I fear we need
>>>> an issue for this.
>>>> Combining two handlers on the same context path seems to be a bit
>>>> tricky right now.
>>>>
>>>> regards, Achim
>>>>
>>>>
>>>> 2016-11-10 15:16 GMT+01:00 Bengt Rodehav <[email protected]>:
>>>>
>>>>> An update on this problem...
>>>>>
>>>>> Problem #1 was not a problem but a bug in my code. I created the "//"
>>>>> (double slash) all by myself. Sorry for the buzz.
>>>>>
>>>>> Problem #2 however still exists. If I register resources on the root
>>>>> url using
>>>>>
>>>>>   mWebService.registerResources("/", "/webroot", mHttpContext);
>>>>>
>>>>> Then I cannot publish any resources using jetty.xml and
>>>>> org.eclipse.jetty.server.handler.ResourceHandler.
>>>>>
>>>>> Pax-Web's resource handler does not seem to pass the request on to the
>>>>> handler I register in jetty.xml.
>>>>>
>>>>> So my problem is that I need to accomplish both of these things at the
>>>>> same time:
>>>>>
>>>>> - Map "/logo" to a normal directory using jetty.xml and
>>>>> org.eclipse.jetty.server.handler.ResourceHandler
>>>>> - Map "/" to the "/webroot" directory in my bundle using the
>>>>> registerResources() method.
>>>>>
>>>>> How can I accomplish this?
>>>>>
>>>>> I did try to use "insertRule" in my jetty.xml instead of "addHandler"
>>>>> since I hoped that this would put the "/logo" rule first. However, this
>>>>> syntax does not seem to be supported.
>>>>>
>>>>> /Bengt
>>>>>
>>>>> 2016-11-09 8:58 GMT+01:00 Bengt Rodehav <[email protected]>:
>>>>>
>>>>>> OK - thanks.
>>>>>>
>>>>>> Finally got you :-)
>>>>>>
>>>>>> /Bengt
>>>>>>
>>>>>> 2016-11-08 21:27 GMT+01:00 'Achim Nierbeck' via OPS4J <
>>>>>> [email protected]>:
>>>>>>
>>>>>>> Hi
>>>>>>>
>>>>>>> regarding registering resources on "/" ... I'd expect it to work in
>>>>>>> the way you describe it, but you might have found a bug there.
>>>>>>> The thing about the "/" - context, is. It is special. Since all
>>>>>>> HttpService registered "resources" are registered with this as the 
>>>>>>> context
>>>>>>> ... So it might be that an additional context from outside doesn't play
>>>>>>> along. Will need to test.
>>>>>>>
>>>>>>> regards, Achim
>>>>>>>
>>>>>>>
>>>>>>> 2016-11-08 8:58 GMT+01:00 Bengt Rodehav <[email protected]>:
>>>>>>>
>>>>>>>> Hi again Achim,
>>>>>>>>
>>>>>>>> I'm not exactly sure how you mean. The way I register my resources
>>>>>>>> is via the WebContainer (which I get with iPojo) as follows:
>>>>>>>>
>>>>>>>>   private HttpContext mHttpContext;
>>>>>>>>
>>>>>>>>   @Requires
>>>>>>>>   private WebContainer mWebService;
>>>>>>>>   ...
>>>>>>>>   mHttpContext = mWebService.createDefaultHttpContext();
>>>>>>>>   mWebService.registerResources("/", "/webroot", mHttpContext);
>>>>>>>>
>>>>>>>> The above will get me the double slash problem. If I instead do:
>>>>>>>>
>>>>>>>>   mWebService.registerResources("", "/webroot", mHttpContext);
>>>>>>>>
>>>>>>>> Then I get:
>>>>>>>>
>>>>>>>> Caused by: java.lang.IllegalArgumentException: Alias does not
>>>>>>>> start with slash (/)
>>>>>>>>         at org.ops4j.pax.web.service.spi.
>>>>>>>> model.ServletModel.validateAlias(ServletModel.java:169)
>>>>>>>>         at org.ops4j.pax.web.service.spi.
>>>>>>>> model.ServletModel.<init>(ServletModel.java:53)
>>>>>>>>         at org.ops4j.pax.web.service.spi.
>>>>>>>> model.ResourceModel.<init>(ResourceModel.java:29)
>>>>>>>>         at org.ops4j.pax.web.service.inte
>>>>>>>> rnal.HttpServiceStarted.registerResources(HttpServiceStarted
>>>>>>>> .java:262)
>>>>>>>>         at org.ops4j.pax.web.service.inte
>>>>>>>> rnal.HttpServiceProxy.registerResources(HttpServiceProxy.java:71)
>>>>>>>>         at org.ops4j.pax.web.service.WebC
>>>>>>>> ontainer$$Proxy.registerResources(Unknown Source)
>>>>>>>>         at se.digia.hp.web.HpWebService._
>>>>>>>> _M_init(HpWebService.java:134)
>>>>>>>>         at se.digia.hp.web.HpWebService.init(HpWebService.java)
>>>>>>>>         at se.digia.hp.web.HpWebService._
>>>>>>>> _M_starting(HpWebService.java:47)
>>>>>>>>         at se.digia.hp.web.HpWebService.starting(HpWebService.java)
>>>>>>>>         at sun.reflect.NativeMethodAccessorImpl.invoke0(Native
>>>>>>>> Method)[:1.8.0_74]
>>>>>>>>         at sun.reflect.NativeMethodAccess
>>>>>>>> orImpl.invoke(NativeMethodAccessorImpl.java:62)[:1.8.0_74]
>>>>>>>>         at sun.reflect.DelegatingMethodAc
>>>>>>>> cessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)[:1.8.0_74]
>>>>>>>>         at java.lang.reflect.Method.invok
>>>>>>>> e(Method.java:498)[:1.8.0_74]
>>>>>>>>         at org.apache.felix.ipojo.util.Ca
>>>>>>>> llback.call(Callback.java:237)[50:org.apache.felix.ipojo:1.12.1]
>>>>>>>>         at org.apache.felix.ipojo.util.Ca
>>>>>>>> llback.call(Callback.java:193)[50:org.apache.felix.ipojo:1.12.1]
>>>>>>>>         at org.apache.felix.ipojo.handler
>>>>>>>> s.lifecycle.callback.LifecycleCallback.call(LifecycleCallbac
>>>>>>>> k.java:86)[50:org.apache.felix.ipojo:1.12.1]
>>>>>>>>         at org.apache.felix.ipojo.handler
>>>>>>>> s.lifecycle.callback.LifecycleCallbackHandler.__M_stateChang
>>>>>>>> ed(LifecycleCallbackHandler.java:162)[50:org.apache.felix.i
>>>>>>>> pojo:1.12.1]
>>>>>>>>
>>>>>>>> Specifying null does not work either. If I do
>>>>>>>>
>>>>>>>>   mWebService.registerResources(null, "/webroot", mHttpContext);
>>>>>>>>
>>>>>>>> Then I get:
>>>>>>>>
>>>>>>>> Caused by: java.lang.IllegalArgumentException: Alias does not
>>>>>>>> start with slash (/)
>>>>>>>>         at org.ops4j.pax.web.service.spi.
>>>>>>>> model.ServletModel.validateAlias(ServletModel.java:169)
>>>>>>>>         at org.ops4j.pax.web.service.spi.
>>>>>>>> model.ServletModel.<init>(ServletModel.java:53)
>>>>>>>>         at org.ops4j.pax.web.service.spi.
>>>>>>>> model.ResourceModel.<init>(ResourceModel.java:29)
>>>>>>>>         at org.ops4j.pax.web.service.inte
>>>>>>>> rnal.HttpServiceStarted.registerResources(HttpServiceStarted
>>>>>>>> .java:262)
>>>>>>>>         at org.ops4j.pax.web.service.inte
>>>>>>>> rnal.HttpServiceProxy.registerResources(HttpServiceProxy.java:71)
>>>>>>>>         at org.ops4j.pax.web.service.WebC
>>>>>>>> ontainer$$Proxy.registerResources(Unknown Source)
>>>>>>>>         at se.digia.hp.web.HpWebService._
>>>>>>>> _M_init(HpWebService.java:134)
>>>>>>>>         at se.digia.hp.web.HpWebService.init(HpWebService.java)
>>>>>>>>         at se.digia.hp.web.HpWebService._
>>>>>>>> _M_starting(HpWebService.java:47)
>>>>>>>>         at se.digia.hp.web.HpWebService.starting(HpWebService.java)
>>>>>>>>         at sun.reflect.NativeMethodAccessorImpl.invoke0(Native
>>>>>>>> Method)[:1.8.0_74]
>>>>>>>>         at sun.reflect.NativeMethodAccess
>>>>>>>> orImpl.invoke(NativeMethodAccessorImpl.java:62)[:1.8.0_74]
>>>>>>>>         at sun.reflect.DelegatingMethodAc
>>>>>>>> cessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)[:1.8.0_74]
>>>>>>>>         at java.lang.reflect.Method.invok
>>>>>>>> e(Method.java:498)[:1.8.0_74]
>>>>>>>>         at org.apache.felix.ipojo.util.Ca
>>>>>>>> llback.call(Callback.java:237)[50:org.apache.felix.ipojo:1.12.1]
>>>>>>>>         at org.apache.felix.ipojo.util.Ca
>>>>>>>> llback.call(Callback.java:193)[50:org.apache.felix.ipojo:1.12.1]
>>>>>>>>         at org.apache.felix.ipojo.handler
>>>>>>>> s.lifecycle.callback.LifecycleCallback.call(LifecycleCallbac
>>>>>>>> k.java:86)[50:org.apache.felix.ipojo:1.12.1]
>>>>>>>>         at org.apache.felix.ipojo.handler
>>>>>>>> s.lifecycle.callback.LifecycleCallbackHandler.__M_stateChang
>>>>>>>> ed(LifecycleCallbackHandler.java:162)[50:org.apache.felix.i
>>>>>>>> pojo:1.12.1]
>>>>>>>>
>>>>>>>> It looks like the code you are referring to registers a Servlet
>>>>>>>> which I do not do directly for these resources (although Pax-Web
>>>>>>>> ResourceServlet is probably used under the hood).
>>>>>>>>
>>>>>>>> Perhaps I'd better give you the overall picture...
>>>>>>>>
>>>>>>>> I have a web application consisting of html/javascript/css files.
>>>>>>>> These are included in my app and will reside in my bundle. They are 
>>>>>>>> located
>>>>>>>> in my bundle directory "\webroot". I want "\webroot" to correspond to 
>>>>>>>> the
>>>>>>>> root ("\") context path.
>>>>>>>>
>>>>>>>> I also have a couple of Servlets providing services for my
>>>>>>>> javascript files:
>>>>>>>>
>>>>>>>> - One using the context path "\api" that provides general services.
>>>>>>>> - One using the context path "\admin\login" for logging in. Shiro
>>>>>>>> is automatically implementing "\admin\logout" since I specify in my
>>>>>>>> shiro.ini that this should be the logout page.
>>>>>>>>
>>>>>>>> In addition to the above, I need to externalize some of my
>>>>>>>> resources to a normal directory in the file system. My web application 
>>>>>>>> uses
>>>>>>>> different logos for the different clients and they can upload their 
>>>>>>>> logos
>>>>>>>> on their own so they cannot be a static part of the web  application.
>>>>>>>>
>>>>>>>> So I need something like this:
>>>>>>>>
>>>>>>>> a) The bundle's "\webroot" mapped to "\"
>>>>>>>> b) Servlet mapped to "\api"
>>>>>>>> c) Serlvet mapped to "\admin\login" (and "\admin\logout" via Shiro)
>>>>>>>> d) Normal directory mapped to "\logo".
>>>>>>>>
>>>>>>>> I can get the individual pieces working but not together. If I put
>>>>>>>> everything under "\hp" instead of under "\" then it works fine but that
>>>>>>>> context part is not acceptable. I need to put it under "\" since there 
>>>>>>>> are
>>>>>>>> existing URL's on the public site that must remain as today.
>>>>>>>>
>>>>>>>> Might sound a bit complicated but I don't think it's an unusual
>>>>>>>> setup.
>>>>>>>>
>>>>>>>> /Bengt
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>> 2016-11-07 20:09 GMT+01:00 'Achim Nierbeck' via OPS4J <
>>>>>>>> [email protected]>:
>>>>>>>>
>>>>>>>>> Hi Bengt,
>>>>>>>>>
>>>>>>>>> regarding issue #1 ... could you try to do something as
>>>>>>>>> "documented" in this[1] integration test?
>>>>>>>>> If you abandon the first parameter, with only the alias, it's
>>>>>>>>> always bound to the root "/".
>>>>>>>>>
>>>>>>>>> regarding issue#2 ... I'm not sure yet, but might be solved with
>>>>>>>>> #1 done right ;)
>>>>>>>>>
>>>>>>>>> regards, Achim
>>>>>>>>>
>>>>>>>>> [1] - https://github.com/ops4j/org.ops4j.pax.web/blob/master/pax
>>>>>>>>> -web-itest/pax-web-itest-container/pax-web-itest-container-j
>>>>>>>>> etty/src/test/java/org/ops4j/pax/web/itest/jetty/RootAliasIn
>>>>>>>>> tegrationTest.java
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> 2016-11-07 17:40 GMT+01:00 Bengt Rodehav <[email protected]>:
>>>>>>>>>
>>>>>>>>>> I'm using Pax-Web in Karaf 4.0.7.
>>>>>>>>>>
>>>>>>>>>> I have two problems with aliases:
>>>>>>>>>>
>>>>>>>>>> *Problem #1*
>>>>>>>>>>
>>>>>>>>>> If I register resources for the context path "/" (i e the root)
>>>>>>>>>> as follows:
>>>>>>>>>>
>>>>>>>>>>     mWebService.registerResources("/", "/webroot", mHttpContext);
>>>>>>>>>>
>>>>>>>>>> Then my application is reachable at:
>>>>>>>>>>
>>>>>>>>>> http://localhost:8183//admin/login
>>>>>>>>>>
>>>>>>>>>> but not at:
>>>>>>>>>>
>>>>>>>>>> http://localhost:8183/admin/login
>>>>>>>>>>
>>>>>>>>>> I want to get rid of the double slash. However if I try this
>>>>>>>>>> instead:
>>>>>>>>>>
>>>>>>>>>>     mWebService.registerResources("", "/webroot", mHttpContext);
>>>>>>>>>>
>>>>>>>>>> Then I get:
>>>>>>>>>>
>>>>>>>>>> Caused by: java.lang.IllegalArgumentException: Alias does not
>>>>>>>>>> start with slash (/)
>>>>>>>>>>         at org.ops4j.pax.web.service.spi.
>>>>>>>>>> model.ServletModel.validateAlias(ServletModel.java:169)
>>>>>>>>>>         at org.ops4j.pax.web.service.spi.
>>>>>>>>>> model.ServletModel.<init>(ServletModel.java:53)
>>>>>>>>>>         at org.ops4j.pax.web.service.spi.
>>>>>>>>>> model.ResourceModel.<init>(ResourceModel.java:29)
>>>>>>>>>>         at org.ops4j.pax.web.service.inte
>>>>>>>>>> rnal.HttpServiceStarted.registerResources(HttpServiceStarted
>>>>>>>>>> .java:262)
>>>>>>>>>>         at org.ops4j.pax.web.service.inte
>>>>>>>>>> rnal.HttpServiceProxy.registerResources(HttpServiceProxy.java:71)
>>>>>>>>>>         at org.ops4j.pax.web.service.WebC
>>>>>>>>>> ontainer$$Proxy.registerResources(Unknown Source)
>>>>>>>>>>         at se.digia.hp.web.HpWebService._
>>>>>>>>>> _M_init(HpWebService.java:133)
>>>>>>>>>>         at se.digia.hp.web.HpWebService.init(HpWebService.java)
>>>>>>>>>>         at se.digia.hp.web.HpWebService._
>>>>>>>>>> _M_starting(HpWebService.java:47)
>>>>>>>>>>         at se.digia.hp.web.HpWebService.s
>>>>>>>>>> tarting(HpWebService.java)
>>>>>>>>>>         at sun.reflect.NativeMethodAccessorImpl.invoke0(Native
>>>>>>>>>> Method)[:1.8.0_74]
>>>>>>>>>>         at sun.reflect.NativeMethodAccess
>>>>>>>>>> orImpl.invoke(NativeMethodAccessorImpl.java:62)[:1.8.0_74]
>>>>>>>>>>         at sun.reflect.DelegatingMethodAc
>>>>>>>>>> cessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)[:1.8
>>>>>>>>>> .0_74]
>>>>>>>>>>         at java.lang.reflect.Method.invok
>>>>>>>>>> e(Method.java:498)[:1.8.0_74]
>>>>>>>>>>         at org.apache.felix.ipojo.util.Ca
>>>>>>>>>> llback.call(Callback.java:237)[50:org.apache.felix.ipojo:1.12.1]
>>>>>>>>>>         at org.apache.felix.ipojo.util.Ca
>>>>>>>>>> llback.call(Callback.java:193)[50:org.apache.felix.ipojo:1.12.1]
>>>>>>>>>>         at org.apache.felix.ipojo.handler
>>>>>>>>>> s.lifecycle.callback.LifecycleCallback.call(LifecycleCallbac
>>>>>>>>>> k.java:86)[50:org.apache.felix.ipojo:1.12.1]
>>>>>>>>>>         at org.apache.felix.ipojo.handler
>>>>>>>>>> s.lifecycle.callback.LifecycleCallbackHandler.__M_stateChang
>>>>>>>>>> ed(LifecycleCallbackHandler.java:162)[50:org.apache.felix.i
>>>>>>>>>> pojo:1.12.1]
>>>>>>>>>>
>>>>>>>>>> How can I get rid of the "double slash"?
>>>>>>>>>>
>>>>>>>>>> *Problem #2*
>>>>>>>>>>
>>>>>>>>>> Assume that my web application resides at the context url:
>>>>>>>>>>
>>>>>>>>>> http://localhost:8183/hp
>>>>>>>>>>
>>>>>>>>>> I also register a separate resource directory directly in jetty
>>>>>>>>>> with the following configuration (as I was helped by Achim on this 
>>>>>>>>>> forum):
>>>>>>>>>>
>>>>>>>>>> <?xml version="1.0"?>
>>>>>>>>>> <!DOCTYPE Configure PUBLIC "-//Jetty//Configure//EN" "
>>>>>>>>>> http://www.eclipse.org/jetty/configure_9_0.dtd";>
>>>>>>>>>>
>>>>>>>>>> <Configure id="Server" class="org.eclipse.jetty.server.Server">
>>>>>>>>>>   <Get name="handler">
>>>>>>>>>>     <Call name="addHandler">
>>>>>>>>>>       <Arg>
>>>>>>>>>>         <New class="org.eclipse.jetty.serve
>>>>>>>>>> r.handler.ContextHandler">
>>>>>>>>>>           <Set name="contextPath">/logo</Set>
>>>>>>>>>>           <Set name="handler">
>>>>>>>>>>             <New class="org.eclipse.jetty.serve
>>>>>>>>>> r.handler.ResourceHandler">
>>>>>>>>>>               <Set name="resourceBase">../../comm
>>>>>>>>>> on/etc/logo</Set>
>>>>>>>>>>               <Set name="directoriesListed">true</Set>
>>>>>>>>>>             </New>
>>>>>>>>>>           </Set>
>>>>>>>>>>         </New>
>>>>>>>>>>       </Arg>
>>>>>>>>>>     </Call>
>>>>>>>>>>   </Get>
>>>>>>>>>> </Configure>
>>>>>>>>>>
>>>>>>>>>> This works fine. But when I try to move the application up to the
>>>>>>>>>> root (which has the double slash problem as described in Problem #1) 
>>>>>>>>>> to the
>>>>>>>>>> following url:
>>>>>>>>>>
>>>>>>>>>> http://localhost:8183//
>>>>>>>>>>
>>>>>>>>>> Then the separate resource via my jetty.xml does not work. It
>>>>>>>>>> seems that it cannot be a descendant of the context path I use for 
>>>>>>>>>> my web
>>>>>>>>>> application. But, since this is a public web application, with a
>>>>>>>>>> predetermined url, it must reside at the root. Then there is no 
>>>>>>>>>> context
>>>>>>>>>> path that works for my separate resource directory since all paths 
>>>>>>>>>> are
>>>>>>>>>> descendants of root.
>>>>>>>>>>
>>>>>>>>>> This seems a bit weird...
>>>>>>>>>>
>>>>>>>>>> /Bengt
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> --
>>>>>>>>>> --
>>>>>>>>>> ------------------
>>>>>>>>>> OPS4J - http://www.ops4j.org - [email protected]
>>>>>>>>>>
>>>>>>>>>> ---
>>>>>>>>>> You received this message because you are subscribed to the
>>>>>>>>>> Google Groups "OPS4J" group.
>>>>>>>>>> To unsubscribe from this group and stop receiving emails from it,
>>>>>>>>>> send an email to [email protected].
>>>>>>>>>> For more options, visit https://groups.google.com/d/optout.
>>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> --
>>>>>>>>>
>>>>>>>>> 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
>>>>>>>>>
>>>>>>>>> --
>>>>>>>>> --
>>>>>>>>> ------------------
>>>>>>>>> OPS4J - http://www.ops4j.org - [email protected]
>>>>>>>>>
>>>>>>>>> ---
>>>>>>>>> You received this message because you are subscribed to the Google
>>>>>>>>> Groups "OPS4J" group.
>>>>>>>>> To unsubscribe from this group and stop receiving emails from it,
>>>>>>>>> send an email to [email protected].
>>>>>>>>> For more options, visit https://groups.google.com/d/optout.
>>>>>>>>>
>>>>>>>>
>>>>>>>> --
>>>>>>>> --
>>>>>>>> ------------------
>>>>>>>> OPS4J - http://www.ops4j.org - [email protected]
>>>>>>>>
>>>>>>>> ---
>>>>>>>> You received this message because you are subscribed to the Google
>>>>>>>> Groups "OPS4J" group.
>>>>>>>> To unsubscribe from this group and stop receiving emails from it,
>>>>>>>> send an email to [email protected].
>>>>>>>> For more options, visit https://groups.google.com/d/optout.
>>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>> --
>>>>>>>
>>>>>>> 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
>>>>>>>
>>>>>>> --
>>>>>>> --
>>>>>>> ------------------
>>>>>>> OPS4J - http://www.ops4j.org - [email protected]
>>>>>>>
>>>>>>> ---
>>>>>>> You received this message because you are subscribed to the Google
>>>>>>> Groups "OPS4J" group.
>>>>>>> To unsubscribe from this group and stop receiving emails from it,
>>>>>>> send an email to [email protected].
>>>>>>> For more options, visit https://groups.google.com/d/optout.
>>>>>>>
>>>>>>
>>>>>>
>>>>> --
>>>>> --
>>>>> ------------------
>>>>> OPS4J - http://www.ops4j.org - [email protected]
>>>>>
>>>>> ---
>>>>> You received this message because you are subscribed to the Google
>>>>> Groups "OPS4J" group.
>>>>> To unsubscribe from this group and stop receiving emails from it, send
>>>>> an email to [email protected].
>>>>> For more options, visit https://groups.google.com/d/optout.
>>>>>
>>>>
>>>>
>>>>
>>>> --
>>>>
>>>> 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
>>>>
>>>> --
>>>> --
>>>> ------------------
>>>> OPS4J - http://www.ops4j.org - [email protected]
>>>>
>>>> ---
>>>> You received this message because you are subscribed to the Google
>>>> Groups "OPS4J" group.
>>>> To unsubscribe from this group and stop receiving emails from it, send
>>>> an email to [email protected].
>>>> For more options, visit https://groups.google.com/d/optout.
>>>>
>>>
>>> --
>>> --
>>> ------------------
>>> OPS4J - http://www.ops4j.org - [email protected]
>>>
>>> ---
>>> You received this message because you are subscribed to the Google
>>> Groups "OPS4J" group.
>>> To unsubscribe from this group and stop receiving emails from it, send
>>> an email to [email protected].
>>> For more options, visit https://groups.google.com/d/optout.
>>>
>>
>>
>>
>> --
>>
>> 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
>>
>> --
>> --
>> ------------------
>> OPS4J - http://www.ops4j.org - [email protected]
>>
>> ---
>> You received this message because you are subscribed to the Google Groups
>> "OPS4J" group.
>> To unsubscribe from this group and stop receiving emails from it, send an
>> email to [email protected].
>> For more options, visit https://groups.google.com/d/optout.
>>
>
>

-- 
-- 
------------------
OPS4J - http://www.ops4j.org - [email protected]

--- 
You received this message because you are subscribed to the Google Groups 
"OPS4J" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
For more options, visit https://groups.google.com/d/optout.

Reply via email to