Hi, With this sample:
final String projectPath = "./"; final String wsdlURL = projectPath + "Version.wsdl"; final QName servicename = new QName("http://axisversion.sample ","Version"); final String portname = "VersionHttpSoap11Endpoint"; final String repository = projectPath; final QName qnameOperation =new QName("http://axisversion.sample", "getVersion");; Definition wsdlDef = null; try { WSDLReader reader = WSDLFactory.newInstance().newWSDLReader(); reader.setFeature("javax.wsdl.verbose", false); wsdlDef = reader.readWSDL(wsdlURL); } catch (Exception e) { // TODO: handle exception } String repoLocation = projectPath; for (int i = 0; i < 1000; i++) { ConfigurationContext ctx=null; ctx = ConfigurationContextFactory.createConfigurationContextFromFileSystem(repoLocation, null); ServiceClient serviceClient; synchronized (wsdlDef) { serviceClient = new ServiceClient(ctx, wsdlDef, servicename, portname); } OperationClient operClient = serviceClient.createClient(qnameOperation); serviceClient.cleanup(); }//end if each time I get OutOfMemory and the reson seems to be not stopped Timer threads. Calling in addition serviceClient.getAxisConfiguration().cleanup(); solves this problem. Now the question - what's the cleanup needed here? Is it ok if I add a call to AxisConfiguration.cleanup()? If so - isn't it better to be added in ServiceClient.cleanup()? Best regards, Stoil