Puede crear un paquete de escuchas de escalado
personalizado utilizando WebSphere Application Server Developer Tools for Eclipse. Un
escucha de escalado personalizado recibe notificaciones con respecto a
todas las acciones de escalado pendientes. Después, el escucha
puede permitir o rechazar la acción de escalado. También puede
decidir manejar la acción, lo que proporciona una personalización
completa del comportamiento de escalado.
Acerca de esta tarea
Debe implementar la interfaz de escucha y registrar la
clase de implementación en el registro de servicio. El escucha de
escalado puede permitir o rechazar y manejar acciones de escalado.
La documentación de la API Java para cada SPI de Liberty está
disponible en un archivo comprimido independiente en uno de los
subdirectorios de documentación de API del directorio
${wlp.install.dir}/dev.
Procedimiento
- Pulse
y, a continuación, expanda OSGi.
- Pulse Proyecto de paquete OSGi y pulse
Siguiente. Se abre la ventana Nuevo proyecto de paquete OSGi.
- Especifique ScalingSPISampleBundle como
nombre del proyecto. En la lista de tiempo de ejecución de destino,
seleccione WebSphere Application Server Liberty. Si
no existe ningún tiempo de ejecución, pulse Nuevo tiempo
de ejecución para crear un tiempo de ejecución de WebSphere Application Server Liberty.
- Desmarque el botón de opción Añadir paquete a la
aplicación.
- Pulse Siguiente dos veces y vaya a la página Paquete OSGi.
- En la página Paquete OSGi, seleccione Generar
un activador, una clase Java que controle el ciclo de vida del paquete. Deje
el Nombre de activador
como scalingspisamplebundle.Activator y pulse
Finalizar.
- Pulse
y, a continuación, expanda OSGi.
- Pulse Proyecto de características de Liberty y, a
continuación, pulse Siguiente. Se abre la ventana Proyecto de características de Liberty.
- Especifique ScalingSPISampleFeature como
nombre del proyecto.
- En la lista de tiempo de ejecución de destino, seleccione WebSphere
Application Server Liberty y pulse
Siguiente. Se
abre la página Selección de paquetes OSGi.
- En la página de selección de paquetes OSGi,
seleccione ScalingSPISampleBundle
1.0.0 como Paquetes incluidos y
pulse Finalizar.
- Pulse
y
seleccione
Liberty de WebSphere Application Server con SPI.
- Pulse Aplicar y Aceptar.
- Expanda
y abra el archivo MANIFEST.MF utilizando el
Editor de manifiesto de plug-in.
- Seleccione la pestaña Dependencias y
añada los paquetes
com.ibm.wsspi.scaling.action.consumer y
com.ibm.wsspi.scaling.action.controller al
panel Paquetes importados. Es posible que
tenga que pulsar Ctrl+S para guardar los
cambios.
- En el proyecto ScalingSPISampleBundle, añada una clase de implementación llamada ScalingSPISamplePlugin. Esta
nueva clase implementa la interfaz
com.ibm.wsspi.scaling.action.consumer.ScalingActionPlugin.
package scalingspisamplebundle;
import com.ibm.wsspi.scaling.action.consumer.ScalingActionPlugin;
import com.ibm.wsspi.scaling.action.controller.ScalingActionContext;
import com.ibm.wsspi.scaling.action.controller.ScalingActionContext.ActionType;
import com.ibm.wsspi.scaling.action.controller.ScalingActionContext.ActionDecision;;
/**
* Esto es un ejemplo de plug-in de SPI de escalado de Liberty que actúa como una plantilla para desarrollar un
* plug-in de SPI personalizado. En este plug-in, no se realiza trabajo real y el valor de retorno para el controlador de escalado
* de Liberty es siempre DEFAULT_ACTION.
*
*/
public class ScalingSPISamplePlugin implements ScalingActionPlugin {
/** {@inheritDoc} */
@Override
public ActionDecision actionRequired(ScalingActionContext action) {
ActionDecision returnType = ActionDecision.DEFAULT_ACTION;
if (action.getActionType() == ActionType.START_SERVER) {
returnType = startServer(action);
}
else if (action.getActionType() == ActionType.CREATE_SERVER) {
returnType = createServer(action);
}
else if (action.getActionType() == ActionType.STOP_SERVER) {
returnType = stopServer(action);
}
return returnType;
}
private ActionDecision startServer(ScalingActionContext action) {
// realizar alguna acción para iniciar un servidor
return ActionDecision.DEFAULT_ACTION;
}
private ActionDecision createServer(ScalingActionContext action) {
// realizar alguna acción para crear un servidor
return ActionDecision.DEFAULT_ACTION;
}
private ActionDecision stopServer(ScalingActionContext action) {
// realizar alguna acción para detener un servidor
return ActionDecision.DEFAULT_ACTION;
}
}
- En el proyecto ScalingSPISampleBundle, abra la
clase Activador y edite el método
start(BundleContext) para añadir código que
registre el nuevo servicio de escucha.
public void start(BundleContext context) throws Exception {
final Hashtable<String, Object> properties = new Hashtable<String, Object>();
ScalingSPISamplePlugin scalingSPISamplePlugin = new ScalingSPISamplePlugin();
context.registerService(ScalingActionPlugin.class, scalingSPISamplePlugin, properties);
}
Si se le solicita que importe una correlación hash, seleccione
importar java.util.HashMap.
- Pulse con el botón derecho del ratón el proyecto
ScalingSPISampleFeature y pulse
Instalar característica para instalar la
característica en el tiempo de ejecución de Liberty.
La opción de menú Instalar característica está en la vista
de Explorador de empresa de la perspectiva Java EE.
- Edite el archivo server.xml para
habilitar ScalingSPISampleFeature.
...
<featureManager>
...
<feature>scalingController-1.0</feature>
<feature>usr:ScalingSPISampleFeature</feature>
</featureManager>
...