Una aplicación web es un conjunto de recursos en la parte del servidor que crean una aplicación interactiva. Estos recursos pueden contener todos o algunos de los siguientes componentes: servlets, JavaServer Pages, documentos estáticos (páginas HTML, imágenes, documentos PDF, etc.), clases, applets y beans en la parte del servidor. Una aplicación web se nos puede presentar de dos formas:
Para descargar una aplicación contenida en un fichero war se procede de la siguiente manera. Primero pinchamos en el icono de Web applications. Nos aparecerá una figura como la siguiente en la cual se nos muestra las aplicaciones disponibles y se nos permite configurar nuevas. Vamos a pinchar en Configure a new Web Application.
El primer paso es localizar el fichero que contendrá nuestra aplicación. Hablamos de ficheros .war pero podemos desplegar cualquiera de los tipos mostrados: .jar, .war, .rar y .ear. Pinchamos en el paso 1: upload it through your browser.
Nos aparece la siguiente figura en la que se nos permite buscar el fichero en nuestra máquina local. Seleccionamos el fichero y pinchamos en Upload.
Nos vuelve a aparecer la anterior página, en la cual debemos realizar el paso 2 que consiste en seleccionar la aplicación que queremos desplegar. Pinchamos en la aplicación recién descargada.
Pasamos entonces al paso 3. Se nos advierte qué fichero estamos configurando y nos permite asignar la aplicación a uno o varios servidores o a todo un cluster. Por último le asignamos un nombre a la aplicación. Este nombre tiene un carácter informativo. Una vez introducidos los datos pinchamos en Configure and Deploy para que se realice el despliegue.
Una vez hemos pinchado en Configure and Deploy nos aparecerá una ventana como la siguiente. Se nos muestra información de la actividad de despliegue. Al cabo de un tiempo nos aparecerá el resultado del despliegue. Si hemos conseguido desplegar la aplicación aparecerá true en la columna Deployed del servidor correspondiente. Si ha habido algún problema podemos consultar el log del servidor correspondiente.
En modo desarrollo y cuando estamos implementando una aplicación es normal que tengamos que modificar muy a menudo el código de la aplicación. Por ello es conveniente tener dicha aplicación en un directorio, no en un fichero. La aplicación sin comprimir la podemos dejar en cualquier directorio del sistema, pero es conveniente dejarla en el directorio applications del dominio. Dentro de ese directorio dejaremos uno nuevo que contendrá nuestra aplicación. Para configurar esta aplicación debemos realizar los siguientes pasos. En el paso que realizamos anteriormente cuando desplegábamos una aplicación en un fichero, seleccionamos el paso 2 el directorio applications (que será donde habremos dejado nuestra aplicación) pinchando sobre su nombre.
Nos aparecerá el nombre de nuestra aplicación (faqs) que es un directorio. Ahora pinchamos en select para seleccionar dicho directorio.
Ya podemos seguir los pasos vistos en la sección anterior para configurar la aplicación (selección de targets, nombre de la aplicación, etc.).
Una herramienta bastante útil es el editor del descriptor de la aplicación. Nos permite editar el fichero web.xml y modificar los datos allí contenidos. Para acceder a esta herramienta pinchamos en el nombre de una aplicación y luego pinchamos en el enlace Edit Web Application ... mostrado en la figura.
La siguiente figura muestra un ejemplo en la edición de un descriptor.
En la carpeta Security del applet de la izquierda tenemos todo lo referente a la gestión de seguridad. Tenemos creado un Realm por defecto que es el que se utiliza para guardar los usuarios que vamos creando. Podemos crear nuevos usuarios, grupos y roles. En Weblogic 7.0 la seguridad se maneja mediante políticas de seguridad. Las políticas de seguridad permiten definir quién tiene acceso a un determinado recurso. Adicionalmente podemos definir una restricción de tiempo de acceso a un recurso (de qué hora a qué hora se tiene acceso a un recurso). Por defecto un recurso no tiene protección hasta que el administrador le asigna una determinada política de seguridad. Los recursos a los que se pueden imponer políticas de seguridad son: la consola de administración, recursos de aplicación (web, EJB, ear, jar, etc.), JDBC, JNDI, EIS, JMS.
Un usuario puede ser una persona o una entidad software (cliente java). El usuario es único dentro del sistema y se identifica con su nombre y una contraseña. No existe el usuario invitado (Guest). Puede ser creado pero se recomienda no hacerlo por riesgo en la seguridad del sistema. Para crear un nuevo usuario pinchamos en Users y nos aparecerá una página como la de la siguiente figura. Se nos muestra los usuarios creados y tenemos un enlace para crear un nuevo usuario. También se nos informa de si un usuario está bloqueado y podemos eliminar el usuario.
Al pinchar en Configure a new User nos aparece la siguiente figura. Los datos indicados son el nombre del usuario, una breve descripción y la contraseña. Una vez introducidos estos datos pinchamos en Create.
Una vez creado el usuario podemos asignarlo a un grupo. Un grupo es una agrupación de usuarios con alguna característica en común. Un usuario puede pertenecer a más de un grupo. Si asignamos una determinada política de seguridad a un grupo, dicha política es asignada a todos los usuarios del grupo. Por defecto existen seis grupos:
Al crear un usuario se nos permite asignarlo a un grupo.
También podemos crear y configurar nuevos grupos. Para crear un nuevo grupo pinchamos en el icono Groups y nos aparece la siguiente figura en la que podemos modificar un grupo ya existente o bien crear uno nuevo pinchando en Configure a new Group.
Damos el nombre y una breve descripción al grupo y pinchamos en Apply. En la solapa Membership podemos incorporar otros grupos como miembros de este.
El último apartado de la seguridad son los roles. Un rol es una asociación entre usuarios y recursos que permite establecer qué usuario tiene acceso a qué recurso. Un grupo es una agrupación estática (los usuarios están agrupados siempre de la misma forma). Un rol es dinámico, porque dependiendo de quién esté accediendo a un recurso y dependiendo de a qué recurso quiera acceder, tendrá permiso o no. Se recomienda agrupar usuarios en grupos y crear roles para luego asignar los roles a los grupos. Por defecto existen los siguientes roles:
Cada uno de estos roles está asignado al grupo correspondiente (Admin al de Administrator, Deployer al de Deployers, etc.). Para crear un nuevo rol pinchamos en Configure a new role.
Las políticas de seguridad por defecto asociadas a los recursos de WebLogic se muestran en la siguiente tabla:
Recurso WebLogic | Política de seguridad |
Recursos administrativos | Rol Admin, Deployer, Operator, Monitor |
EIS, EJB, JMS, JDBC, JNDI, MBean | Grupo Everyone |
Recursos servidor | Rol Admin, Operator |
Recursos servicios web | Grupo Everyone |
WebLogic, en su versión 7.0, sigue manteniendo la asignación de seguridad en los ficheros web.xml y weblogic.xml. La secuencia a seguir para asignar seguridad (restringir el acceso a determinados usuarios) a un recurso es el siguiente:
Un ejemplo de la información que podemos poner en el fichero web.xml (además de la de mapeado utilizada hasta ahora) es la siguiente:
<security-constraint> <web-resource-collection> <web-resource-name>nombre aplicacion</web-resource-name> <url-pattern>url a proteger</url-pattern> </web-resource-collection> <auth-constraint> <role-name>nombre del rol</role-name> </auth-constraint> <user-data-constraint> <description>SSL not required</description> <transport-guarantee>NONE</transport-guarantee> </user-data-constraint> </security-constraint> <security-role> <role-name>nombre del rol</role-name> </security-role> <login-config> <auth-method>BASIC</auth-method> </login-config>
En nombre aplicación debemos poner el nombre de nuestra aplicación que queremos proteger. En url a proteger especificamos la url (directorios, jsp, html, etc.) Por ejemplo, /manager/* protegería todo el directorio manager de nuestra aplicación (cualquier fichero por debajo del directorio). Lo anterior define un recurso web y lo asociamos a un rol. Debemos especificar el nombre del rol y la etiqueta security-role crea el rol. La última etiqueta, login-config, permite especificar el método de autentificación: BASIC pide el nombre de usuario y contraseña mediante una ventana; FORM permite pedir la autentificación mediante un formulario y CLIENT-CERT mediante un certificado.
Por último debemos asociar el rol creado con un grupo o usuario de WebLogic. Para ello disponemos del fichero weblogic.xml.
<weblogic-web-app> <security-role-assignment> <role-name>nombre del rol</role-name> <principal-name>nombre de grupo o usuario</principal-name> </security-role-assignment> </weblogic-web-app>
En nombre del rol pondremos el rol previamente definido en el fichero web.xml. Como nombre de grupo o usuario debemos poner uno válido (definido) dentro de WebLogic.
La administración desde línea de comandos es una herramienta útil para el control del sistema. Nos permite realizar varias tareas de monitorización y comprobación del sistema. También es útil en modo producción, pues normalmente se deshabilita la consola de administración por motivos de seguridad.
El comando a ejecutar es el siguiente:
java -cp $BEA_HOME/weblogic700/server/lib/weblogic.jar weblogic.Admin -url URL -username usuario -password contraseña COMANDO argumentos
El comando no es más que una llamada a la clase weblogic.Admin que se encuentra en el fichero weblogic.jar proporcionado por BEA. El parámetro URL especifica la dirección URL del servidor de administración o bien del servidor contra el que vayamos a realizar el comando. Debemos especificar también el puerto en la dirección. El usuario y su contraseña asociada deben ser válidos para el comando que vamos a ejecutar. Los posibles comandos a utilizar pueden ser algunos de los siguientes:
CONNECT | Realiza el especificado número de conexiones y devuelve el tiempo (en milisegundos) total y medio de conexión. |
ejemplo | java weblogic.Admin -url http://localhost:7001 -username system -password weblogic CONNECT 25 |
FORCESHUTDOWN | Termina de forma inmediata un proceso servidor pasado como argumento. Como URL se suele utilizar la del servidor de administración. |
ejemplo | java weblogic.Admin -url http://localhost:7001 -username system -password weblogic FORCESHUTDOWN Servidor1 |
GETSTATE | Devuelve el estado del servidor pasado como argumento. Como URL se suele utilizar la del servidor de administración. |
ejemplo | java weblogic.Admin -url http://localhost:7001 -username system -password weblogic GETSTATE Servidor1 |
HELP | Muestra ayuda de un comando. |
ejemplo | java weblogic.Admin -url http://localhost:7001 -username system -password weblogic HELP GETSTATE |
LICENSES | Lista las licencias instaladas en la máquina. |
ejemplo | java weblogic.Admin -url http://localhost:7001 -username system -password weblogic LICENSES |
PING | Envía un mensaje para verificar que un servidor está disponible y aceptando peticiones. Opcionalmente podemos pasarle dos argumentos: el número de veces intentos y el tamaño de cada paquete. |
ejemplo | java weblogic.Admin -url http://localhost:7001 -username system -password weblogic PING 10 1000 |
RESUME | Mueve un servidor del estado STANDBY a RUNNING. |
ejemplo | java weblogic.Admin -url http://localhost:7001 -username system -password weblogic RESUME Servidor1 |
SERVERLOG | Muestra el fichero log de un servidor. Se puede especificar un intervalo de tiempo a mostrar. En el ejemplo se muestra desde las 14:00 horas del 24 de diciembre a las 10:00 horas del 31 de diciembre. |
ejemplo | java weblogic.Admin -url http://localhost:7001 -username system -password weblogic SERVERLOG "2002/12/24 14:00" "2002/12/31 10:00" |
SHUTDOWN | Para la ejecución de un servidor. |
ejemplo | java weblogic.Admin -url http://localhost:7001 -username system -password weblogic SHUTDOWN Servidor1 |
START |
Arranca un servidor si tenemos disponible el Node Manager. El comando STARTINSTANDBY lo arranca en modo STANDBY |
ejemplo | java weblogic.Admin -url http://localhost:7001 -username system -password weblogic START Servidor1 |
VERSION | Muestra la versión del software Weblogic. |
ejemplo | java weblogic.Admin -url http://localhost:7001 -username system -password weblogic VERSION |
Existen otros comandos y utilidades adicionales que se detallan a continuación. En todos ellos hace falta incluir el fichero weblogic.jar en el classpath.
dbping | Realiza una conexión a la base de datos especificada utilizando una clase de las proporcionadas por WebLogic. |
java utils.dbping ORACLE_THIN system oracle localhost:1521:j2eebd
**** Success!!! **** You can connect to the database in your app using: java.util.Properties props = new java.util.Properties(); |
|
system | Obtiene información del sistema: la versión y el desarrollador de Java, el classpath, el nombre, arquitectura y versión del sistema operativo |
ejemplo | java utils.system
* * * * * * * java.version * * * * * * * |
myip | Obtiene la dirección IP y el nombre DNS de la máquina |
ejemplo | $ java utils.myip Host rvg7.i3a.ua.es is assigned IP address: 192.168.2.17 |
Deployer | Controla el despliegue de aplicaciones |
ejemplo: desplegar una aplicación |
java weblogic.Deployer -adminurl http://miguel.dccia.ua.es:7001 -source
faqs.war -targets adminServer -user system -activate #TaskID Action Status Target Type Application Source |
ejemplo: eliminar una aplicación | java weblogic.Deployer -adminurl http://miguel.dccia.ua.es:7001
-name faqs -targets adminServer -user system -deactivate Enter a password for the user "system":weblogic Operation started, waiting for notifications... #TaskID Action Status Target Type Application Source |
ejemplo: reactivar una aplicación | java weblogic.Deployer -adminurl http://miguel.dccia.ua.es:7001
-name faqs -targets adminServer -user system -activate Enter a password for the user "system":weblogic Operation started, waiting for notifications... #TaskID Action Status Target Type Application Source |