The initial implementation of this functionality (not sure of the release but circa 6.x I believe) required the SU/SD classes to implement proprietary WebLogic Server interfaces:
- weblogic.common.T3StartupDef
- weblogic.common.T3ShutdownDef
It appears that with the introduction of the new application lifecycle listeners feature at the same time, this has resulted in reduced visbility of the new POJO based SU/SD class approach in the documentation.
So here's a brief explanation.
With the deprecation of the earlier SU/SD interfaces, a new and simpler POJO based was introduced for SU/SD classes. This requires only that a SU/SD class only has to have a static main(String args[]) method, which the server will invoke after instantiating the class. No WLS specific interfaces are needed any longer. Any arguments that were configured for the SU/SD class configuration are passed to it via the String[] args parameter.
The POJO based SU/SD class still follows all the same deployment and configuration steps used by the previous model -- the class needs to be made available on the server classpath, the SU/SD class is configured via the console with the requisite parameters and settings, and ultimately stored as an entry in config.xml.
Startup Class:
package sab.demo.utils; public class StartupMain { /** * @param args */ public static void main(String[] args) { log(StartupMain.class.getName() + "::main"); log("Arguments::"); for(int i=0;args!=null && i<args.length;i++) { log(" arg[" + i + "]: " + args[i]); } } private static void log(String msg) { System.out.printf(" --> [SAB]: %s\n", msg); } }
WLS Console:
config.xml:
<startup-class> <name>StartupMain</name> <target>AdminServer</target> <deployment-order>1000</deployment-order> <class-name>sab.demo.utils.StartupMain</class-name> <arguments>arg1 arg2 arg3</arguments> <failure-is-fatal>false</failure-is-fatal> <load-before-app-deployments>false</load-before-app-deployments> <load-before-app-activation>true</load-before-app-activation> </startup-class>
1 comment:
Is an excelent example, I was for the last weekend trying asign with deprecated interfaces, your sample is very util and understable, thank you very much from Mexico
Post a Comment