geronimo-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Steve Higham <>
Subject Re: Geronimo:wait-for-server is not waiting
Date Fri, 03 Jan 2014 22:49:58 GMT
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.



Steve Higham <> 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?
>Steve Higham <> 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.
View raw message