On 5/8/07, Glynn, Eoghan <[EMAIL PROTECTED]> wrote:




By the mechanism being specific to JAX-WS, I meant that this frontend
provides the only way of wiring features in from configuration.

I didn't realize that an analogous <simple:server> approach can be used
with the simple frontend. Can you point me at a test/demo?


I haven't actually supported the <simple:server> syntax yet. I was simply
drawing a distinction between EndpointImpl and *ServerFactorys. The one
produces Endpoints. The other produces Servers. Hence their names :-)

Back to the main question of making the applied features available to a
ServerLifeCycleListener .. are you saying the general solution would be
to pass a reference to the underlying ServerFactoryBean to the
org.apache.cxf.endpoint.EndpointImpl, which would have to go via the
AbstractServiceFactoryBean.create() I guess?


No, I don't think we should keep the factorybeans around.

Or to add a new setFeautures() method to
org.apache.cxf.endpoint.EndpointImpl, which is then called by
ServerFactoryBean.create() on the endpoint created via
AbstractServiceFactoryBean.create()?



Yes. I think your suggestion to create the *Features around is a good one
and we should maybe add a org.apache.cxf.endpoint.Endpoint.getFeatures()
method. This would only contain the active features I would think.

/Eoghan



> -----Original Message-----
> From: Dan Diephouse [mailto:[EMAIL PROTECTED]
> Sent: 08 May 2007 16:54
> To: [email protected]
> Subject: Re: Determining the Features applied to an endpoint,
> from ServerLifeCycleListener.startServer()
>
> Hi Eoghan
>
> On 5/8/07, Glynn, Eoghan <[EMAIL PROTECTED]> wrote:
> >
> >
> >
> > Folks,
> >
> > I'd like to customize the behavior of a
> ServerLifeCycleListener on the
> > basis of the features applied to the corresponding endpoint.
> >
> > Now the problem is how to determine which features have
> been applied
> > to the endpoint in question.
> >
> > The problem sortta boils down to the way the feature mechanism is
> > specific to JAX-WS, as opposed to being common to all
> frontends. If I
> > could assume the endpoint was published via JAX-WS (as
> opposed to say
> > the simple frontend), then you'd think it would just be a
> simple case
> > of:
>
>
> How is it specific to JAX-WS?  ClientFactoryBeans and
> ServerFactoryBeans support features as well (get/setFeatures)
>
> I'm guessing that you are referring to the fact that
> get/setFeature is on EndpointImpl and thus it hangs around
> even after Server/Client creation.
> Whereas in the simple frontend we simply discard the
> *factorybeans which hold the features. The reason
> EndpointImpl is like this is because we needed a way to set
> the features before doing a publish. So someone can create an
> endpoint, set the features, then publish it.
>
> Public class FeatureAwareServerLifecycleListener
> >     implements ServerLifecycleListener {
> >
> >     public void startServer(Server server) {
> >         List<AbstractFeature> appliedFeatures =
> >
> >
> ((org.apache.cxf.jaxws.EndpointImpl)server.getEndpoint()).getF
> eatures();
> >         //...
> >     }
> >     //...
> > }
> >
> > Apart from the cast above being ugly and error-prone, it
> doesn't seem
> > to give me what I need anyway, as this endpoint is an instance of
> > org.apache.cxf.jaxws.support.JaxWsEndpointImpl (which
> doesn't expose
> > the applied Features) as opposed to
> org.apache.cxf.jaxws.EndpointImpl
> > (which does).
> >
> > I guess I could add something like
> > JaxWsEndpointImpl.setFrontendEndpoint() so as to allow navigation
> > between the two Endpoint impls, but this approach is
> beginning to look
> > really messy, not least because JaxWsEndpointImpl is used on the
> > client-side also.
> >
> > So it would seem more logical that the feature mechanism be made
> > independent of JAX-WS, so we wouldn't have to resort to the above
> > hoop-jumping (as the applied features would then presumably be
> > available from org.apache.cxf.endpoint.EndpointImpl, or
> maybe via the
> > Server instance directly instead).
> >
> > So is there any reason why the <jaxws:endpoint> should be
> specific to
> > JAX-WS?
>
>
> Well jaxws:endpoint is specific to jaxws because it produces
> a javax.xml.ws.Endpoint bean. The simple frontend would no
> doubt have a <simple:server> instead because it produces a
> Server bean.
>
> For example, are there any aspects of <jaxws:endpoint> that don't
> > naturally map onto say the simple frontend?
>
>
> Does the above explanation help clarify?
>
> I'd be +1 to keeping the features around somewhere. The CXF
> Endpoint class sounds like a good place IMO. This could also
> help with some of the JMX stuff Seumas was talking about I think.
>
> - Dan
> --
> Dan Diephouse
> Envoi Solutions
> http://envoisolutions.com | http://netzooid.com/blog
>




--
Dan Diephouse
Envoi Solutions
http://envoisolutions.com | http://netzooid.com/blog

Reply via email to