Need vfs work for the embedded startup
starksm64 Jan 30, 2009 3:04 AMIn looking at extending the JBossEmbeddedAS work Andrew started to allow for better integration with a profile service, the memory usage and speed of trying to use a jbossas structure from within a large monolithic jar is poor. The jboss-embedded-assembly-0.1.0-SNAPSHOT-embedded.jar which combines most of the jbossas dependencies is ~40Mb.
This little test which is the start of identifying the embedded server locations is taking way too much memory and time:
public void testBootstrapLib()
throws Exception
{
long start = System.currentTimeMillis();
URL jarUrl = JBossEmbeddedAS.class.getProtectionDomain().getCodeSource().getLocation();
System.out.println("JBossEmbeddedAS CodeSource: "+jarUrl);
long now = System.currentTimeMillis();
System.out.println("Elapsed to determine CodeSource: "+(now = start));
// Construct VFS representation
VirtualFile jarVirtualFile = VFS.getRoot(jarUrl);
VirtualFile jbossHome = jarVirtualFile.getChild("embedded");
if(jbossHome == null)
throw new IllegalStateException("Failed to locate child 'embedded' in: "+jarUrl);
URL homeURL = jbossHome.toURL();
System.out.println("JBOSS_HOME: "+jbossHome);
now = System.currentTimeMillis();
System.out.println("Elapsed to locate child 'embedded' : "+(now - start));
URL libraryURL = new URL(homeURL, ServerConfig.LIBRARY_URL_SUFFIX);
now = System.currentTimeMillis();
VirtualFile libraryDir = VFS.getRoot(libraryURL);
System.out.println("LIBRARY_URL: "+libraryDir);
List<VirtualFile> jars = libraryDir.getChildren();
if(jars != null)
{
for(VirtualFile jar : jars)
{
URL url = jar.toURL();
System.out.println(jar);
}
}
now = System.currentTimeMillis();
System.out.println("Elapsed to locate/list boot lib: "+(now - start));
}
The output shows its taking 5+ secs just to get to the point of loading listing the contents of the JBOSS_HOME/lib directory, and this also requires increasing the test memory to 128m:
JBossEmbeddedAS CodeSource: file:/Users/svn/repository.jboss.org/maven2/org/jboss/embedded/jboss-embedded-assembly/0.1.0-SNAPSHOT/jboss-embedded-assembly-0.1.0-SNAPSHOT-embedded.jar Elapsed to determine CodeSource: 1 JBOSS_HOME: ZipEntryHandler@12724795[path=embedded context=file:/Users/svn/repository.jboss.org/maven2/org/jboss/embedded/jboss-embedded-assembly/0.1.0-SNAPSHOT/jboss-embedded-assembly-0.1.0-SNAPSHOT-embedded.jar real=file:/Users/svn/repository.jboss.org/maven2/org/jboss/embedded/jboss-embedded-assembly/0.1.0-SNAPSHOT/jboss-embedded-assembly-0.1.0-SNAPSHOT-embedded.jar/embedded] Elapsed to locate child 'embedded' : 759 LIBRARY_URL: ZipEntryHandler@14031599[path= context=vfszip:/Users/svn/repository.jboss.org/maven2/org/jboss/embedded/jboss-embedded-assembly/0.1.0-SNAPSHOT/jboss-embedded-assembly-0.1.0-SNAPSHOT-embedded.jar/embedded/lib/ real=vfszip:/Users/svn/repository.jboss.org/maven2/org/jboss/embedded/jboss-embedded-assembly/0.1.0-SNAPSHOT/jboss-embedded-assembly-0.1.0-SNAPSHOT-embedded.jar/embedded/lib/] ZipEntryHandler@3232789[path=empty context=vfszip:/Users/svn/repository.jboss.org/maven2/org/jboss/embedded/jboss-embedded-assembly/0.1.0-SNAPSHOT/jboss-embedded-assembly-0.1.0-SNAPSHOT-embedded.jar/embedded/lib/ real=vfszip:/Users/svn/repository.jboss.org/maven2/org/jboss/embedded/jboss-embedded-assembly/0.1.0-SNAPSHOT/jboss-embedded-assembly-0.1.0-SNAPSHOT-embedded.jar/embedded/lib/empty] Elapsed to locate/list boot lib: 5675
We need to be under a sec and 64Mb to fully boot the embedded server. I'm looking at what is happening. It looks like vfs 2.0.0.CR5 is being pulled in by the current snapshot dependencies.