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
