Hi David, I think I`ve got this working now. I`m generating my list of GBeans as follows:
AbsractNameQuery query = new AbsractNameQuery (PersistentConfigurationList.class.getName ()); Set<AbstractName> result = kernel.listGBeans (query); This generates a list of one GBean. However it has the kernelFullyStarted attribute and the state does seem to be an indicator of whether the server has completed start-up. Should I clean this up and submit as a patch? I`m not really sure what`s going on here but it seems to be working. Cheers, Steve Steve Higham <[email protected]> wrote: >Hi David, > >I've got the code running for a LocalDeploymentManager and I'm querying for >GBeans using kernel.listGBeans (CONFIGURER_QUERY). However only 2 beans are >being returned. One has the attribute kernelFullyStarted. The other doesn't >have this attribute. I was expecting more GBeans. Any idea what I'm doing >wrong? > >Cheers, > >Steve > >Steve Higham <[email protected]> wrote: > >>Hi David, >> >>Thanks for responding - really appreciated :-) >> >>I've downloaded the 3.0.1 source code. I'm building it with "mvn clean >>install". I'm running with the following commands >> >>cd assemblies/geronimo-tomcat7-javaee6-web/target/assembly/bin >>chmod a+x Geronimo >>./Geronimo run >> >>Once started I'm running Geronimo:wait-for-server. When this completes I shut >>down the server and look at the log file. I'm adding additional logging and >>fixing issues in the code as follows: >> >>file framework/modules/geronimo-shell-base/.../WaitForServerCommand.Java >> >>The method of interest is protected Object do execute () >> >>This starts with >> >>if (is embedded ()) { return null; } >> >>The isEmbedded () call is returning true so the method consistently returns >>immediately. I think this code needs deleting. I appreciate that the embedded >>case needs thought but an immediate return is inappropriate. >> >>Further down we see the code >> >>if (server != null) { started = ... } >> >>if (!started) { Throwable error = server.getLastError (); ... } >> >>This clearly fails when server == null. The fix is trivial. >> >>Within the try section (in the !started loop) the problems get more >>interesting. connection.getDeploymentManager () is downcast to >>RemoteDeploymentManager. Unfortunately in my scenario the object returned is >>of type LocalDeploymentManager so this fails. I'm working to fix this with >>minimal code changes. I can clean up later. Therefore I've started with the >>following: >> >>DeploymentManager deploymentMgr = null; >>try { >> connection = connect (); >> deploymentMgr = connection.getDeploymentManager (); >> if (deploymentMgr instanceof RemoteDeploymentManager) { >> ... existing solution ... >> } else if (deploymentMgr instanceof LocalDeploymentManager) { >> started = ((LocalDeploymentManager)deploymentMgr).isFullyStarted (); >> } >> >>This looks OK, but to compile I need to add isFullyStarted () to the class >>LocalDeploymentManager. I've done this based on the same function in the >>ServerProxy class. The private utility methods have been cut and pasted over >>(can refactor later). >> >>File framework/modules/geronimo-deploy-jsr88/.../LocalDeploymentManager.Java >> >>public boolean isFullyStarted () { >> boolean fully started = true; >> // Do I need to mess about with class loaders in the Local case? >> Set<AbstractName> result = kernel.listGBeans (CONFIGURER_QUERY); >> try { >> for (AbstractName name : result) { >> boolean started = getBooleanAttribute (name, "kernelFullyStarted"); >> if (!started) { >> fully started = false; break; >> } >> } >> } >> catch (IOException e) { ... } >> catch (Exception e) { ... } >> ... >>} >> >>This compiles but when I run it I'm getting a NoSuchAttributeException for >>attribute "kernelFullyStarted". I've traced this to a GBeanInstance:invoke >>call but that's as far as I've got. >> >>Any insights very welcome as this is my first forray into the Geronimo code >>base. >> >>Cheers, >> >>Steve >> >>
