<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<body link="#355491" alink="#4262a1" vlink="#355491" style="background: #e2e2e2; margin: 0; padding: 20px;">

<div>
        <table cellpadding="0" bgcolor="#FFFFFF" border="0" cellspacing="0" style="border: 1px solid #dadada; margin-bottom: 30px; width: 100%; -moz-border-radius: 6px; -webkit-border-radius: 6px;">
                <tbody>
                        <tr>

                                <td>

                                        <table border="0" cellpadding="0" cellspacing="0" bgcolor="#FFFFFF" style="border: solid 2px #ccc; background: #dadada; width: 100%; -moz-border-radius: 6px; -webkit-border-radius: 6px;">
                                                <tbody>
                                                        <tr>
                                                                <td bgcolor="#000000" valign="middle" height="58px" style="border-bottom: 1px solid #ccc; padding: 20px; -moz-border-radius-topleft: 3px; -moz-border-radius-topright: 3px; -webkit-border-top-right-radius: 5px; -webkit-border-top-left-radius: 5px;">
                                                                        <h1 style="color: #333333; font: bold 22px Arial, Helvetica, sans-serif; margin: 0; display: block !important;">
                                                                        <!-- To have a header image/logo replace the name below with your img tag -->
                                                                        <!-- Email clients will render the images when the message is read so any image -->
                                                                        <!-- must be made available on a public server, so that all recipients can load the image. -->
                                                                        <a href="http://community.jboss.org/index.jspa" style="text-decoration: none; color: #E1E1E1">JBoss Community</a></h1>
                                                                </td>

                                                        </tr>
                                                        <tr>
                                                                <td bgcolor="#FFFFFF" style="font: normal 12px Arial, Helvetica, sans-serif; color:#333333; padding: 20px;  -moz-border-radius-bottomleft: 4px; -moz-border-radius-bottomright: 4px; -webkit-border-bottom-right-radius: 5px; -webkit-border-bottom-left-radius: 5px;"><h3 style="margin: 10px 0 5px; font-size: 17px; font-weight: normal;">
    MemoryFileFactory in jboss-vfs 3.0.0.CR5
</h3>
<span style="margin-bottom: 10px;">
    reply from <a href="http://community.jboss.org/people/alesj">Ales Justin</a> in <i>JBoss Microcontainer</i> - <a href="http://community.jboss.org/message/552818#552818">View the full discussion</a>
</span>
<hr style="margin: 20px 0; border: none; background-color: #dadada; height: 1px;">

<div class="jive-rendered-content"><blockquote class="jive-quote">The MemoryFileFactory class has been replaced with a InMemoryClassesDeployer which is a deployer targeted at the DESCRIBE stage. <br/></blockquote><p>I wouldn't say replaced, the deployer used to use MFF, but now used different approach,</p><p>with temp file locations, instead of keeping bytes in-memory.</p><blockquote class="jive-quote">What it does is that is mounts a temporary file system (by default in the servers tmp/vfs directory) that other deployments can add things to. In the ESB case, things like a generated servlets class, a wsdl file, and schema files would be added.<div> </div><div>So our deployers we would do somethings like this:</div><div> </div><pre class="jive-pre"><code class="jive-code jive-java">VirtualFile inMemRootDir = unit.getAttachment(InMemoryClassesDeployer.DYNAMIC_CLASS_KEY, VirtualFile.class);
VirtualFile wsdlFile = VFS.getChild(inMemRootDir.getPathName() + <span style="color: red;">"/"</span> + serviceInfo.getWSDLFileName());
<span style="color: navy;"><strong>final</strong></span> String wsdl = generateWsdl();
VFSUtils.writeFile(wsdlFile, wsdl.getBytes());
unit.appendMetaDataLocation(wsdlFile);
</code></pre>
<div> </div>
<p style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p>
<p>Is this the intended usage of the InMemoryClassesDeployer?</p>
</blockquote><p>Yes, the IMCD's intent is to create a new temp classpath root.</p><p style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><pre jivemacro="quote"><pre><code>VirtualFile wsdlFile = VFS.getChild(inMemRootDir.getPathName() + <span style="color: red;">"/"</span> + serviceInfo.getWSDLFileName());<br/></code><pre jivemacro="quote"><pre><code>--&gt; VirtualFile wsdlFile = inMemoryRootDir.getChild(serviceInfo.getWSDLFileName());<br/></code></pre>
<br/>For "unit::appendMetaDataLocation", you should append file's owner directory, not the file itself.<br/></pre>
</pre>
</pre><blockquote class="jive-quote">Now our deployer do not need to do any clean up in their undeploy methods as this is done by the InMemoryClassesDeployer which will remove the filesystem when the deployment is undeployed.</blockquote><p>Yes.</p></div>

<div style="background-color: #f4f4f4; padding: 10px; margin-top: 20px;">
    <p style="margin: 0;">Reply to this message by <a href="http://community.jboss.org/message/552818#552818">going to Community</a></p>
        <p style="margin: 0;">Start a new discussion in JBoss Microcontainer at <a href="http://community.jboss.org/choose-container!input.jspa?contentType=1&containerType=14&container=2114">Community</a></p>
</div></td>
                        </tr>
                    </tbody>
                </table>


                </td>
            </tr>
        </tbody>
    </table>

</div>

</body>
</html>