Fix (APAR): PK21320 Status: Fix Release: 5.1.1.9,5.1.1.8 Operating System: AIX,HP-UX,Linux,Linux Red Hat - pSeries,Linux zSeries,OS/390,OS/400,Solaris,Windows,z/OS Supersedes Fixes: CMVC Defect: 353935 Byte size of APAR: 90481 Date: 2006-03-14 Abstract: java.io.IOException: WSWS3039E: Error: Resource has been deleted Description/symptom of problem: PK21320 resolves the following problem: ERROR DESCRIPTION: Application uses SOAP with attachment and receives the following exception: [27.2.2006 14:13:44:989 CET] 440bf8e0 MimeUtils E com.ibm.ws.webservices.engine.attachments.MimeUtils WSWS3234E: Error: java.io.IOException: [27.2.2006 14:13:44:989 CET] 440bf8e0 MimeUtils E com.ibm.ws.webservices.engine.attachments.MimeUtils TRAS0014I: The following exception was logged java.io.IOException: WSWS3039E: Error: Resource has been deleted. at com.ibm.ws.webservices.engine.attachments.ManagedMemoryDataSou rce$Instream.(ManagedMemoryDataSource.java:614) at com.ibm.ws.webservices.engine.attachments.ManagedMemoryDataSou rce.getInputStream(ManagedMemoryDataSource.java:230) at javax.activation.DataHandler.writeTo(DataHandler.java:287) ... The above exception occurs after writting the SOAPMessage (SOAPMessage.writeTo) to OutputStream. LOCAL FIX: PROBLEM SUMMARY USERS AFFECTED: WebSphere Application Server users of web services PROBLEM DESCRIPTION: java.io.IOException: WSWS3039E: Error: Resource has been deleted RECOMMENDATION: None The memory cache used by the attachment code (created and deleted within the ManagedMemoryDataSource object) is non-static, so it goes away eventually. Since it is possible that the cache may be stored to disk, the code is correctly proactive in deleting the cache. The problem is that the 5.1.1.8 code is a little too ambitious in it's desire to clean up. The 6.0.2.1 code is also proactive in deleting the cache, but waits to do so until the last possible moment (by calling AttachmentsImpl.removeAllAttachments() in HTTPSender.invoke(), among several other similar places such as in WebServicesServlet.sendResponse() or JMSListenerMDB.sendResponse(), etc.), thus allowing custom handlers to do whatever they wish with an attachment. The 5.1.1.8 code proactively deletes the cache, but unlike the 6.0.2.1 code, does so from AttachmentsImpl.writeContentToStream(), ImageDataHandlerDeserializer.startElement(), and other *HandlerDeserializer classes, thus deleting the attachment before a custom handler is invoked. Although it exists in the 5.1.1.8 code, AttachmentsImpl.removeAllAttachments() is never called. The behavior of the 5.1.1.8 code has been changed to behave like the 6.0.2.1 code. PROBLEM CONCLUSION: The behavior of the 5.1.1.8 code has been changed to behave like the 6.0.2.1 (and higher) code. The fix for this APAR is currently targeted for inclusion in cumulative fix 5.1.1.11. Please refer to the recommended updates page for delivery information: http://www.ibm.com/support/docview.wss?rs=180&uid=swg27004980 Directions to apply fix: NOTE: Choose the: 1) Release the fix applies to 2) The Editions that apply 3) Delete the Editions & Methods that do not apply and this Note Fix applies to Editions: Release: 5.0 5.1 ___ _x__ Application Server (Express or BASE) ___ Enterprise Edition (DD) ___ ___ Network Deployment (ND) ___ ___ Edge Components ___ ___ Developers Edition ___ ___ Tools ___ WebSphere Business Integration Server Foundation (WBISF) Install Fix to: Method: __ Application Server Nodes __ Deployment Manager Nodes _x_ Both NOTE: The user must: * Have Administrative rights in Windows, or be the Actual Root User in a UNIX environments. * Be logged in with the same authority level when unpacking a fix, fix pack or refresh pack. The Update Installer can be downloaded from the following link: http://www.ibm.com/support/docview.wss?rs=180&uid=swg21205991 The Update Installer for V5.0 does not have a maintenance directory. It uses fixpacks and fixes as the location of the unpacked files. 1) Copy PKxxxxx.jar file directly to the maintenance directory 2) Shutdown WebSphere Manually execute setupCmdLine.bat in Windows or . ./setupCmdLine.sh in Unix from the WebSphere instance that maintenance is being applied to. 3) Launch Update Installer 4) Enter the installation location of the WebSphere product you want to update. 5) Select the "Install maintenance package" operation. 6) Enter the file name of the maintenance package to install (PKxxxxx.jar file which was copied in the maintenance directory). The V5.0 and V5.1 fix packs and fixes are unpacked as .jar files and should be unpacked into fixpacks or fixes directory. 7) Install the maintenance package. 8) Restart WebSphere Directions to remove fix: NOTE: * The user must have Administrative rights in Windows, or be the Actual Root User in a UNIX environments. * FIXES MUST BE REMOVED IN THE ORDER THEY WERE APPLIED * DO NOT REMOVE A FIX UNLESS ALL FIXES APPLIED AFTER IT HAVE FIRST BEEN REMOVED * YOU MAY REAPPLY ANY REMOVED FIX Example: If your system has fix1, fix2, and fix3 applied in that order and fix2 is to be removed, fix3 must be removed first, fix2 removed, and fix3 re-applied. 1) Shutdown WebSphere Manually execute setupCmdLine.bat in Windows or . ./setupCmdLine.sh in Unix from the WebSphere instance that uninstall is being run against. 2) Start Update Installer 3) Enter the installation location of the WebSphere product you want to remove the fix. 4) Select "Uninstall maintenance package" operation. 5) Enter the file name of the maintenance package to uninstall (PKxxxxx.jar). 6) UnInstall maintenance package. 7) Restart WebSphere Directions to re-apply fix: 1) Shutdown WebSphere. 2) Follow the Fix instructions to apply the fix. 3) Restart WebSphere. Additional Information: