Hi, I ran into an issue where a registered web service cannot be updated. The scenario is as follows:
1. Register a services as shown below. Implementation and interface are defined in separate bundles. 2. Verify that http://<host>/MyInterfaceService?wsdl returns the correct interface. 3. Stop de running interface and implementation bundles. 4. Verify that the service is stopped by requesting the wsdl again. Should fail with 404. 5. Change the interface definition (add a method, delete a method, anything…) 6. Update the bundles in the framework. 7. Restart the bundles and notice the cxf registration messages. 8. Request the wsdl again. Make sure to use 'reload' in the browser. Expected to see the new interface definition, instead the previous definition still shows up. Even unregistering the bundle from the framework altogether before installing the new one does not solve the problem. This behavior is probably caused becasue the /MyInterfaceService context is never removed from the web server, even though the service itself is removed. I am using a somewhat older version of cxf, so this may have been fixed/changed in later versions, although I cannot find any evidence re. that. Apart from it being inconvenient, I would like to understand exactly what is happening here, and come up withat a work-around from there. Your help and insight is appreciated. Kind Regards, Erwin From the Activator: public void start( BundleContext context ) throws Exception { myInterfaceService = new MyInterfaceServiceImpl( context, RepositoryFactory.getInstance()); myServiceTracker = new ServiceTracker(context, MyTrackedService.class, myInterfaceService); myServiceTracker.open(); Dictionary<String, Object> props = new Hashtable<String, Object>(); props.put( "name", "MyInterfaceServiceImpl" ); props.put( "type", "internal" ); props.put( "service.exported.interfaces", "*" ); props.put( "service.exported.configs", "org.apache.cxf.ws" ); props.put( "org.apache.cxf.ws.httpservice.context", "/MyInterfaceService" ); myInterfaceService = context.registerService( MyInterfaceService.class.getName(), myInterfaceService, props ); } public void stop( BundleContext context ) throws Exception { if ( myInterfaceService != null ) { myInterfaceService.unregister(); } if (myServiceTracker != null){ myServiceTracker.close(); } }