[ http://issues.apache.org/jira/browse/AXIS-2181?page=comments#action_12330467 ]
Jan Pieterse commented on AXIS-2181: ------------------------------------ Ferruh, Please look at http://java.sun.com/j2ee/sdk_1.3/techdocs/api/javax/activation/FileDataSource.html#getInputStream() first. I think the Axis development team missed that one. The inputstream isn't closed by the Axis code after the call 'getInputstream' from the datasource. So after the webservice call you will get a new InputStream by calling 'fds.getInputStream()' from the FileDataSource. After closing this inputstream there will still be another which is opened untill finalize is called. Here is a workaround: Extend FileDataSource with you own FileDataSource class. Override the 'getInputStream()' method. Make sure you return the same instance of java.io.FileInputStream every time the method (getInputStream()) is called. Give a instance of your 'home-made' FileDataSource 2 the DataHandler like: MyOwnFileDataSource fds = new MyOwnFileDataSource(new File(filename)); DataHandler contentHandler = new DataHandler(fds); After calling the webservice close the inputstream with fds.getInputStream and close(). After closing the stream you will be able to delete your file. Hope it helps, Jan P. > After sending an Attachments the local File can not removed from the > filesystem ==> cause File is locked by axis? > ----------------------------------------------------------------------------------------------------------------- > > Key: AXIS-2181 > URL: http://issues.apache.org/jira/browse/AXIS-2181 > Project: Apache Axis > Type: Bug > Components: Basic Architecture > Versions: 1.2 > Environment: Client: Windows 2000, PIII 800 MHz, 512 MB RAM. > Server Windows 2003 Server, 512 MB. > Reporter: Ferruh Zamangoer > Priority: Critical > > Hi, > we are using AXIS WS to send some MP3 files to an server where we register > these files. The problem which occurred in our scenario is that after we have > send the file we want to delete the local file on the filesystem. But we > can?t delete the file because anything references or blocks the file. We have > localized that the problem occurs in the part after the webservice call. When > we uncomment the the part of the call the removing works. For sending our > file as attachment we use the following code lines. > boolean status = ws.registerContent("trebun", > "password", ci); //call service > System.out.println("status: " + status); > File file = new > File("MP3/RENCBER_DEWRANO_10_ELE__WWW.MP3"); //delete file > boolean deleteState = file.delete(); ==> error occurs > here? > We cause for the error could be that a Stream are opened and not closed. > FileDataSource fds = new FileDataSource(new File(filename)); > DataHandler contentHandler = > new DataHandler(fds > ); > The scenario can reproduced easily. > 1. send and file to a server with attachment > 2. After the Call of the webserice try to remove the local file without to > shutdown your app. > We are using on the client side the following Java Version: > java version "1.4.2_05" > Java(TM) 2 Runtime Environment, Standard Edition (build 1.4.2_05-b04) > Java HotSpot(TM) Client VM (build 1.4.2_05-b04, mixed mode) -- This message is automatically generated by JIRA. - If you think it was sent incorrectly contact one of the administrators: http://issues.apache.org/jira/secure/Administrators.jspa - For more information on JIRA, see: http://www.atlassian.com/software/jira
