Hi Eoghan,

I found the log message "The SslSelectChannelConnector is a BETA quality release." when I played with the Jetty 6.1.1 SSLSelectChannelConnector in http2 moduel.
So I get the conclustion that Jetty6 SSL support is not stable.

I am not SSL experct, I can't tell exacly what specific features are unstable or missing. I just asked the Jetty guy for they help to know the status of the Jetty 6 SSL support.
I hope I can get the answer soon.

Willem.


Glynn, Eoghan wrote:

Willem,

Can you give more detail on what your concerns were about the stability
or otherwise of Jetty 6 SSL support?

For example what specific features are considering buggy or entirely
missing?

Cheers,
Eoghan

-----Original Message-----
From: Glynn, Eoghan [mailto:[EMAIL PROTECTED] Sent: 05 February 2007 15:17
To: [email protected]
Subject: RE: Duplication in http2 module


Well I think the original logic was that the Jetty6 SSL support is in a pre-alpha state, so isn't suitable as a straight replacement for Jetty5. Hence the motivation for maintaining support for both Jetty5 and 6 for a transition period.

BTW I'm not sure if the Jetty6 SSL really is still that unstable ... at least the mortbay.org download page, the 6.1 version has the status "Stable" and mentions "Async SSL" in the notes.

So before we waste any cycles on figuring out how to allow Jetty 5 & 6 peacefully co-exist, I think it would be worth investing some effort in establishing definitively the stability or otherwise of Jetty6 SSL.

Now if Jetty6 is still considered unstable, then we'd have to come up with some (e.g. class-loading) cleverness to allow selective loading of the Jetty 5 or 6 artefacts. Fortunately the Jetty 5 and 6 APIs expose different classes to our code (e.g. SslListener versus SslSelectChannelConnector), so that should simply things at compile time at least.

If on the other hand, we were happy enough to drop support for Jetty5, this would simplify matters. For one thing, it would allow the HTTP code to be restructured to take more advantage of the non-blocking aspects of
Jetty6 (see my previous mail[1] for more detail).

However if we do drop Jetty5 support, before just replacing the http module with http2, its important to do an audit to ensure that all changes applied to the http module since the advent of the duplicated http2 module have also been reflected in the latter. Having to do this sort of thing is another downside of the whole duplication approach.

Cheers,
Eoghan


[1]
http://mail-archives.apache.org/mod_mbox/incubator-cxf-dev/200
612.mbox/%
[EMAIL PROTECTED]

-----Original Message-----
From: Lin, Bozhong [mailto:[EMAIL PROTECTED]
Sent: 05 February 2007 14:37
To: [email protected]; [email protected]
Subject: RE: Duplication in http2 module

So I just want to follow up a question on this discussion. If we agreed to refactor code according to the discussion, what this will have impact on packaging? i.e., are we going to ship both
jetty5 and
jetty 6? or by default we just ship
jetty5 and let user download jetty6 if they want jetty6 support?

Regards,
Bo

-----Original Message-----
From: Glynn, Eoghan [mailto:[EMAIL PROTECTED]
Sent: Wed 1/31/2007 2:27 AM
To: [email protected]
Subject: RE: Duplication in http2 module



-----Original Message-----
From: Jiang, Ning [mailto:[EMAIL PROTECTED]
Sent: 31 January 2007 02:01
To: [email protected]
Subject: RE: Duplication in http2 module


Hi Eoghan,

Thank you for your reply. You suggested to put the http2 into another branch which will not effect the main line. It is easy to do in ClearCase. But in svn, the branch is just a static copy from the mainline. My question is if I put the http2 into a branch, when the
mainline
transport code had be changed, how can I sync these
mainline's changes
to the branch?
Well the synching up would be a manual process, as it is now with http2 on the mainline but completely separate from the main http module.

Now we are working on pull the common transport logic to
the abstract
Destination and Conduit. So there is another option, we
just move the
Jetty6 support code into the http module , then we can get ride of
http2 module.
Sure, that would be the preferred option, and basically I was originally advocating such a merge into a single http
module (as long
as the duplication is also properly addressed).

The idea would be factor out the common logic into abstract base classes, and then provide pluggable API-specific components for Jetty5, Jetty6, and Servlet.

But IIRC you didn't want to do this refactoring as the Jetty6 stuff was still pre-alpha and hence not suitable use in the main http module. So the option to move to a branch was a second choice alternative.

Cheers,
Eoghan

Cheers,

Willem.

-----Original Message-----
From: Glynn, Eoghan [mailto:[EMAIL PROTECTED]
Sent: Tue 1/30/2007 23:03
To: [email protected]
Subject: RE: Duplication in http2 module




-----Original Message-----
From: Willem Jiang [mailto:[EMAIL PROTECTED]
Sent: Tue 1/30/2007 4:00 AM
To: [email protected]
Subject: Duplication in http2 module

Hi Eoghan,

The original thought to add the module http2 was we can
replace the
Jetty5 with new NIO support Jetty6, than we  can replace
http  module
with http.
Unfortunately when I finished the porting , I found the
Jetty6 ssl
stuff
is still in a pre-alpha state. So I can move http2 to http.

There are some my random thoughts about the http2 module.

1.  making the http transport decouple with the detail Http
Transport
engines.
In this way ,we can share the common http transport logical
code with
the different Http Transport engines.
So the CXF can support tomcat , Jetty5 , Jetty6 to provide the standalone web services.
Yes, the whole point is that much of the logic in the
servlet, Jetty5-
and Jetty6-based HTTP transports is actually common to all
three and
hence is sharable via abstract base classes.

I'd already raised a JIRA issue
(http://issues.apache.org/jira/browse/CXF-343) to remove the duplication from the servlet transport. A similar
unification approach
could also be used for the Jetty5 and Jetty6-based HTTP
transports.
2. If we want to support Jetty5 and Jetty6 in the same http
transport
module, how can we achieve it.
Simply by encapsulating all usage of Jetty-version-specific
APIs into
pluggable components.

In Jetty <=5, there was an API for pure Jetty HTTP requests and responses. The Jetty requests and responses where wrapped by the ServletHandler to provide the Servlet API for requests and
responses.
In Jetty 6, all requests and responses are based on the
Servlet APIs
requests and responses.
Sure the APIs are slightly different, but that doesn't
prevent sharing
all the code that actually is common.

Now the refactoring job is made easier by the fact that the logic common to *all* Destination implementations (i.e. both HTTP and non-HTTP) is now factored out into an AbstractDestination class. However, there's still plenty of duplicated and potentially
sharable
logic in the three HTTP Destination implementations, e.g.
the logic
concerned with managing HTTP headers, acting on policies
and setting
message properties.

May be we need different Jetty factory to create the detail JettyHTTPServerEngine and JettyHTTPDestionation which will
consume the
different version's Jetty API.

These will take some time to finish and we also need to
wait for the
Jetty6 SSL engine stable release. Eoghan, I agree we can put
the http2
into the branch which will not take effect with the mail line.
But I have no ideal how to sync the branch with the main
line's http
transport common logical. Can someone help me out ?
I don't understand what exactly you're asking for help with. Can you elaborate?

Cheers,
Eoghan

Cheers,

Willem.

-----Original Message-----
From: Glynn, Eoghan [mailto:[EMAIL PROTECTED]
Sent: Mon 1/29/2007 18:13
To: [email protected]
Subject: Duplication in http2 module [was RE: svn commit:
r497869 -
/incubator/cxf/trunk/rt/transports/http2/src/main/java/org/ap
ache/cxf/t
ransport/http/JettyHTTPDestination.java]
Willem,

The problem with keeping these modules separate is that
every change to
the main http module has to be duplicated manually to the
http2 module
which is time-consuming and error-prone.

So if the http2 stuff is still in a pre-alpha state, then it
should be
taken off the mainline onto a branch until its ready to
either share
common base classes with the core (Jetty5-based) http
transport or
replace it outright.

Cheers,
Eoghan

-----Original Message-----
From: Willem Jiang [mailto:[EMAIL PROTECTED]
Sent: 19 January 2007 18:08
To: [email protected]
Subject: Re: svn commit: r497869 - /incubator/cxf/trunk/rt/transports/http2/src/main/java/org/apa
che/cxf/transport/http/JettyHTTPDestination.java

Hi Eoghan,

The duplication in http transports is because I don't
want the
development of the Jetty6 support takes effect to the
current code
base.

Since Jetty6 's ssl support is in pre-alpha state , we
don't want to
replace Jetty5 with Jetty6 right now, I agree we can move
the Jetty6
supporting from rt-tranpsorts-http2 to rt-transports-http
to reduce
the duplication, and get CXF http-transport more flexible.

Cheers,

Willem.

Glynn, Eoghan wrote:
Hi Willem,

Why all the duplication in rt-transports-http2?

If we're going to keep the Jetty5-based rt-transports-http
stuff, then
the two modules should be merged so as to avoid
duplication, with
common code factored up into abstract base classes.

I've raised an JIRA task for a similar refactoring of the duplication-heavy servlet code:
http://issues.apache.org/jira/browse/CXF-343

Cheers,
Eoghan



Reply via email to