-
1. Re: [VFS] Better way to scan for modifications
alesj Nov 14, 2008 7:14 AM (in response to dazz_x)Have a look at my demos, its bootstrap to be exact:
- http://anonsvn.jboss.org/repos/jbossas/projects/demos/microcontainer/trunk/
See HDScanner class, its usage of files Map.
A bit more complicated impl is here:
- http://anonsvn.jboss.org/repos/jbossas/trunk/system/src/main/org/jboss/system/server/profile/basic/MetaDataAwareProfile.java
HTH
And for any VFS or Deployers issues you might have,
this is the right forum. ;-) -
2. Re: [VFS] Better way to scan for modifications
dazz_x Nov 24, 2008 6:58 AM (in response to dazz_x)Hi alesj,
Thanks for your response, which was helpul to me.
I finally handled this case in a satisfactory way.
So, when I add/remove/modify a file under my hierarchy, i get a log that says "this file have been added, removed, modified" under the TRACE log level.
A the same time I log, I fire an EngineDeployment event to alert registered listeners that an event has happened.
Unfortunately, that doesn't work... I give you my deployment file :<bean name="ClassLoaderManager" class="com.mycompany.classloaders.MasterClassLoader"> <constructor factoryMethod="getInstance"/> </bean> <bean name="Scanner" class="com.mycompany.deployers.scanner.Scanner"> <install method="addListener"> <parameter> <inject bean="ClassLoaderManager"/> </parameter> </install> <constructor> <parameter>/home/user/test/</parameter> </constructor> </bean>
With this xml portion, I want to add my ClassLoaderManager as a listener (simple addition to a CopyOnWriteArrayList in Scanner)
But it isn't registered... I see an error in the deployment of ClassLoaderManager at startup that is12:52:17,886 ERROR [AbstractKernelController] Error installing to Instantiated: name=ClassLoaderManager state=Described org.jboss.joinpoint.spi.JoinpointException: Constructor not found com.mycompany.classloaders.MasterClassLoader[] in [ReflectConstructorInfoImpl@1b66b06{[ReflectClassInfoImpl@12c9557{name=java.lang.ClassLoader}]}, ReflectConstructorInfoImpl@9f0d{[ReflectClassInfoImpl@12c9557{name=java.lang.ClassLoader}, ReflectClassInfoImpl@ca3783{name=com.mycompany.classloaders.MasterClassLoader$1}]}] at org.jboss.joinpoint.plugins.Config.findConstructorInfo(Config.java:274) at org.jboss.kernel.plugins.config.Configurator.resolveConstructor(Configurator.java:289) at org.jboss.kernel.plugins.config.Configurator.findConstructor(Configurator.java:255) at org.jboss.kernel.plugins.config.Configurator.getConstructorJoinPoint(Configurator.java:198) at org.jboss.kernel.plugins.config.AbstractKernelConfigurator.getConstructorJoinPoint(AbstractKernelConfigurator.java:137) at org.jboss.kernel.plugins.dependency.InstantiateAction.installActionInternal(InstantiateAction.java:61) at org.jboss.kernel.plugins.dependency.InstallsAwareAction.installAction(InstallsAwareAction.java:54) at org.jboss.kernel.plugins.dependency.InstallsAwareAction.installAction(InstallsAwareAction.java:42) at org.jboss.dependency.plugins.action.SimpleControllerContextAction.simpleInstallAction(SimpleControllerContextAction.java:62) at org.jboss.dependency.plugins.action.AccessControllerContextAction.install(AccessControllerContextAction.java:71) at org.jboss.dependency.plugins.AbstractControllerContextActions.install(AbstractControllerContextActions.java:51) at org.jboss.dependency.plugins.AbstractControllerContext.install(AbstractControllerContext.java:348) at org.jboss.dependency.plugins.AbstractController.install(AbstractController.java:1598) at org.jboss.dependency.plugins.AbstractController.incrementState(AbstractController.java:934) at org.jboss.dependency.plugins.AbstractController.resolveContexts(AbstractController.java:1062) at org.jboss.dependency.plugins.AbstractController.resolveContexts(AbstractController.java:984) at org.jboss.dependency.plugins.AbstractController.install(AbstractController.java:774) at org.jboss.dependency.plugins.AbstractController.install(AbstractController.java:540) at org.jboss.kernel.plugins.deployment.AbstractKernelDeployer.deployBean(AbstractKernelDeployer.java:331) at org.jboss.kernel.plugins.deployment.AbstractKernelDeployer.deployBeans(AbstractKernelDeployer.java:309) at org.jboss.kernel.plugins.deployment.AbstractKernelDeployer.deploy(AbstractKernelDeployer.java:130) at org.jboss.kernel.plugins.deployment.BasicKernelDeployer.deploy(BasicKernelDeployer.java:76) at org.jboss.kernel.plugins.deployment.xml.BasicXMLDeployer.deploy(BasicXMLDeployer.java:88) at org.jboss.kernel.plugins.deployment.xml.BasicXMLDeployer.deploy(BasicXMLDeployer.java:158)
Here is the relevant part of the code for my MasterClassLoader class :public class MasterClassLoader extends ClassLoader implements EngineDeploymentListener{ /** * Application Logger */ private static final Logger log = Logger.getLogger(MasterClassLoader.class); private Map<File, EngineClassLoader> engineClassLoaders = new HashMap<File, EngineClassLoader>(); private MasterClassLoader(ClassLoader parent) { super(parent); } @Override public void onDeploymentEvent(EngineDeploymentEvent e) { log.info("[********] Deployment Event : " + e.getType().toString()); } /** * Static initializer to ensure Singleton * @return single instance of MasterClassLoader */ public static MasterClassLoader getInstance() { return MasterClassLoaderHolder.instance; } private static class MasterClassLoaderHolder { public static MasterClassLoader instance = new MasterClassLoader(ClassLoader.getSystemClassLoader()); } }
Why do you think my MasterClassLoader is not deployed ? My static factory method run well in standard call...
Thanks in advance
dazz_x -
3. Re: [VFS] Better way to scan for modifications
dazz_x Nov 24, 2008 8:53 AM (in response to dazz_x)OK, I've been a bit fast to post ....
But it seems a bit weird for me...
So, I add a factoryClass="com.mycompany.classloaders.MasterClassLoader" attribute to the constructor tag...
I don't get this error anymore.
It seems a bit strange that if a factory class is not provided, the system does not use Object class as default factory...
Thanks for having read me... -
4. Re: [VFS] Better way to scan for modifications
alesj Nov 24, 2008 9:02 AM (in response to dazz_x)Yeah, I thought that was the case.
Hmmm, but I remember we already did this.
I guess it got lost with xml + metadata transition to jbossxb.
I'll check. -
5. Re: [VFS] Better way to scan for modifications
alesj Nov 24, 2008 6:45 PM (in response to dazz_x) -
6. Re: [VFS] Better way to scan for modifications
dazz_x Nov 25, 2008 3:47 AM (in response to dazz_x)well done,
that seems logical
thanks