jenblog
Use CommandExecutor to run asadmin commands in Embedded GlassFish
CommandExecutor is a general API to programmatically run asadmin commands in Embedded GlassFish.
See javadocs. I'll show how you can use it.
You will need the glassfish-embedded-all-v3-prelude-*.jar. You can download the latest nightly build and use latest.jar.
Before you use CommandExecutor, you must first start Server:
EmbeddedInfo ei = new EmbeddedInfo();
Server server = new Server(ei);
server.start();
CommandExecutor ce = server.getCommandExecutor();
Look-up a command you want to try from the Administration Commands section of the Sun GlassFish Enterprise Server v3 Prelude Reference Manual
Let's try create-system-properties.
The command name is create-system-properties.
The default operand is one or more name-value pairs.
If you are familiar with asadmin commands, it would like this if you were running from the asadmin command line.
asadmin create-system-properties HTTP_LISTENER_PORT=38080:HTTP_SSL_LISTENER_PORT=38181
Using the CommandExecutor, the above would translate to
Properties options = new Properties();
options.setProperty("DEFAULT", "HTTP_LISTENER_PORT=38080:HTTP_SSL_LISTENER_PORT=38181");
ce.execute("create-system-properties", options);
Always use "DEFAULT" as the property name of the default operand. In addition to the default operand, other commands may have additional required options. For example, create-jdbc-connection-pool has datasourceclassname as a required option and connectionpoolid as the default operand.
asadmin create-jdbc-connection-pool --datasourceclassname myDataSourceClass myConnPool
becomes
options.setProperty("datasourceclassname", "myDataSourceClass");
options.setProperty("DEFAULT", "myConnPool");
ce.execute("create-jdbc-connection-pool", options);
Use options.clear() between different command executions.
You can also deploy a war.
asadmin deploy c:\samples\hello.war
becomes
options.setProperty("DEFAULT", "c:\\samples\\hello.war");
ce.execute("deploy", options);
Run your test class that deploys your war. The default port is 8888.
java -cp latest.jar;TestCommandExecutor.jar testcommandexecutor.Main
Check your web application. http://localhost:8888/hello/
I haven't tested all the commands that are supported in GlassFish v3 Prelude, but most should work. I do know that start-database and stop-database will not work because Embedded GlassFish does not bundle JavaDB.
Posted at 01:33PM Feb 05, 2009 by Jennifer Chou in Glassfish | Comments[3]
Thursday Feb 05, 2009