Hi,

Yes.

IIRC, for server side you need write a routingInterceptor to dispatch message to different endpoint. When multiple endpoints publish to same address, those endpoints will share same MultipleEndpointObserver, by default, the MultipleEndpointObserver will use EndpointSelectionInterceptor to select on the proper endpoint based on soap version, this is a typical usecase which different endpoints(use soap11 or soap12) get published to same uri. You can replace this routingInterceptor for your purpose, we actually have a testcase[1] which demonstrate how it works, the routingInterceptor used in this tesecase is[2] The key code to publish different endpoints on same address and register a MultipleEndpointObserver which use the routingInterceptor you want is

String address = "http://localhost:"; + PORT + "/SoapContext/ SoapPort";

        Object implementor1 = new GreeterImplMixedStyle(" version1");
EndpointImpl ep1 = (EndpointImpl) Endpoint.publish(address, implementor1);

        ep1.getServer().getEndpoint().put("version", "1");
ep1.getServer().getEndpoint().put("allow-multiplex-endpoint", Boolean.TRUE);

        //Register a MediatorInInterceptor on this dummy service

        Object implementor2 = new GreeterImplMixedStyle(" version2");
EndpointImpl ep2 = (EndpointImpl) Endpoint.publish(address, implementor2);
        ep2.getServer().getEndpoint().put("version", "2");

        MultipleEndpointObserver meo = (MultipleEndpointObserver)
            ep1.getServer().getDestination().getMessageObserver();
        meo.getRoutingInterceptors().clear();
        meo.getRoutingInterceptors().add(new MediatorInInterceptor());


[1]https://svn.apache.org/repos/asf/cxf/trunk/systests/uncategorized/src/test/java/org/apache/cxf/systest/versioning/ClientServerVersioningTest.java
[2]https://svn.apache.org/repos/asf/cxf/trunk/systests/uncategorized/src/test/java/org/apache/cxf/systest/versioning/MediatorInInterceptor.java

Freeman
On 2011-12-28, at 下午5:51, xuhb wrote:

Hi:
Does anyone know when will org.apache.cxf.transport.MultipleEndpointObserver be used?

Does it means CXF support a feature: publish multiple endpoint on same address?

   Thanks any suggestion.

---------------------------------------------
Freeman Fang

FuseSource
Email:[email protected]
Web: fusesource.com
Twitter: freemanfang
Blog: http://freemanfang.blogspot.com









Reply via email to