I would also like to support the notion of continuing to “embed” Jetty in the 
Felix Http bundle. The whole point of the Felix Jetty bundle is to provide an 
Http Whiteboard implementation, forcing people to install tens of Jetty bundles 
to make that work would be a nightmare (particularly with Jetty’s non OSGi 
friendly use of “extensions” to locate core features). The resolver can help to 
an extent, but actually it’s not possible to work out which modules to include 
when so many of them depend on configuration (for example I only need the SSL 
connector if I want to use SSL). Another good example of this pattern is the 
Aries JAX-RS whiteboard, this embeds a whole bunch of CXF bundles because 
otherwise it’s really hard to make sure you get the correct bundles pulled in.

Ideally Felix Jetty would be enhanced to allow for additional 
connectors/plugins to be provided using OSGi services (to get around the 
ServiceLoader problem) and provide packages for things like http2, session 
replication, and other cool Jetty extensions. There are still the issues of 
getting the resolver to pick the features that you want (they’re only needed by 
configuration) and making sure that you get good feedback from the Felix Jetty 
bundle about missing extensions (i.e. you configured me to need the http2 
connector but the service isn’t available), but at least it provides a vaguely 
consumable solution for end users.

Best Regards,

Tim

> On 22 Oct 2018, at 19:35, Naftali van der Loon <naft...@vanderloon.nl> wrote:
> 
> I agree with Carsten, if we want to help the adoption of OSGI these kind of
> bundles should be "plug 'n play" ;-)
> It should also be simple to use another http service implementation (e.g.
> glassfish)  but this also is not very simple, there are also no tutorials
> of any kind (that I know of) how to do this. So for now we are pretty
> limited in this regard...
> 
> 
> Op ma 22 okt. 2018 om 13:14 schreef Carsten Ziegeler <cziege...@apache.org>:
> 
>> I think delivering a module that has no way to be used on its own, is
>> not very useful. If you always need at least the same 8 (or whatever
>> number) of bundles just to get a base functionality running, then why
>> are these 8 separate bundles? Especially as you have to use the same
>> version across these bundles?
>> 
>> I don't buy that the current way of bundling Jetty in Felix is just for
>> a demo-case. Thats at least to my experience not true at all. We
>> actually had requests from users to bundle everything into a single
>> piece. We used to have the http base as a separate bundle, but merged it
>> in on request. I personally find it very natural that if I want to get
>> an implementation of the http service, I get a single bundle. In fact,
>> today these are already two, the servlet api and the jetty bundle. But
>> at least thats all you need. Telling me that I would need 25 bundle
>> would make me look for a different solution. While that might be the
>> theoretical way of doing things, its definitely not the most practical
>> or useful way.
>> 
>> I agree that we should try to make http2 a first class citizen and
>> preferable - at least preferable in my opinion - would be a single
>> bundle for this. If we end up with three or four that's fine as well, if
>> we end up with a two digit number this does look like a user friendly
>> way to me.
>> 
>> Carsten
>> 
>> 
>> Am 21.10.2018 um 02:33 schrieb Eric Norman:
>>> David,
>>> 
>>> I don't believe that the OSGi support in jetty is just an afterthought
>> and
>>> those modules are used in many high profile OSGi environments, such as
>> the
>>> eclipse IDE.  In fact, Jetty is hosted by the eclipse foundation who is
>> all
>>> about OSGi.
>>> 
>>> I think a reasonable explanation of the usage of ServiceLoader in their
>>> codebase is that jetty modules are not exclusively for OSGi so they are
>>> designed to work with or without OSGi involved.
>>> 
>>> If I recall correctly, the ServiceLoader code was not used extensively in
>>> the jetty code.  I think usage was only in a handful of places and most
>> had
>>> reasonable defaults if no ServiceLoader services were found which is why
>> it
>>> hasn't been a problem until now.
>>> 
>>> My experience with the jetty project is that they are reasonable people
>> who
>>> are open to a patch to make it work without the spi-fly shim.
>>> 
>>> But even if the jetty code is refactored and improved to no long require
>>> spi-fly, I still don't think a fat bundle packaging of jetty is
>> appropriate.
>>> 
>>> But that's just my opinion, and I am perfectly content using my own fork
>>> for my projects if the community isn't interested.
>>> 
>>> Regards,
>>> -Eric
>>> 
>>> 
>>> On Sat, Oct 20, 2018 at 3:24 PM David Jencks <david.a.jen...@gmail.com>
>>> wrote:
>>> 
>>>> Jetty may be modular, and each of their jars may include OSGI metadata
>> so
>>>> they are bundles, but the use of service loader (implied I think by the
>>>> discussion of spi-fly; I haven’t looked at jetty myself) carries an
>>>> extremely strong presumption that the jetty modularity is not very
>>>> compatible with osgi modularity.  I’d regard the jetty modularity as
>> very
>>>> compatible with osgi if they provided “service” wiring that could use
>>>> either the OSGI registry directly or service loader directly.  Relying
>> on
>>>> service loader only has a bias towards everything being in the same
>> class
>>>> loader, so it’s more likely to work correctly with a fat bundle than
>> with
>>>> spi-fly.
>>>> 
>>>> These are rather abstract or philosophical arguments, so they may or may
>>>> not match the reality of using jetty in any particular way.
>>>> 
>>>> david jencks
>>>> 
>>>>> On Oct 20, 2018, at 1:20 PM, Eric Norman <eric.d.nor...@gmail.com>
>>>> wrote:
>>>>> 
>>>>> Carsten and others,
>>>>> 
>>>>> Well, if the newer jetty version of the jetty artifacts causes the code
>>>> to
>>>>> not compile then perhaps that is an issue you would want to raise with
>>>> the
>>>>> jetty folks to not make incompatible changes to the public APIs without
>>>>> incrementing the major version numbers of their exports?
>>>>> 
>>>>> For me, the claim that the new jetty version breaks something isn't a
>>>>> compelling reason do continue on as before as the same argument could
>> be
>>>>> made for any third party artifact.  If the third party releases a new
>>>>> version that doesn't work with your bundles then it seems to me that
>> the
>>>>> proper remedy would be to raise the issue with the third party, declare
>>>> the
>>>>> known issue in your own documentation and/or declare a more specific
>>>>> version range for the bundle/package imports in the affected consumer
>>>>> bundles that you have control over.  Perhaps, the felix http bundle
>>>>> documentation could have some statement that says which versions of
>> jetty
>>>>> were tested and certified against if that would make you more
>> comfortable
>>>>> about the de-coupling.
>>>>> 
>>>>> It seems to me that the jetty project has made a lot of efforts to
>> make a
>>>>> modular system where you can chose which parts to include and they have
>>>>> made sure all their modules are OSGi bundles.  Going back to jamming it
>>>> all
>>>>> the jetty code into a fat bundle for the convenience of some demo-ware
>>>>> seems to be the wrong direction and I'm surprised that OSGi based
>> project
>>>>> like felix would still be promoting such things.  Also, this fat way of
>>>>> packaging jetty isn't tested by jetty proper, so who can say what side
>>>>> effects may be lurking?
>>>>> 
>>>>> The eclipse equinox impl of the http service works in the "thin" way
>>>> like I
>>>>> have proposed and looks to me like a better solution.  Is there much
>>>>> collaboration between equinox and felix on the parts that seem to be
>>>> common
>>>>> to both?
>>>>> 
>>>>> Regarding your suggestions:  I still don't see a good solution with
>> your
>>>>> hybrid approach either since the same problems I raised in the July
>>>> message
>>>>> thread about the activation timing remain.  For example. the bundle
>>>>> activator where jetty is started synchronously happens before the
>> spifly
>>>>> bundle extender makes the ServiceLoader stuff available so any
>>>>> ServiceLoader configuration embedded inside of the felix.http bundle
>>>> would
>>>>> not be available yet when jetty is starting up.
>>>>> 
>>>>> Plus I'm not sure I like the impression that http/2 support would have
>>>> the
>>>>> appearance of being a second-class feature when wider adoption of
>> http/2
>>>>> would be better for everyone.
>>>>> 
>>>>> Regards,
>>>>> -Eric
>>>>> 
>>>>> On Sat, Oct 20, 2018 at 5:25 AM Carsten Ziegeler <cziege...@apache.org
>>> 
>>>>> wrote:
>>>>> 
>>>>>> Let's focus for a minute on having jetty as separate bundles. This
>> will
>>>>>> potentially create a lot of problems as people will use the wrong
>> jetty
>>>>>> version. I just recently updated from on 9.4.x version to the next
>>>>>> 9.4.(x+1) version and our code was not even compiling anymore.
>> Therefore
>>>>>> ultimately our code is tied to a very specific version of Jetty.
>>>>>> From that PoV it's dangerous to not bundle jetty.
>>>>>> My suggestion is still:
>>>>>> - we bundle Jetty as today but add the missing service loader files.
>>>>>> This bundle has code to support http2 if the additional stuff is
>>>> installed.
>>>>>> - for people needing http2 they install a number of more bundles and
>>>>>> voila everything works.
>>>>>> 
>>>>>> Unless this plan is not possible, I don't see a reason why we
>> shouldn't
>>>>>> go there?
>>>>>> 
>>>>>> Carsten
>>>>>> 
>>>>>> 
>>>>>> Am 19.10.2018 um 17:34 schrieb Raymond Auge:
>>>>>>> 
>>>>>>> 
>>>>>>> On Fri, Oct 19, 2018 at 11:11 AM Carsten Ziegeler <
>>>> cziege...@apache.org
>>>>>>> <mailto:cziege...@apache.org>> wrote:
>>>>>>> 
>>>>>>> 
>>>>>>> 
>>>>>>>    Am 19.10.2018 um 17:06 schrieb Raymond Auge:
>>>>>>>> On Fri, Oct 19, 2018 at 10:55 AM Carsten Ziegeler
>>>>>>>    <cziege...@apache.org <mailto:cziege...@apache.org>>
>>>>>>>> wrote:
>>>>>>>> 
>>>>>>>>> Well, you are assuming that people are using a tool which does
>>>>>> the
>>>>>>>>> resolving. Today you can simply download the Apache Felix Jetty
>>>>>>>    bundle,
>>>>>>>>> install and enjoy. No tooling required. With such a proposal
>>>>>> we're
>>>>>>>>> breaking this experience
>>>>>>>>> 
>>>>>>>> 
>>>>>>>> Can I get a vote as to how many people actually get this
>>>>>> experience?
>>>>>>>> 
>>>>>>>> I feel this only works when you already know _exactly_ what you
>>>>>>>    want, which
>>>>>>>> I do not feel is the norm.
>>>>>>> 
>>>>>>>    Not sure if I can follow here, people know that they want the
>> Jetty
>>>>>>>    module, download it, install it and have a party. We've
>> constantly
>>>>>>>    seeing people in our mailing lists saying that.
>>>>>>> 
>>>>>>> 
>>>>>>> I understand this. Perhaps we should simply offer an additional
>>>>>>> packaging which relies on the jetty BOM as a dependency. The benefit
>>>>>>> being we don't have to wait for Jetty to provide something special,
>>>>>>> since they already provide the BOM for exactly this purpose.
>>>>>>> 
>>>>>>> I feel most people do not go to the Felix website and download jars
>>>>>>> except as part of experiments. It is my own experience that people
>> use
>>>> a
>>>>>>> build tool which relies on dependencies stored in maven central
>> (using
>>>>>>> maven or gradle or some other build tool).
>>>>>>> 
>>>>>>> In that way, and because felix.http.jetty is a implementation, they
>>>>>>> don't care about how the transitive dependencies are handled or
>>>>>>> provided; as long as the parts they need get into their deployment.
>>>>>>> 
>>>>>>> - Ray
>>>>>>> 
>>>>>>> 
>>>>>>>    While resolver based tooling is awesome, it's not the way all
>> people
>>>>>>>    work. Whether that is good or bad, does not matter. Requiring
>> over
>>>> 20
>>>>>>>    bundles to be installed to get a single functionality working
>> seems
>>>>>>>    really like overkill.
>>>>>>> 
>>>>>>>    Regards
>>>>>>>    Carsten
>>>>>>> 
>>>>>>>> 
>>>>>>>> - Ray
>>>>>>>> 
>>>>>>>> 
>>>>>>>>> 
>>>>>>>>> Carsten
>>>>>>>>> 
>>>>>>>>> Am 19.10.2018 um 16:10 schrieb Raymond Auge:
>>>>>>>>>> I know in the past I argued against exposing all the jetty
>>>>>>>    bundles. But I
>>>>>>>>>> feel I was probably wrong back then. I think that with the
>>>>>>>    jetty BOM and
>>>>>>>>>> the OSGi resolver, figuring out which bundles you need, and
>>>>>>>    then adding
>>>>>>>>>> additional ones to suite your case, is not so hard.
>>>>>>>>>> 
>>>>>>>>>> Furthermore, Service Loader Mediator is not as painful anymore,
>>>>>>>    just use
>>>>>>>>> an
>>>>>>>>>> R7 framework with the SpiFly framework extension.
>>>>>>>>>> 
>>>>>>>>>> - Ray
>>>>>>>>>> 
>>>>>>>>>> On Fri, Oct 19, 2018 at 9:30 AM Raymond Auge
>>>>>>>    <raymond.a...@liferay.com <mailto:raymond.a...@liferay.com>>
>>>>>>>>>> wrote:
>>>>>>>>>> 
>>>>>>>>>>> Why not start relying on the Jetty BOM and let people depend
>>>>>>>    on the
>>>>>>>>>>> bundles what they want, at least this way they can let the
>>>>>>>    resolver
>>>>>>>>>>> assemble the bundles they need?
>>>>>>>>>>> 
>>>>>>>>>>> - Ray
>>>>>>>>>>> 
>>>>>>>>>>> On Fri, Oct 19, 2018 at 3:39 AM Carsten Ziegeler
>>>>>>>    <cziege...@apache.org <mailto:cziege...@apache.org>>
>>>>>>>>>>> wrote:
>>>>>>>>>>> 
>>>>>>>>>>>> The other option would be if jetty could provide us one fat
>>>>>>>    bundle, to
>>>>>>>>>>>> avoid having users to install N bundles, it would just be one
>>>>>>>>> additional.
>>>>>>>>>>>> 
>>>>>>>>>>>> Regards
>>>>>>>>>>>> Carsten
>>>>>>>>>>>> 
>>>>>>>>>>>> Am 19.10.2018 um 09:35 schrieb Carsten Ziegeler:
>>>>>>>>>>>>> Hi Eric,
>>>>>>>>>>>>> 
>>>>>>>>>>>>> I would like to come back to this discussion; I somehow
>>>>>>>    forgot to
>>>>>>>>>>>> follow
>>>>>>>>>>>>> up on the old thread.
>>>>>>>>>>>>> If we go with a thin Apache Felix Jetty bundle, then you
>>>>>> need to
>>>>>>>>>>>> install
>>>>>>>>>>>>> a lot of other bundles even if you don't use http2. So
>>>>>>>    updating from a
>>>>>>>>>>>>> current version to this new version is not nice.
>>>>>>>>>>>>> 
>>>>>>>>>>>>> How about we still include the jetty bundles inside, fix the
>>>>>>>    service
>>>>>>>>>>>>> loader configuration by including it - but do not include
>>>>>>>    the other
>>>>>>>>>>>>> things needed for http2 support. So if you're not using
>>>>>>>    http2, it
>>>>>>>>> works
>>>>>>>>>>>>> like today.
>>>>>>>>>>>>> If you use http2 you install additionally spifly and what
>>>>>>>    else is
>>>>>>>>>>>>> required to make it work.
>>>>>>>>>>>>> 
>>>>>>>>>>>>> Would that work?
>>>>>>>>>>>>> 
>>>>>>>>>>>>> Regards
>>>>>>>>>>>>> Carsten
>>>>>>>>>>>>> 
>>>>>>>>>>>>> Am 18.10.2018 um 19:59 schrieb Eric Norman:
>>>>>>>>>>>>>> Yes, with a few changes to the felix.http code it is
>>>>>>>    possible to make
>>>>>>>>>>>> it
>>>>>>>>>>>>>> work.
>>>>>>>>>>>>>> 
>>>>>>>>>>>>>> I stashed the code changes in my github fork at
>>>>>>>>>>>>>> https://github.com/enapps-enorman/felix which I think you
>>>>>> have
>>>>>>>>> already
>>>>>>>>>>>>>> discovered?
>>>>>>>>>>>>>> 
>>>>>>>>>>>>>> I would be willing to initiate a PR from the fork, but
>>>>>>>    unfortunately
>>>>>>>>>>>> the
>>>>>>>>>>>>>> http/2 support doesn't work without changing how the
>>>>>> felix.http
>>>>>>>>> bundle
>>>>>>>>>>>> is
>>>>>>>>>>>>>> packaged as discussed on the felix mailing list at:
>>>>>>>>>>>>>> 
>>>>>>> 
>> https://www.mail-archive.com/users@felix.apache.org/msg18187.html
>>>>>>>>>>>>>> 
>>>>>>>>>>>>>> The felix community seemed reluctant to make the packaging
>>>>>>>    changes to
>>>>>>>>>>>> the
>>>>>>>>>>>>>> felix.http bundle so I didn't send the PR at the time.
>>>>>>>>>>>>>> 
>>>>>>>>>>>>>> 
>>>>>>>>>>>>>> Regards,
>>>>>>>>>>>>>> 
>>>>>>>>>>>>>> Eric
>>>>>>>>>>>>>> 
>>>>>>>>>>>>>> On Thu, Oct 18, 2018 at 10:04 AM Naftali <nvdl...@gmail.com
>>>>>>>    <mailto:nvdl...@gmail.com>> wrote:
>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>> Hi, is there any way to enable enable HTTP/2 support in
>>>>>>>    the embedded
>>>>>>>>>>>>>>> felix
>>>>>>>>>>>>>>> jetty?
>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>> Greetz Naftali
>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>> 
>>>>>>>>>>>>> 
>>>>>>>>>>>> 
>>>>>>>>>>>> --
>>>>>>>>>>>> Carsten Ziegeler
>>>>>>>>>>>> Adobe Research Switzerland
>>>>>>>>>>>> cziege...@apache.org <mailto:cziege...@apache.org>
>>>>>>>>>>>> 
>>>>>>>>>>>> 
>>>>>>> 
>>>> ---------------------------------------------------------------------
>>>>>>>>>>>> To unsubscribe, e-mail: users-unsubscr...@felix.apache.org
>>>>>>>    <mailto:users-unsubscr...@felix.apache.org>
>>>>>>>>>>>> For additional commands, e-mail: users-h...@felix.apache.org
>>>>>>>    <mailto:users-h...@felix.apache.org>
>>>>>>>>>>>> 
>>>>>>>>>>>> 
>>>>>>>>>>> 
>>>>>>>>>>> --
>>>>>>>>>>> *Raymond Augé* <
>>>>>> http://www.liferay.com/web/raymond.auge/profile>
>>>>>>>>>>>   (@rotty3000)
>>>>>>>>>>> Senior Software Architect *Liferay, Inc.* <
>>>>>> http://www.liferay.com>
>>>>>>>>>>>   (@Liferay)
>>>>>>>>>>> Board Member & EEG Co-Chair, OSGi Alliance <http://osgi.org>
>>>>>>>>>>> (@OSGiAlliance)
>>>>>>>>>>> 
>>>>>>>>>> 
>>>>>>>>>> 
>>>>>>>>> 
>>>>>>>>> --
>>>>>>>>> Carsten Ziegeler
>>>>>>>>> Adobe Research Switzerland
>>>>>>>>> cziege...@apache.org <mailto:cziege...@apache.org>
>>>>>>>>> 
>>>>>>>>> 
>>>>>>> 
>>>> ---------------------------------------------------------------------
>>>>>>>>> To unsubscribe, e-mail: users-unsubscr...@felix.apache.org
>>>>>>>    <mailto:users-unsubscr...@felix.apache.org>
>>>>>>>>> For additional commands, e-mail: users-h...@felix.apache.org
>>>>>>>    <mailto:users-h...@felix.apache.org>
>>>>>>>>> 
>>>>>>>>> 
>>>>>>>> 
>>>>>>> 
>>>>>>>    --
>>>>>>>    Carsten Ziegeler
>>>>>>>    Adobe Research Switzerland
>>>>>>>    cziege...@apache.org <mailto:cziege...@apache.org>
>>>>>>> 
>>>>>>> 
>>>>>>> 
>>>>>>> --
>>>>>>> *Raymond Augé*
>>>>>>> <http://www.liferay.com/web/raymond.auge/profile> (@rotty3000)
>>>>>>> Senior Software Architect *Liferay, Inc.*
>>>>>>> <http://www.liferay.com> (@Liferay)
>>>>>>> Board Member & EEG Co-Chair, OSGi Alliance <http://osgi.org>
>>>>>> (@OSGiAlliance)
>>>>>> 
>>>>>> --
>>>>>> Carsten Ziegeler
>>>>>> Adobe Research Switzerland
>>>>>> cziege...@apache.org
>>>>>> 
>>>>>> ---------------------------------------------------------------------
>>>>>> To unsubscribe, e-mail: users-unsubscr...@felix.apache.org
>>>>>> For additional commands, e-mail: users-h...@felix.apache.org
>>>>>> 
>>>>>> 
>>>> 
>>>> 
>>>> ---------------------------------------------------------------------
>>>> To unsubscribe, e-mail: users-unsubscr...@felix.apache.org
>>>> For additional commands, e-mail: users-h...@felix.apache.org
>>>> 
>>>> 
>>> 
>> 
>> --
>> Carsten Ziegeler
>> Adobe Research Switzerland
>> cziege...@apache.org
>> 
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: users-unsubscr...@felix.apache.org
>> For additional commands, e-mail: users-h...@felix.apache.org
>> 
>> 
> 
> -- 
> Met vriendelijke groet,
> 
> Naftali van der Loon

Reply via email to