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