cxf-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "R.O. (JIRA)" <j...@apache.org>
Subject [jira] Updated: (CXF-1743) Temporary files are not deleted
Date Tue, 12 Aug 2008 11:00:44 GMT

     [ https://issues.apache.org/jira/browse/CXF-1743?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]

R.O. updated CXF-1743:
----------------------

    Description: 
I have endpoint declared in Spring as follows:
---
	<jaxws:endpoint id="importService"
		implementor="my.ImportServiceImpl"
		address="/importService">
		<jaxws:properties>
			<entry key="mtom-enabled" value="true" />
		</jaxws:properties>
	</jaxws:endpoint>

---

During tests I discovered, that large attachments (>64k), which are saved in temporary
files, are not removed after processing SOAP message.

I've analysed sources of org.apache.cxf.attachment.AttachmentDataSource and org.apache.cxf.io.CachedOutputStream
and discovered that AttachmentDataSource does not allow to close cache. 
The only solution is to add close() method to AttachmentDataSource and close cache manually.








  was:
I have endpoint declared in Spring as follows:
---
	<jaxws:endpoint id="importService"
		implementor="my.ImportServiceImpl"
		address="/importService">
		<jaxws:properties>
			<entry key="mtom-enabled" value="true" />
		</jaxws:properties>
	</jaxws:endpoint>

---

I've analysed sources of org.apache.cxf.attachment.AttachmentDataSource and org.apache.cxf.io.CachedOutputStream
and discovered that AttachmentDataSource does not allow to close cache. 
The only solution is to add closeCache() method to AttachmentDataSource and close cache manually.
During tests I discovered, that large attachments (>64k), which are saved in temporary
files, are not removed after processing SOAP message.








My solution (hack) of this bug:

1. add close() method to AttachmentDataSource:
    /**
     * The only way to clean temporary files.
     * 
     * @throws IOException if closing cache threw an exception.  
     */
    public void close() throws IOException {
        cache.close();
    }

2. manually close LazyDataSource objects used to access uploaded attachments using such helper
method:

	public static void closeDatasource(DataSource ds) {
		if(ds != null && ds instanceof LazyDataSource) {
			if(((LazyDataSource) ds).getDataSource() instanceof AttachmentDataSource) {
				AttachmentDataSource attDS = (AttachmentDataSource) ((LazyDataSource) ds).getDataSource();
				try {
					attDS.close();
				} catch (IOException e) {
					// logger.error(e.getMessage(), e);
				}
			}
		}
		
	}

This fixes this bug in 2.1.1 and probably in 2.1.2-SNAPSHOT.


> Temporary files are not deleted
> -------------------------------
>
>                 Key: CXF-1743
>                 URL: https://issues.apache.org/jira/browse/CXF-1743
>             Project: CXF
>          Issue Type: Bug
>          Components: Core
>    Affects Versions: 2.1.1, 2.1.2
>         Environment: Linux, FreeBSD
>            Reporter: R.O.
>
> I have endpoint declared in Spring as follows:
> ---
> 	<jaxws:endpoint id="importService"
> 		implementor="my.ImportServiceImpl"
> 		address="/importService">
> 		<jaxws:properties>
> 			<entry key="mtom-enabled" value="true" />
> 		</jaxws:properties>
> 	</jaxws:endpoint>
> ---
> During tests I discovered, that large attachments (>64k), which are saved in temporary
files, are not removed after processing SOAP message.
> I've analysed sources of org.apache.cxf.attachment.AttachmentDataSource and org.apache.cxf.io.CachedOutputStream
and discovered that AttachmentDataSource does not allow to close cache. 
> The only solution is to add close() method to AttachmentDataSource and close cache manually.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


Mime
View raw message