# cxf-users mailing list archives

##### Site index · List index
Message view
Top
From Daniel Kulp <dk...@apache.org>
Subject Re: Spring, bus, confusion
Date Tue, 02 Oct 2007 22:08:37 GMT

Well, I guess my reaction is that anything you do in "setup" requires an
explicit thing to reverse it in the tearDown.   If you add a handler,
you should remove it in tearDown.

Dan

On Monday 01 October 2007, Benson Margulies wrote:
> Dan,
>
> In the current experiment, I'm adding a handler to the server via
> explicit Java code, not spring wiring.
>
> Nothing I am adding is exactly a context, it is just a resource
> handler.
>
> Perhaps it needs a 'stop', too.
>
> I could argue that there should be some way to say, 'make me a
> self-contained universe using no static variables.'
>
> > -----Original Message-----
> > From: Daniel Kulp [mailto:dkulp@apache.org]
> > Sent: Monday, October 01, 2007 2:07 PM
> > To: cxf-user@incubator.apache.org
> > Cc: Benson Margulies
> > Subject: Re: Spring, bus, confusion
> >
> >
> > Benson,
> >
> > The Jetty servers are static, not per bus.   The main reason is if
> > you two buss's in your application that have services that need to
> > be deployed on the same port (like port 80), we can do that without
> > port
>
> in
>
> > use issues.
> >
> > When you call bus.shutdown, it will only shutdown the port if there
>
> are 0
>
> > contexts left (supposedly).    Thus, before you call shutdown, you
>
> would
>
> > need to unregister any extra contexts created in the @Before.
> >
> > Hmm....   are you adding the contexts via spring?   That might get
>
> more
>
> > involved.   We might not have added a
> > bean.setDestroyMethodName(...); type thing for the extra contexts to
> > remove them.   Looking....
> >
> > The method:
> > public void shutdown()
> > certainly doesn't remove the handlers.
> >
> > Definitely some bugs in that area.  :-(
> >
> > Dan
> >
> > On Monday 01 October 2007, Benson Margulies wrote:
> > > The server's list of handlers still has the extra handler. Did you
> > > look at the source code I sent? The @Before method inserts an
> > > extra handler into the server. The @After calls bus.shutdown.
> > >
> > > The next time we run the @Before, we should be restarting from
> > > complete zero, we are rereading the beans into a new app context.
>
> Yet,
>
> > > the server on the bus still somehow has the extra handler.
> > >
> > > > -----Original Message-----
> > > > From: Willem2 [mailto:ning.jiang@iona.com]
> > > > Sent: Monday, October 01, 2007 11:32 AM
> > > > To: cxf-user@incubator.apache.org
> > > > Subject: RE: Spring, bus, confusion
> > > >
> > > >
> > > > What do you mean the server's configuration is there?
> > > >
> > > > Do you mean the jetty server is still there ?
> > > >
> > > > Willem.
> > > >
> > > > bmargulies wrote:
> > > > > I tried that. I still found my configuration changes to the
>
> server
>
> > > > > 'already present' when I create the next application context.
> > > > >
> > > > >> -----Original Message-----
> > > > >> From: Willem2 [mailto:ning.jiang@iona.com]
> > > > >> Sent: Monday, October 01, 2007 9:11 AM
> > > > >> To: cxf-user@incubator.apache.org
> > > > >> Subject: Re: Spring, bus, confusion
> > > > >>
> > > > >>
> > > > >> Hi Benson,
> > > > >>
> > > > >> You can call bus.shutdown(true) in @After to tear down the
>
> server
>
> > > and
> > >
> > > > > the
> > > > >
> > > > >> jetty engine.
> > > > >>
> > > > >>
> > > > >> Willem.
> > > > >>
> > > > >> bmargulies wrote:
> > > > >> > Please forgive me for pasting a lot of code into here.
> > > > >> >
> > > > >> > I'm trying to set up a unit test framework where the
> > > > >> > fixture sets
> > >
> > > up
> > >
> > > > >> > jetty with an endpoint and some static content. So, as you
>
> will
>
> > > see,
> > >
> > > > > I
> > > > >
> > > > >> > have an @Before that sets everything up, and an @After that
> > > > >> > tries
> > >
> > > to
> > >
> > > > >> > tear everything down.
> > > > >> >
> > > > >> > However, when the @Before runs the second time, things sure
> > > > >> > look
> > >
> > > as
> > >
> > > > > if
> > > > >
> > > > >> > they have all hung around from the first time around.
> > > > >> >
> > > > >> > I bet that there's something simple about the bus that I'm
> > >
> > > missing,
> > >
> > > > >> > namely, that the cxf bus exists independently of my app
> > > > >> > context,
> > >
> > > and
> > >
> > > > > I
> > > > >
> > > > >> > have to \do something/ to tear \it/ down.
> > > > >> >
> > > > >> >
> > > > >> >
> > > > >> >
> > > > >> >
> > > > >> > package com.basistech.ws;
> > > > >> >
> > > > >> > import java.io.File;
> > > > >> > import java.net.URL;
> > > > >> >
> > > > >> > import org.apache.cxf.Bus;
> > > > >> > import org.apache.cxf.endpoint.ServerImpl;
> > > > >> > import org.apache.cxf.endpoint.ServerRegistry;
> > > > >> > import
> > > > >> > org.apache.cxf.transport.http_jetty.JettyHTTPDestination;
> > > > >> > import
> > > > >> > org.apache.cxf.transport.http_jetty.JettyHTTPServerEngine;
> > > > >> > import org.junit.After;
> > > > >> > import org.junit.Before;
> > > > >> > import org.mortbay.jetty.Handler;
> > > > >> > import org.mortbay.jetty.Server;
> > > > >> > import org.mortbay.jetty.handler.ContextHandlerCollection;
> > > > >> > import org.mortbay.jetty.handler.HandlerList;
> > > > >> > import org.mortbay.jetty.handler.ResourceHandler;
> > > > >> > import org.mortbay.resource.FileResource;
> > > > >> > import
> > > > >
> > > > > org.springframework.beans.factory.xml.XmlBeanDefinitionReader;
> > > > >
> > > > >> > import
> > > > >
> > > > > org.springframework.context.support.GenericApplicationContext;
> > > > >
> > > > >> > import org.springframework.core.io.ClassPathResource;
> > > > >> > import org.springframework.core.io.Resource;
> > > > >> >
> > > > >> > /**
> > > > >> >  * Class used to launch a CXF/jetty web service using the
> > >
> > > embedded
> > >
> > > > > jetty
> > > > >
> > > > >> > in CXF.
> > > > >> >  *
> > > > >> >  */
> > > > >> > public abstract class AbstractTestService {
> > > > >> >
> > > > >> >     protected abstract Resource
> > > > >> > getServiceDefinitionBeans(); protected abstract String
> > > > >> > getStaticContentPath(); protected GenericApplicationContext
> > > > >> > applicationContext; protected Bus bus;
> > > > >> >
> > > > >> >     private void readBeans(Resource beanResource) {
> > > > >> > XmlBeanDefinitionReader(applicationContext);
> > > > >> >     }
> > > > >> >
> > > > >> >     @Before
> > > > >> >     public void launchService() throws Exception {
> > > > >> >         applicationContext = new
> > > > >> > GenericApplicationContext(); readBeans(new
> > > > >> > ClassPathResource("META-INF/cxf/cxf.xml")); readBeans(new
> > > > >> > ClassPathResource("META-INF/cxf/cxf-extension-soap.xml"));
> > > > >> >         readBeans(new
> > > > >> > ClassPathResource("META-INF/cxf/cxf-extension-http.xml"));
> > > > >> >         readBeans(new
>
> ClassPathResource("META-INF/cxf/cxf-extension-http-jetty.xml"))
>
> > > > >> >; readBeans(getServiceDefinitionBeans());
> > > > >> >         applicationContext.refresh();
> > > > >> >
> > > > >> >         bus = (Bus)applicationContext.getBean("cxf");
> > > > >> >         ServerRegistry sr=
> > >
> > > bus.getExtension(ServerRegistry.class);
> > >
> > > > >> >         ServerImpl si = (ServerImpl)
> > > > >> > sr.getServers().get(0); JettyHTTPDestination jhd =
> > > > >> > (JettyHTTPDestination)si.getDestination();
> > > > >> >         JettyHTTPServerEngine engine =
>
> (JettyHTTPServerEngine)
>
> > > > >> > jhd.getEngine();
> > > > >> >         Server server = engine.getServer();
> > > > >> >         Handler serverHandler = server.getHandler();
> > > > >> >         ContextHandlerCollection contextHandlerCollection
=
> > > > >> > (ContextHandlerCollection)serverHandler;
> > > > >> >         HandlerList handlerList = new HandlerList();
> > > > >> >         ResourceHandler resourceHandler = new
> > > > >> > ResourceHandler(); handlerList.addHandler(resourceHandler);
> > > > >> >         handlerList.addHandler(contextHandlerCollection);
> > > > >> >         server.setHandler(handlerList);
> > > > >> >         handlerList.start();
> > > > >> >         File staticContentFile = new
> > >
> > > File(getStaticContentPath());
> > >
> > > > >> >         URL targetURL = new URL("file://" +
> > > > >> > staticContentFile.getCanonicalPath());
> > > > >> >         FileResource fileResource = new
> > > > >> > FileResource(targetURL);
> > > > >> > resourceHandler.setBaseResource(fileResource); }
> > > > >> >
> > > > >> >     @After
> > > > >> >     public void shutdownService() throws Exception {
> > > > >> >         bus = (Bus)applicationContext.getBean("cxf");
> > > > >> >         ServerRegistry sr =
> > >
> > > bus.getExtension(ServerRegistry.class);
> > >
> > > > >> >         ServerImpl si = (ServerImpl)
> > > > >> > sr.getServers().get(0); JettyHTTPDestination jhd =
> > > > >> > (JettyHTTPDestination)si.getDestination();
> > > > >> >         JettyHTTPServerEngine e = (JettyHTTPServerEngine)
> > > > >> > jhd.getEngine();
> > > > >> >         e.getServer().stop();
> > > > >> >         applicationContext.destroy();
> > > > >> >     }
> > > > >> >
> > > > >> > }
> > > > >>
> > > > >> --
> > > > >> View this message in context:
> > >
> > > http://www.nabble.com/Spring%2C-bus%2C-
> > >
> > > > >> confusion-tf4545841.html#a12978917
> > > > >> Sent from the cxf-user mailing list archive at Nabble.com.
> > > >
> > > > --
> > > > View this message in context:
> > > > http://www.nabble.com/Spring%2C-bus%2C-
> > > > confusion-tf4545841.html#a12981449
> > > > Sent from the cxf-user mailing list archive at Nabble.com.
> >
> > --
> > J. Daniel Kulp
> > Principal Engineer
> > IONA
> > P: 781-902-8727    C: 508-380-7194
> > daniel.kulp@iona.com
> > http://www.dankulp.com/blog

--
J. Daniel Kulp
Principal Engineer
IONA
P: 781-902-8727    C: 508-380-7194
daniel.kulp@iona.com
http://www.dankulp.com/blog


Mime
View raw message