At JavaOne 2012 on Monday, Oracle’s Engineer Chris Kasso, and Technology Evangelist Arun Gupta, presented a head-spinning session (CON4701) in which they offered 50 tips for GlassFish fans. Kasso and Gupta alternated back and forth with each presenting 10 tips at a time. An audience of about (appropriately) 50 attentive and appreciative developers was on hand in what has to be one of
the most information-packed sessions ever at JavaOne!Aside: I experienced one of
the quiet joys of JavaOne when, just before
the session began, I spotted Java Champion and JavaOne Rock Star
Adam Bien sitting nearby –
Adam is someone I have been fortunate to know for many years.GlassFish is a freely available, commercially supported Java EE reference implementation.
The session prioritized quantity of tips over depth of information and offered tips that are intended for both seasoned and new users, that are meant to increase
the range of functional options available to GlassFish users.
The focus was on lesser-known dimensions of GlassFish. Attendees were encouraged to pursue tips that contained new information for them. All 50 tips can be accessed here.Below are several examples of more elaborate tips and a final practical tip on how to get in touch with these folks.
Tip #1: Using
the login Command
* To execute a remote command with asadmin you must provide
the admin's user name and password.*
The login command allows you to store
the login credentials to be reused in subsequent commands.* Can be logged into multiple servers (distinguish by host and port).
Example: % asadmin --host ouch login Enter admin user name [default: admin]> Enter admin password> Login information relevant to admin user name [admin] for host [ouch] and admin port [4848] stored at [/Users/ckasso/.asadminpass] successfully. Make sure that this file remains protected. Information stored in this file will be used by asadmin commands to manage
the associated domain. Command login executed successfully. % asadmin --host ouch list-clusters c1 not running Command list-clusters executed successfully.Tip #4: Using
the AS_DEBUG Env Variable* Environment variable to control client side debug output* Exposes:
command processing info
URL used to access
the command: http://localhost:4848/__asadmin/uptime
Raw response from
the server
Example: % export AS_DEBUG=true % asadmin uptime CLASSPATH= ./../glassfish/modules/admin-cli.jar Commands: [uptime] asadmin extension directory: /work/gf-3.1.2/glassfish3/glassfish/lib/asadm ------- RAW RESPONSE --------- Signature-Version: 1.0 message: Up 7 mins 10 secs milliseconds_value: 430194 keys: milliseconds milliseconds_name: milliseconds use-main-children-attribute: false exit-code: SUCCESS ------- RAW RESPONSE ---------Tip #11: Using Password Aliases
* Some resources require a password to access (e.g. DB, JMS, etc.).*
The resource connector is defined in
the domain.xml.Example:Suppose
the DB resource you wish to access requires an entry like this in
the domain.xml: <property name="password" value="secretp@ssword"/>But company policies do not allow you to store
the password in
the clear.* Use password aliases to avoid storing
the password in
the domain.xml* Create a password alias: % asadmin create-password-alias DB_pw_alias Enter
the alias password> Enter
the alias password again> Command create-password-alias executed successfully.*
The password is stored in domain's encrypted keystore.* Now update
the password value in
the domain.xml: <property name="password" value="${ALIAS=DB_pw_alias}"/>Tip #21: How to Start GlassFish as a Service
* Configuring a server to automatically start at boot can be tedious.* Each platform does it differently.*
The create-service command makes this easy.
Windows: creates a Windows service
Linux: /etc/init.d script
Solaris: Service Management Facility (SMF) service
* Must execute create-service with admin privileges.* Can be used for
the DAS or instances* Try it first with
the --dry-run option.* There is a (unsupported) _delete-serverExample: # asadmin create-service domain1
The Service was created successfully. Here are
the details: Name of
the service:application/GlassFish/domain1 Type of
the service:Domain Configuration location of
the service:/work/gf-3.1.2.2/glassfish3/glassfish/domains Manifest file location on
the system:/var/svc/manifest/application/GlassFish/domain1_work_gf-3.1.2.2_glassfish3_glassfish_domains/Domain-service-smf.xml. You have created
the service but you need to start it yourself.
Here are
the most typical Solaris commands of interest: * /usr/bin/svcs -a | grep domain1 // status * /usr/sbin/svcadm enable domain1 // start * /usr/sbin/svcadm disable domain1 // stop * /usr/sbin/svccfg delete domain1 // uninstallTip #34: Posting a Command via REST* Use wget/curl to execute commands on
the DAS.Example: Deploying an application % curl -s -S \ -H 'Accept: application/json' -X POST \ -H 'X-Requested-By: anyvalue' \ -F id=@/path/to/application.war \ -F force=true http://localhost:4848/management/domain/applications/application* Use @ before a file name to tell curl to send
the file's contents.*
The force option tells GlassFish to force
the deployment in case
the application is already deployed.* Use wget/curl to execute commands on
the DAS.Example: Deploying an application % curl -s -S \ -H 'Accept: application/json' -X POST \ -H 'X-Requested-By: anyvalue' \ -F id=@/path/to/application.war \ -F force=true http://localhost:4848/management/domain/applications/application* Use @ before a file name to tell curl to send
the file's contents.*
The force option tells GlassFish to force
the deployment in case
the application is already deployed.Tip #46: Upgrading to a Newer Version
* Upgrade applications and configuration from an earlier version* Upgrade Tool: Side-by-side upgrade– GUI: asupgrade– CLI: asupgrade --c– What happens ?* Copies older source domain -> target domain directory* asadmin start-domain --upgrade* Update Tool and pkg: In-place upgrade– GUI: updatetool, install all Available Updates– CLI: pkg image-update– Upgrade
the domain* asadmin start-domain --upgradeTip #50: How to reach us?* GlassFish Forum: http://www.java.net/forums/glassfish/glassfish*
[email protected]* @glassfish* facebook.com/glassfish* youtube.com/GlassFishVideos* blogs.oracle.com/theaquariumArun Gupta acknowledged that their method of presentation was experimental and actively solicited feedback about
the session.
The best way to reach them is on
the GlassFish user forum.In addition, check out Gupta’s new book Java EE 6 Pocket Guide.