Incorporación del servidor Liberty en las aplicaciones

Puede utilizar las interfaces de programación del sistema (SPI) que proporciona Liberty para configurar, controlar y supervisar un servidor de Liberty en las aplicaciones.

Acerca de esta tarea

Liberty proporciona las siguientes SPI para iniciar o detener un servidor de Liberty:
  • com.ibm.wsspi.kernel.embeddable.Server
  • com.ibm.wsspi.kernel.embeddable.ServerBuilder
Utilice un objeto Future para almacenar el resultado de una operación de inicio y detención. Los códigos de retorno que utilizan las operaciones incorporadas son los mismos que los códigos de retorno que utiliza el mandato server. Para obtener más información sobre los códigos de retorno, las opciones de JVM que utiliza el script de servidor y el entorno de proceso que utiliza el script de servidor, consulte Opciones de mandato de servidor.

Adicionalmente, puede recibir notificaciones asíncronas cuando se inicie el servidor, cuando se haya iniciado o cuando se haya detenido creando su propia clase que implemente la inferfaz com.ibm.wsspi.kernel.embeddable.ServerEventListener.

Nota: Para crear una instancia de un servidor incorporado en su aplicación, debe llevar a cabo estos pasos:
  • Incluya el archivo ws-server.jar en la vía de acceso de clases. El archivo ws-server.jar se halla en el directorio ${wlp.install.dir}/bin/tools de la instalación de Liberty.
  • Especifique el nombre del servidor de destino. El servidor de destino debe existir.
  • Opcional: configure el archivo ws-javaagent.jar con la opción de JVM -javaagent. El archivo ws-javaagent.jar se halla en el directorio ${wlp.install.dir}/bin/tools de la instalación de Liberty. Se recomienda configurar el archivo ws-javaagent.jar pero no es obligatorio a menos que utilice prestaciones del servidor que así lo requieran como, por ejemplo, la supervisión o el rastreo. Si se pone en contacto con el personal de soporte de IBM®, puede que deba proporcionar información del rastreo; de ser así, deberá iniciar el servidor con el archivo ws-javaagent.jar, aunque normalmente no lo utilice.
Nota: En un entorno incorporado:
  • No se comprueban las variables de entorno y no se leen los archivos jvm.options y server.env.
  • Se supone que el llamante maneja la gestión de la JVM y del entorno.

Procedimiento

  1. Importe las SPI en la clase de llamante y defina los argumentos necesarios para trabajar con el servidor de Liberty.
    import com.ibm.wsspi.kernel.embeddable.Server;
    import com.ibm.wsspi.kernel.embeddable.ServerBuilder;
    
    public class MyEmbeddedServer {
        String serverName="defaultServer";
        File userDir = new File("usr");
        File outputDir = new File("usr/servers/");
        ...
    }
    Donde
    • Es necesario el valor de serverName y debe coincidir con el nombre de un servidor creado anteriormente.
    • userDir es opcional y se utiliza para establecer la vía de acceso del directorio de usuario. De forma predeterminada, el directorio de usuario es ${wlp.user.dir}.
    • outputDir es opcional y se utiliza para establecer la vía de acceso del directorio de salida. De forma predeterminada, el directorio de salida es ${wlp.user.dir}/servers.
  2. Para inicializar el servidor utilice la clase ServerBuilder.
        ServerBuilder sb = new ServerBuilder();
        Server libertyServer = sb.setName(serverName)
                                 .setUserDir(userDir)
                                 .setOutputDir(outputDir)
                                 .build();
  3. Invoque al método Server.start() para iniciar el servidor. Invoque get() en un futuro para efectuar un bloqueo hasta que finalice la operación de inicio. Utilice una de las opciones siguientes para determinar si el servidor se ha iniciado correctamente:
    • Compruebe el código de resultado devuelto.
    • Utilice el método successful().
    • Si se ha iniciado el servidor, el método server.isRunning() devuelve un valor de true.
        Future<Result> startReturnCode = libertyServer.start();
        Result result = startReturnCode.get(); // bloquear hasta que finalice la operación, si es necesario
        System.out.println("Start returned: success=" + result.successful() + ", rc=" + result.getReturnCode() + ", ex=" + result.getException());
  4. Invoque al método Server.stop() para detener el servidor. Invoque get() en un futuro para efectuar un bloqueo hasta que finalice la operación de detención. Utilice una de las opciones siguientes para determinar si el servidor se ha detenido correctamente:
    • Compruebe el código de resultado devuelto.
    • Utilice el método successful().
    • Si se ha detenido el servidor, el método server.isRunning() devuelve un valor de false.
        Future<Result> stopReturnCode = libertyServer.stop();
        Result result = stopReturnCode.get(); // bloquear hasta que finalice la operación, si es necesario
        System.out.println("Stop returned: success=" + result.successful() + ", rc=" + result.getReturnCode() + ", ex=" + result.getException());
  5. Implemente la interfaz ServerEventListener. Si implementa la interfaz ServerEventListener, puede recibir notificaciones cuando se inicie o se detenga el servidor.
    // actualice la declaración de clase para indicar que se implementa ServerEventListener
    public class MyEmbeddedServer implements ServerEventListener {
        ...
        MyEmbeddedServer() throws ServerException {
            // set the listener via the server builder
            ServerBuilder sb = new ServerBuilder();
            Server libertyServer = sb.setName(serverName)
                                     .setServerEventListener(this)
                                     .build();
        }
    
        ...
        @Override
        public void serverEvent(ServerEvent event) {
            // proporcione una implementación del método serverEvent
            System.out.println("serverEvent: " + event);
        }
    }

Icono que indica el tipo de tema Tema de tarea



Icono de indicación de fecha y hora Última actualización: Tuesday, 6 December 2016
http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-libcore-mp&topic=twlp_extend_embed
Nombre de archivo:twlp_extend_embed.html