On Oct 19, 2005, at 10:17 AM, Davanum Srinivas wrote:
Hi Team,
I'd like to programatically instantiate a kernel and deploy a plan
having a simple gbean (say the example1/MyGBean in the example on the
wiki)
- What's the absolute minimum set of jars needed? (Geronimo
jars+dependency jars)
- Where's the template for a simple, minimal plan?
(spring-assembly\target\geronimo\doc\plan\system-plan.xml)?
Anyone done this before? (FYI, dblevins already pointed me to several
resources ([1] [2] [3]) that will help come up with a stripped down
geronimo with Axis stuff. Thanks, David.)
thanks,
dims
[1] -
http://svn.apache.org/viewcvs.cgi/geronimo/trunk/modules/jetty/src/
test/org/apache/geronimo/jetty/ContainerTest.java?
rev=234156&view=markup
[2] -
http://svn.apache.org/viewcvs.cgi/geronimo/trunk/modules/axis/src/
test/org/apache/geronimo/axis/AxisWebServiceContainerTest.java?
rev=164051&view=markup
[3] -
http://cvs.openejb.org/viewrep/openejb/openejb/modules/core/src/test/
org/openejb/server/axis/WSContainerTest.java?r=1.10
PS: Anyone seen the movie "A Simple Plan"? :)
I'm still a little confused about your goal here. Are you trying to
run a unit test or come up with a minimal stand-alone server?
If you are trying to run a unit test, it is much easier to directly
install the gbeans in the kernel in code than to set up the builders
etc needed to process a plan.
If you are trying to set up a minimal server, things are not ideal
right now but I'm working on improving them. For now I'd recommend:
1. create a maven project to set up and run your minimal geronimo
instance. Copy the maven.xml from openejb itests as an example: you
will remove most of the contents, but it shows how to unpack the
server. You need this part anyway:
<deploy:unpackServer geronimoVersion="${geronimo_version}"/>
2. Copy the var/config/config.xml into src of your project. Apparently
you won't need any of our standard configurations running, so remove
the xml contents, just leaving the top level element. Add a
<configuration name="yourConfigID"/> element to start your
configuration.
3. Add something like this to maven.xml to deploy your plan using the
offline deployer:
<ant:java fork="true"
jar="${maven.build.dir}/geronimo-${geronimo_version}/bin/deployer.jar"
failonerror="true">
<ant:jvmarg value="-ea"/>
<ant:arg value="distribute"/>
<ant:arg value="target/plan/naming-server-plan.xml"/>
</ant:java>
4. You should now be able to start your server including your
configuration you just deployed with a goal like this:
<deploy:startRemoteServer
geronimoTarget="${maven.build.dir}/geronimo-${geronimo_version}"
vmArgs="-Xdebug -Xnoagent -Djava.compiler=NONE
-Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=5005 -Xmx512m
-XX:MaxPermSize=128m"
/>
The stuff in the server has no way to communicate with the outside
world, and this goal returns immediately, so it will be difficult to
determine programatically when the server has started. Since there is
no communication, you will have to stop the server through killing its
process via the operating system. I think if you include rmi-naming
and j2ee-security configurations you can stop it using maven.
You can also start the server like this:
java -jar target/geronimo-1.0-SNAPSHOT/bin/server.jar
In a few days I'm hoping to make it easy to assemble a minimal server
from parts rather than taking a giant server and ignoring most of it.
thanks
david jencks