Bloque de Conocimiento de WLST
Imprimir

Bloque de Conocimiento de WLST

Tabla de contenidos

Introducción

WebLogic Scripting Tool (WLST) es una herramienta de scripting que nos permite configurar y controlar un ambiente WebLogic a través de comandos en una consola o de archivos de scripts siguiendo la sintaxis de python.

WLST nos permite configurar las distintas partes de nuestro ambiente WebLogic, por ejemplo agregar una cola para mensajería JMS, o una fuente de datos JDBC, agregar servers manejados a un dominio o modificar algún parámetro de los servers existentes, entre otras cosas.

También se puede administrar el funcionamiento de un ambiente WebLogic ya existente, levantando y bajando servers o clusters pertenecientes al mismo. En este sentido WLST nos brinda una mejor alternativa que los scripts de consola (por ejemplo startXXX.sh) ya que podemos esperar a que se termine de levantar un server para proceder a levantar el siguiente, y de esta forma evitar problemas de timing.

WLST esta incluído apartir de la versión 9.x de WebLogic. Sin embargo puede utilizarse en la versión 8.1 (a partir de la versión 8.1 SP5 es un add-on soportado oficialmente), para ejecutarlo es necesario bajar los archivos de WLST desde el sitio dev2dev de BEA:

En la versión 8.1 la configuración mediante MBeans es bastante limitada, por eso los scripts en esta pagina son para la version 9 o superior.

Cómo ejecutar WLST

Modo interactivo (consola) - Aplica solo a WL 9.x+

Usando el script wlst.(cmd|sh): Ejecutar: WL_HOME\common\bin\wlst.cmd

A mano:

  • Establecer el CLASSPATH: WL_HOME\server\bin\setWLSEnv.cmd
  • Agregar al PATH: WL_HOME\server\bin
  • Luego ejecutar WLST: java weblogic.WLST

Ejecución de scripts

Simplemente pasar el script como argumento de WLST: java weblogic.WLST myScript.py o bien: wlst.cmd myScript.py

Desde código Java

WLST esta escrito en Jython, esto significa que los scripts tambien pueden ejecutarse desde Java. Teniendo las librerias apropiadas en el CLASSPATH, importar weblogic.management.scripting.utils.WLSTInterpreter, por ejemplo:

package ejemplo;

import weblogic.management.scripting.utils.WLSTInterpreter;

public class EjemploWLST {
        public static void main(String[] args) {
            WLSTInterpreter interpreter = new WLSTInterpreter();

            interpreter.eval("ACA VA EL SCRIPT A EVALUAR"); 
       }
}

Desde Ant

Teniendo las clases de WebLogic en el CLASSPATH:

  • Definir la tarea de ant:

<taskdef name="wlst" classname="weblogic.ant.taskdefs.management.WLSTTask" />

  • Invocarla:

<target name="runwlst">
   <wlst fileName="./myscript.py" executeScriptBeforeFile="true" debug="false" failinhibited_Error="false">
       
       connect('weblogic','weblogic','t3://localhost:7001')
       
   </wlst>
</target>

Algunos conceptos de WLST

Modos de operación

WLST opera en dos modos:

  • Conectado (online): en este caso WLST esta conectado a un servidor de admistración, y permite el acceso a la configuración que es representada mediante un árbol de MBeans.
  • Deconectado (offline): en este caso WLST no esta conectado a ningún servidor de administración. Sin embargo se puede utilizar para crear un domain (como se haría con el Configuration Wizard), o para leer/modificar la configuración leyendola directamente del config.xml.

MBeans

Toda la configuración de WebLogic esta organizada en un árbol de objetos MBean (external link).

WLST tiene objetos y métodos para recorrer este árbol como si fuesen directorios:

  • cmo: (Current Management Object) tiene una referencia al MBean actual (como si fuese el directorio actual en el shell de un SO).
  • cd(path): permite cambiar el MBean actual, recibe como parámetro un path que puede ser relativo, ejemplos: cd('/Servers/AdminServer'), cd('..')
  • ls(opciones): por default lista los atributos y "sub" beans que tiene el MBean actual, ejemplos: ls(), ls('c')
  • prompt(): Sirve para cambiar el prompt de la consola. Es últil al "navegar" por los MBeans ya que el prompt refleja el path actual y puede volverse muy grande (ocupando más de la mitad de la pantalla).
  • pwd(): Al igual que en Unix muestra el "path" actual.

El objeto cmo y los métodos cd y ls solo están disponibles cuando WLST esta conectado a un servidor de administración. En cualquier otro caso cmo es null y los métodos de navegación generan el error: No domain or domain template has been read.

Tips para navegar la configuración

Por default ls() muestra demasiado, cuando uno navega la configuración en la consola muchas veces solo interesa ver que hijos tiene el MBean actual, para eso usar ls('c') (la opción 'c' es por childs).

Otro problema es que a veces uno no sabe que metodos admite el MBean actual, o como usarlo. Para obtener un listado de metodos y atributos del MBean actual usar: ls('o') y ls('a') respectivamente.

Tener los nombres de los métodos y atributos no sirve de nada si uno no sabe que hacen. Por suerte la consola esta hecha en Jython (external link), asi que uno puede usar el API de reflection de Java y hacer un script que muestre la documentación del objeto actual:

Para usar este script en Unix cambiar 'start' por el programa correspodiente (por ej. firefox). Los espacios en blanco fueron dejados intencionalmente para que se puede copiar y pegar el script en la consola.

import os
def showdoc(obj):
	for i in obj.__class__.interfaces:
		if i.package.name.startswith('weblogic'):
			os.system('start http://e-docs.bea.com/wls/docs92/wlsmbeanref/mbeans/' + i.getSimpleName() + '.html')

Una vez definido este método es posible ver la documentación para el objeto actual evaluando: showdoc(cmo)

Comandos útiles para administración de servidores

Nota: Casi todos los comandos de WLST soportan el parametro block. Esto permite que el mismo se ejecute en background (no bloquea la consola). Por ejemplo: start(server, 'Server', block='false')

Control de servidores (start/stop)

Importante
No es lo mismo iniciar un servidor con los scripts de línea de comandos, como startWebLogic o startManagedWebLogic que con la consola de administración. En el primer caso el root CLASSPATH depende de lo que haga el script. En el segundo caso es siempre el NodeManager? el que se encarga de hacer la tarea y el root CLASSPATH depende de los parametros de configuración del servidor (en la consola se configura en Environment > Servers > El Server > Server Start), esto influye a la hora de establecer DataSources? o Start-Up? Classes.

Mediante el servidor de administración

Codigo
# Conectarse al servidor de adminitracion:
# - el parametro con la direccion del servidor es opcional
# - en el ejemplo 7001 es el puerto del servidor de administracion
connect('usuario', 'clave', 't3://localhost:7001')

# Para iniciar un servidor
start(server, 'Server')

# 'Server' es el default, asi que el comando anterior es equivalente a:
start(server)

# start tambien puede utilizarse para iniciar un Cluster, esto inicia
# todos los servidores en el Cluster
start('clusterName', 'Cluster')

# Parar
# force='true' es para que haga el shutdown inmediatamente, usar el default
# si se quiere que el servidor termine lo que esta haciendo antes del shutdown
shutdown(server, 'Server', force='true')

Accediendo directamente al NodeManager:

Si se usa directamente el NodeManager? no es necesario que haya un servidor de administración funcionando (esto es útil para cuando se quiere reiniciar el servidor de administración)

# Conectarse al NodeManager
# address y port (que es un string) son los del Node Manager, por ejemplo: '127.0.0.1', '5556'
nmConnect('nombreDeUsuario', 'clave', 'address', port, domain)

# Iniciar un servidor
nmStart('serverName')

# Bajar un servidor
nmKill('serverName')

Deployment de aplicaciones

Nota: Los comandos de deployment reciben un argumento options. En el manual de WebLogic este argumento esta mal documentado, dice que es una lista separada y da una lista de pares clave/valor. Sin embargo no es asi. Los pares clave valor son los documentados, pero options es un argumento de keywords declarado como **options, ver Keyword arguments (external link) en el tutorial de Python. ¿Como averigue eso? Hay una forma de ver el codigo fuente de los scripts de WLST, evaluar:

from weblogic.management.scripting.utils import WLSTUtil
print WLSTUtil.getWLSTScriptPath()
El path impreso es donde se encuentra un archivo temporal con el código Python de las funciones de WLST (de todas forma la implementación esta hecha en Java, igual sirve para resolver problemas de documentación, como el que ocurrio con la función deploy)

# Deploy
deploy('MyApp', 'c:/mywebapp.war', targets='server1,server2')

# Si se tiene la intencion de modificar la seguridad despues de hecho el deployment
# hay que indicarle a WebLogic que eso se puede hacer, si no hay que hacer un nuevo deployment
# o bien usar redeploy
deploy('MyApp',path,'server',None,None, securityModel='CustomRoles')

# Redeploy
redeploy('MyApp')

# Undeploy
undeploy('MyApp', targets='server1,server2')

Creación de usuarios y grupos

# cmo significa Current Management Object
# en este caso es el domain, que es el default cuando uno se conecta al server
atnr=cmo.getSecurityConfiguration().getDefaultRealm().lookupAuthenticationProvider("DefaultAuthenticator")

# Creacion de un usuario
atnr.createUser('username,'password','description')

# Creacion de un grupo
atnr.createGroup('group-name','description')

# Asociar un usuario a un grupo
atnr.addMemberToGroup('group-name','username')

Creación de servidores

edit()
startEdit()
newServer=cmo.createServer('myserver')
newServer.setListenPort(7005)
newServer.setListenAddress('127.0.0.1')
save()
activate()


Contribuyentes a esta página: diegof , Quirón19322 puntos  y marcosnc .
Page last modified on Miércoles 26 de Marzo, 2008 12:00:02 EDT by diegof.
El contenido de esta página esta licenciado bajo los términos del http://creativecommons.org/licenses/by-sa/2.5/legalcode.

Usuarios en línea

18 usuarios en línea