You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@cxf.apache.org by Willem Jiang <ni...@iona.com> on 2007/10/15 03:30:25 UTC

Re: svn commit: r584484 - in /incubator/cxf/trunk: rt/transports/http-jetty/src/main/java/org/apache/cxf/transport/http_jetty/ systests/src/test/java/org/apache/cxf/systest/http_jetty/

Hi Glen,

Please see my comment in the mail.

Glen Mazza wrote:
> Am Sonntag, den 14.10.2007, 03:04 +0000 schrieb ningjiang@apache.org:
>   
>> Author: ningjiang
>> Date: Sat Oct 13 20:04:19 2007
>> New Revision: 584484
>>
>> URL: http://svn.apache.org/viewvc?rev=584484&view=rev
>> Log:
>> CXF-1110 Fixed the issue of the Jetty default handler configuration blocking the CXF endpoint request
>>
>> Modified:
>>     incubator/cxf/trunk/rt/transports/http-jetty/src/main/java/org/apache/cxf/transport/http_jetty/JettyHTTPServerEngine.java
>>     incubator/cxf/trunk/systests/src/test/java/org/apache/cxf/systest/http_jetty/EngineLifecycleTest.java
>>     incubator/cxf/trunk/systests/src/test/java/org/apache/cxf/systest/http_jetty/jetty-engine.xml
>>
>> Modified: incubator/cxf/trunk/rt/transports/http-jetty/src/main/java/org/apache/cxf/transport/http_jetty/JettyHTTPServerEngine.java
>> URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/rt/transports/http-jetty/src/main/java/org/apache/cxf/transport/http_jetty/JettyHTTPServerEngine.java?rev=584484&r1=584483&r2=584484&view=diff
>> ==============================================================================
>> --- incubator/cxf/trunk/rt/transports/http-jetty/src/main/java/org/apache/cxf/transport/http_jetty/JettyHTTPServerEngine.java (original)
>> +++ incubator/cxf/trunk/rt/transports/http-jetty/src/main/java/org/apache/cxf/transport/http_jetty/JettyHTTPServerEngine.java Sat Oct 13 20:04:19 2007
>> @@ -40,6 +40,7 @@
>>  import org.mortbay.jetty.Server;
>>  import org.mortbay.jetty.handler.ContextHandler;
>>  import org.mortbay.jetty.handler.ContextHandlerCollection;
>> +import org.mortbay.jetty.handler.DefaultHandler;
>>  import org.mortbay.jetty.handler.HandlerList;
>>  import org.mortbay.jetty.nio.SelectChannelConnector;
>>  import org.mortbay.jetty.security.SslSocketConnector;
>> @@ -246,6 +247,7 @@
>>       */
>>      public synchronized void addServant(URL url, JettyHTTPHandler handler) {
>>          if (server == null) {
>> +            DefaultHandler defaultHandler = null;
>>              // create a new jetty server instance if there is no server there            
>>              server = new Server();
>>              if (connector == null) {
>> @@ -255,12 +257,21 @@
>>              if (handlers != null && handlers.size() > 0) {
>>                  HandlerList handlerList = new HandlerList();
>>                  for (Handler h : handlers) {
>> -                    handlerList.addHandler(h);
>> +                    // filting the jetty default handler 
>> +                    // which should not be added at this point
>> +                    if (h instanceof DefaultHandler) {
>> +                        defaultHandler = (DefaultHandler) h;
>>     
>
> (I don't know the system here, but...) What if something extends the
> DefaultHandler--the code above would activate, is that still what you
> would want?  Also, should we trap it as an error if there are actually
> two DefaultHandlers (or subclasses of it)?  The code above would just
> take the latter one, and ignore the other.
>
> Regards,
> Glen
>
>   
Jetty's DefaultHandler should be the last one which be put into the 
handler list (It will block the request handler chain, return the error 
message). If there are more than two DefaultHandler or the subclasses of 
it , we just add the last DefaultHandler to the handler list.

Willem.
>> +                    } else {
>> +                        handlerList.addHandler(h);
>> +                    }
>>                  }
>>                  server.addHandler(handlerList);
>>              }
>>              contexts = new ContextHandlerCollection();
>> -            server.addHandler(contexts);            
>> +            server.addHandler(contexts);
>> +            if (defaultHandler != null) {
>> +                server.addHandler(defaultHandler);
>> +            }
>>              try {
>>                  server.start();
>>                  AbstractConnector aconn = (AbstractConnector) connector;
>>
>>     
>
>
>   

RE: svn commit: r584484 - in /incubator/cxf/trunk: rt/transports/http-jetty/src/main/java/org/apache/cxf/transport/http_jetty/ systests/src/test/java/org/apache/cxf/systest/http_jetty/

Posted by Benson Margulies <bi...@basistech.com>.
Personally, I think that it would be clever to invent 

<httpj:/putCxfHandlerHere/>

To allow the app to explicitly locale the CXF handler in the middle of
the handler chain.

> -----Original Message-----
> From: Willem Jiang [mailto:ning.jiang@iona.com]
> Sent: Sunday, October 14, 2007 9:30 PM
> To: cxf-dev@incubator.apache.org
> Subject: Re: svn commit: r584484 - in /incubator/cxf/trunk:
> rt/transports/http-
> jetty/src/main/java/org/apache/cxf/transport/http_jetty/
> systests/src/test/java/org/apache/cxf/systest/http_jetty/
> 
> Hi Glen,
> 
> Please see my comment in the mail.
> 
> Glen Mazza wrote:
> > Am Sonntag, den 14.10.2007, 03:04 +0000 schrieb
ningjiang@apache.org:
> >
> >> Author: ningjiang
> >> Date: Sat Oct 13 20:04:19 2007
> >> New Revision: 584484
> >>
> >> URL: http://svn.apache.org/viewvc?rev=584484&view=rev
> >> Log:
> >> CXF-1110 Fixed the issue of the Jetty default handler configuration
> blocking the CXF endpoint request
> >>
> >> Modified:
> >>     incubator/cxf/trunk/rt/transports/http-
>
jetty/src/main/java/org/apache/cxf/transport/http_jetty/JettyHTTPServerE
ng
> ine.java
> >>
>
incubator/cxf/trunk/systests/src/test/java/org/apache/cxf/systest/http_j
et
> ty/EngineLifecycleTest.java
> >>
>
incubator/cxf/trunk/systests/src/test/java/org/apache/cxf/systest/http_j
et
> ty/jetty-engine.xml
> >>
> >> Modified: incubator/cxf/trunk/rt/transports/http-
>
jetty/src/main/java/org/apache/cxf/transport/http_jetty/JettyHTTPServerE
ng
> ine.java
> >> URL:
> http://svn.apache.org/viewvc/incubator/cxf/trunk/rt/transports/http-
>
jetty/src/main/java/org/apache/cxf/transport/http_jetty/JettyHTTPServerE
ng
> ine.java?rev=584484&r1=584483&r2=584484&view=diff
> >>
>
========================================================================
==
> ====
> >> --- incubator/cxf/trunk/rt/transports/http-
>
jetty/src/main/java/org/apache/cxf/transport/http_jetty/JettyHTTPServerE
ng
> ine.java (original)
> >> +++ incubator/cxf/trunk/rt/transports/http-
>
jetty/src/main/java/org/apache/cxf/transport/http_jetty/JettyHTTPServerE
ng
> ine.java Sat Oct 13 20:04:19 2007
> >> @@ -40,6 +40,7 @@
> >>  import org.mortbay.jetty.Server;
> >>  import org.mortbay.jetty.handler.ContextHandler;
> >>  import org.mortbay.jetty.handler.ContextHandlerCollection;
> >> +import org.mortbay.jetty.handler.DefaultHandler;
> >>  import org.mortbay.jetty.handler.HandlerList;
> >>  import org.mortbay.jetty.nio.SelectChannelConnector;
> >>  import org.mortbay.jetty.security.SslSocketConnector;
> >> @@ -246,6 +247,7 @@
> >>       */
> >>      public synchronized void addServant(URL url, JettyHTTPHandler
> handler) {
> >>          if (server == null) {
> >> +            DefaultHandler defaultHandler = null;
> >>              // create a new jetty server instance if there is no
> server there
> >>              server = new Server();
> >>              if (connector == null) {
> >> @@ -255,12 +257,21 @@
> >>              if (handlers != null && handlers.size() > 0) {
> >>                  HandlerList handlerList = new HandlerList();
> >>                  for (Handler h : handlers) {
> >> -                    handlerList.addHandler(h);
> >> +                    // filting the jetty default handler
> >> +                    // which should not be added at this point
> >> +                    if (h instanceof DefaultHandler) {
> >> +                        defaultHandler = (DefaultHandler) h;
> >>
> >
> > (I don't know the system here, but...) What if something extends the
> > DefaultHandler--the code above would activate, is that still what
you
> > would want?  Also, should we trap it as an error if there are
actually
> > two DefaultHandlers (or subclasses of it)?  The code above would
just
> > take the latter one, and ignore the other.
> >
> > Regards,
> > Glen
> >
> >
> Jetty's DefaultHandler should be the last one which be put into the
> handler list (It will block the request handler chain, return the
error
> message). If there are more than two DefaultHandler or the subclasses
of
> it , we just add the last DefaultHandler to the handler list.
> 
> Willem.
> >> +                    } else {
> >> +                        handlerList.addHandler(h);
> >> +                    }
> >>                  }
> >>                  server.addHandler(handlerList);
> >>              }
> >>              contexts = new ContextHandlerCollection();
> >> -            server.addHandler(contexts);
> >> +            server.addHandler(contexts);
> >> +            if (defaultHandler != null) {
> >> +                server.addHandler(defaultHandler);
> >> +            }
> >>              try {
> >>                  server.start();
> >>                  AbstractConnector aconn = (AbstractConnector)
> connector;
> >>
> >>
> >
> >
> >