Ales Justin [
http://community.jboss.org/people/alesj] replied to the discussion
"MemoryFileFactory in jboss-vfs 3.0.0.CR5"
To view the discussion, visit:
http://community.jboss.org/message/552818#552818
--------------------------------------------------------------
The MemoryFileFactory class has been replaced with a
InMemoryClassesDeployer which is a deployer targeted at the DESCRIBE stage.
I wouldn't say replaced, the deployer used to use MFF, but now used different
approach,
with temp file locations, instead of keeping bytes in-memory.
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.
So our deployers we would do somethings like this:
VirtualFile inMemRootDir = unit.getAttachment(InMemoryClassesDeployer.DYNAMIC_CLASS_KEY,
VirtualFile.class);
VirtualFile wsdlFile = VFS.getChild(inMemRootDir.getPathName() + "/" +
serviceInfo.getWSDLFileName());
*final* String wsdl = generateWsdl();
VFSUtils.writeFile(wsdlFile, wsdl.getBytes());
unit.appendMetaDataLocation(wsdlFile);
Is this the intended usage of the InMemoryClassesDeployer?
Yes, the IMCD's
intent is to create a new temp classpath root.
VirtualFile wsdlFile = VFS.getChild(inMemRootDir.getPathName() + "/" +
serviceInfo.getWSDLFileName());
--> VirtualFile wsdlFile = inMemoryRootDir.getChild(serviceInfo.getWSDLFileName());
For "unit::appendMetaDataLocation", you should append file's owner
directory, not the file itself.
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.
Yes.
--------------------------------------------------------------
Reply to this message by going to Community
[
http://community.jboss.org/message/552818#552818]
Start a new discussion in JBoss Microcontainer at Community
[
http://community.jboss.org/choose-container!input.jspa?contentType=1&...]