You'd likely need to remove it from the Binding as well.   At runtime, the 
BindingOperationInfo's are the stuff that are normally used (and they would 
point directly back to the OperationInfo's that you removed so they are still 
holding refs to it.


Dan


On Thursday, July 07, 2011 8:00:56 PM Nguyen Minh Tuan wrote:
> Hi all,
> 
> I tried to remove an operation from a service using the following code
> snippet. Unfortunately, the removed operation is still running and clients
> still can invoke it. What did I do wrong? Did I misunderstand the method's
> purpose? Btw, I tested with the latest version of cxf 2.4.1 and added the
> code snippet to wsdl_first sample:
> 
> -----------------------------------------------------------------
>         EndpointImpl ep = (EndpointImpl)Endpoint.publish("
> http://localhost:9090/CustomerServicePort";,
>                                                          implementor);
> 
>         OperationInfo removeOperationInfo = null;
> 
>         List<ServiceInfo> serviceInfoList =
> ep.getService().getServiceInfos();
>         for (ServiceInfo serviceInfo : serviceInfoList) {
>             InterfaceInfo interfaceInfo = serviceInfo.getInterface();
> 
>             Collection<OperationInfo> operationInfoCollection =
> interfaceInfo.getOperations();
>             for (OperationInfo operationInfo : operationInfoCollection) {
>                 System.out.println(operationInfo.getName());
> 
>                 if (operationInfo.getName().toString().contains("update"))
>                     removeOperationInfo = operationInfo;
>             }
> 
>             if (removeOperationInfo != null) {
>                 System.out.println("Remove " +
> removeOperationInfo.getName());
>                 interfaceInfo.removeOperation(removeOperationInfo);
>             }
>         }
> -----------------------------------------------------------------
-- 
Daniel Kulp
[email protected]
http://dankulp.com/blog
Talend - http://www.talend.com

Reply via email to