We did some custom MessageObservers at a time of doing jaxws tck 2.0 for
a container shipped with fuse cxf.
One basically needs to register a bean from spring and pass it a cxf bus
reference. Next, this bean, when instantiated, needs to register itself
as a service listener with a bus, and it can be configured on what
endpoints it needs to listen. Then it can provide a custom message
observer - I can try and find that code if needed

Cheers, Sergey  

-----Original Message-----
From: Daniel Kulp [mailto:[EMAIL PROTECTED] 
Sent: 25 November 2008 19:55
To: [email protected]
Cc: Alexey Zavizionov
Subject: Re: How to publish multiport service?

On Tuesday 25 November 2008 10:19:54 am Alexey Zavizionov wrote:
> Are there any thoughts?
>
> How can I publish several ports with one service name?
>
>        String address = "http://my.service:8082/WSRPService";;
>        Endpoint.publish(address, implementor);

There isn't a way to do it.   Each endpoint needs to have a unique URL.
The 
ONLY exception we have right now is aSOAP 1.1 and a 1.2 endpoint can
share 
the URL as the endpoint can be determined just from the namespace of the

soap:envelope.   

You MAY be able to get it to work if you change the MessageObserver on
the 
first registered endpoint to the MultipleEndpointObserver.   Then add
some 
interceptors to figure out which endpoint to hit (probably saaj
interceptor + 
something to look a the element names or similar), then register the
second.   
Not something I've tried though.

Dan


>
> Regards,
> Alexey
>
> --
> Alexey Zavizionov
> eXo Platform SAS
>
> On Mon, Nov 24, 2008 at 3:08 PM, Alexey Zavizionov
>
> <[EMAIL PROTECTED]> wrote:
> > How can I publish more than one port for a service?
> >
> > With generated sources I cannot do it due to the same address for
both of
> > them.
> >
> >  <wsdl:service name="WSRPService">
> >    <wsdl:port binding="v2bind:WSRP_v2_Markup_Binding_SOAP"
> > name="WSRP_v2_Markup_Service">
> >      <soap:address location="http://my.service:8082/WSRPService"/>
> >    </wsdl:port>
> >    <wsdl:port
binding="v2bind:WSRP_v2_ServiceDescription_Binding_SOAP"
> > name="WSRP_v2_ServiceDescription_Service">
> >      <soap:address location="http://my.service:8082/WSRPService"/>
> >    </wsdl:port>
> >
> >
> >    protected WSRPV2MarkupPortType_WSRPV2MarkupService_Server()
throws
> > Exception {
> >        System.out.println("Starting Server");
> >        Object implementor = new WSRPV2MarkupPortTypeImpl();
> >        String address = "http://my.service:8082/WSRPService";;
> >        Endpoint.publish(address, implementor);
> >    }
> >
> >    protected
> >
WSRPV2ServiceDescriptionPortType_WSRPV2ServiceDescriptionService_Server(
)
> > throws Exception {
> >        System.out.println("Starting Server");
> >        Object implementor = new
WSRPV2ServiceDescriptionPortTypeImpl();
> >        String address = "http://my.service:8082/WSRPService";;
> >        Endpoint.publish(address, implementor);
> >    }
> >
> > ============================
> > java.lang.RuntimeException: Soap 1.1 endpoint already registered on
> > address /WSRPService
> >       
> >
org.apache.cxf.binding.soap.SoapBindingFactory.addListener(SoapBindingFa
c
> >tory.java:747)
> > org.apache.cxf.endpoint.ServerImpl.start(ServerImpl.java:122)
> > org.apache.cxf.jaxws.EndpointImpl.doPublish(EndpointImpl.java:263)
> > org.apache.cxf.jaxws.EndpointImpl.publish(EndpointImpl.java:201)
> >
org.apache.cxf.jaxws.spi.ProviderImpl.createAndPublishEndpoint(ProviderI
m
> >pl.java:84) javax.xml.ws.Endpoint.publish(Endpoint.java:47)
> > ============================
> >
> >
> > Regards,
> > Alexey.



-- 
Daniel Kulp
[EMAIL PROTECTED]
http://dankulp.com/blog

Reply via email to