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
>>
>>

Reply via email to