Posts etiquetados ‘Weblogic’

Los cambios introducidos en la arquitectura de IDM11g nos llevan a atacar de otra forma los diferentes problemas que se pueden tener. De igual forma, el corto tiempo que lleva la versión en el mercado y su dependencia con otras herramientas, hacen difícil para quienes van empezando, que puedan detectar por donde atacar los problemas. Es por ello que en esta entrada, analizaremos diferentes errores en el arranque de nuestro dominio de IDM, las causas y su solución.

  1. Error en la inicialización de MDS
    Mensaje de Error:
    oracle.mds.config.MDSConfigurationException: MDS-01330: no se ha podido cargar el documento de configuración de MDS
    MDS-01329: no se ha podido cargar el elemento "persistence-config"
    MDS-01370: Configuración de almacén de datos para metadata-store-usage "ApmRoot" no válida.
    ORA-06550: línea 1, columna 12:
    PLS-00201: identifier 'MDS_INTERNAL_SHREDDED.GETREPOSITORYVERSION' must be declared
    ORA-06550: línea 1, columna 7:

    Causa: Posible mala configuración en el datasource que conecta a la base de datos, en específico del username.
    Solucion: Modificar el archivo $IDM_DOMAIN/config/jdbc/apm-server-mds-jdbc.xml, en específico la propiedad “user”, de forma que quede algo como:
    <property>
    <name>user</name>
    <value>DEV_MDS</value>
    </property>
  2. Error en la inicialización del clúster coherence
    Mensaje de Error:
    ####<20/04/2011 12:24:32 AM CDT> <Error> <Coherence> <alien-natas> <AdminServer> <Logger@251282735 3.5.3/465p2> <<anonymous>> <> <> <1303277072116> <BEA-000000> <2011-04-20 00:24:32.116/300.434 Oracle Coherence GE 3.5.3/465p2 <Error> (thread=Cluster, member=n/a): Node /192.168.58.1:9095 is not allowed to create a new cluster; WKA list: [alien-natas.nekasys.com/127.0.0.1:9095]>
    ####<20/04/2011 12:24:32 AM CDT> <Error> <Coherence> <alien-natas> <AdminServer> <Logger@251282735 3.5.3/465p2> <<anonymous>> <> <> <1303277072156> <BEA-000000> <2011-04-20 00:24:32.155/300.473 Oracle Coherence GE 3.5.3/465p2 <Error> (thread=[ACTIVE] ExecuteThread: '0' for queue: 'weblogic.kernel.Default (self-tuning)', member=n/a): Error while starting cluster: java.lang.RuntimeException: Failed to start Service "Cluster" (ServiceState=SERVICE_STOPPED, STATE_ANNOUNCE)

    Causa: OAM 11g utiliza Coherence para mantener las sesiones. Coherence a su vez utiliza dos métodos para inicializar el clúster cache: Multicast Unicast. La libreria de coherence sobre OAM11g usa unicast para establecer el clúster, y únicamente permite a la propia maquina iniciarlo (hostname y localhost). Este problema se puede por tanto presentar en dos casos:

    1. OAM en H-A
    2. Maquina con múltiples direcciones IP

    Solucion: Editar la lista de WKA para OAM, por ello es necesario:

    1. Copiar a alguna ruta temporal la libreria de coherence para OAM, $IDM_DOMAIN/config/fmwconfig/mbeans/oam/coherence.jar
    2. Descomprimir el jar que copiamos: jar xf coherence.jar, una vez descomprimido eliminarlo
    3. Abrir el archivo tangosol-coherence.xml
    4. Editar el archivo donde esta la configuración de la WKA, acorde al número de nodos, interfaces o direcciones IPs que queramos permitir, el siguiente es un ejemplo:
      <well-known-addresses>
      <socket-address id="1">
      <address system-property="tangosol.coherence.wka"></address>
      <port system-property="tangosol.coherence.wka.port">9095</port>
      </socket-address>
      <socket-address id="2">
      <address system-property="tangosol.coherence.wka2"></address>
      <port system-property="tangosol.coherence.wka2.port">9095</port>
      </socket-address>
      <socket-address id="3">
      <address system-property="tangosol.coherence.wka3"></address>
      <port system-property="tangosol.coherence.wka3.port">9095</port>
      </socket-address>
      <socket-address id="4">
      <address system-property="tangosol.coherence.wka4"></address>
      <port system-property="tangosol.coherence.wka4.port">9095</port>
      </socket-address>
      <socket-address id="5">
      <address system-property="tangosol.coherence.wka5"></address>
      <port system-property="tangosol.coherence.wka5.port">9095</port>
      </socket-address>
      </well-known-addresses>
    5. Generar el jar, con el archivo ya modificado.
    6. Copiar y sobreescribir el jar en las siguientes rutas:
      $IDM_DOMAIN/config/fmwconfig/mbeans/oam/
      $IDM_DOMAIN/servers/AdminServer/tmp/_WL_user/oam_admin_11.1.1.3.0/g5iha/APP-INF/lib (Aqui el nombre depende de la aleatoriedad asi que deben validarlo en su instalacion).
    7. Por último debemos agregar las siguientes opciones a la variable EXTRA_JAVA_PROPERTIES en el archivo $IDM_DOMAIN/bin/setDomainEnv.sh (como sugerencia, que este en la misma línea donde el instalador hizo las modificaciones para agregar la configuración de coherence):
      -Dtangosol.coherence.wka=home.nekasys.com -Dtangosol.coherence.wka2=clon.nekasys.com -Dtangosol.coherence.wka3=vmnet1.nekasys.com -Dtangosol.coherence.wka4=vmnet8.nekasys.com -Dtangosol.coherence.wka5=ipad.nekasys.com -Dtangosol.coherence.wka.port=9095 -Dtangosol.coherence.wka2.port=9095 -Dtangosol.coherence.wka3.port=9095 -Dtangosol.coherence.wka4.port=9095 -Dtangosol.coherence.wka5.port=9095

      En el ejemplo previo se puede notar que se agregaron seis interfaces, la configuración variara según el numero de interfaces de la máquina o nodos que se agreguen en el clúster. A modo de ejemplo, la variable quedaría definida como:
      EXTRA_JAVA_PROPERTIES="${EXTRA_JAVA_PROPERTIES} -Dsoa.archives.dir=${SOA_ORACLE_HOME}/soa -Dsoa.oracle.home=${SOA_ORACLE_HOME} -Dsoa.instance.home=${DOMAIN_HOME} -Dtangosol.coherence.clusteraddress=227.7.7.9 -Dtangosol.coherence.clusterport=9778 -Dtangosol.coherence.log=jdk -Dtangosol.coherence.wka=home.nekasys.com -Dtangosol.coherence.wka2=clon.nekasys.com -Dtangosol.coherence.wka3=vmnet1.nekasys.com -Dtangosol.coherence.wka4=vmnet8.nekasys.com -Dtangosol.coherence.wka5=ipad.nekasys.com -Dtangosol.coherence.wka.port=9095 -Dtangosol.coherence.wka2.port=9095 -Dtangosol.coherence.wka3.port=9095 -Dtangosol.coherence.wka4.port=9095 -Dtangosol.coherence.wka5.port=9095 -Djavax.xml.soap.MessageFactory=oracle.j2ee.ws.saaj.soap.MessageFactoryImpl -Djava.protocol.handler.pkgs=${PROTOCOL_HANDLERS} -Dweblogic.transaction.blocking.commit=true -Dweblogic.transaction.blocking.rollback=true -Djavax.net.ssl.trustStore=${WL_HOME}/server/lib/Nekasys.jks"
    8. Listo, pueden iniciar normalmente su dominio sin excepciones de coherence ni en el OAM
  3. Error en el refresh de sockets al iniciar Coherence
    Mensaje de Error:
    ####<21/04/2011 09:18:23 PM CDT> <Error> <Coherence> <alien-natas> <AdminServer> <Logger@9267279 3.5.3/465p2> <<anonymous>> <> <> <1303438703399> <BEA-000000> <2011-04-21 21:18:23.398/274.616 Oracle Coherence GE 3.5.3/465p2 <Error> (thread=PacketSpeaker, member=1): Stopping cluster due to unhandled exception: com.tangosol.net.messaging.ConnectionException: Unable to refresh sockets: [UnicastUdpSocket{State=STATE_OPEN, address:port=192.168.2.251:9095}, TcpSocketAccepter{State=STATE_OPEN, ServerSocket=192.168.2.251:9095}]; last failed socket: UnicastUdpSocket{State=STATE_OPEN, address:port=192.168.2.251:9095}

    Causa: Una de las interfaces de red del equipo esta activa, sin embargo no tiene asociada una dirección IP.
    Solucion: Asignar una dirección IP a la interfaz, o desactivar la misma.

Esos fueron algunos de los issues con los que nos hemos topado, y las soluciones a los mismos.
De igual forma si tienen alguna duda y/o comentario no duden en escribirnos.

Happy Hacking!

—–
Entrada generada por:
NataS::: The Lord of Chaos
Marcos Ricardo Schejtman Rubio <mschejtman@nekasys.com>

Anuncios

Las aplicaciones montadas con ADF proporcionan todo lo ideal para un desarrollador y las empresas en general. Son bonitas, muy interactivas, sencillas de desarrollar, altamente configurables y extremadamente poderosas. De igual forma, Weblogic proporciona la capa del servidor de aplicaciones para poder interactuar con cualquier recurso, dando la libertad de configurar cada uno de los elementos que tengamos.

Oracle Access Manager proporciona integración ante las aplicaciones desplegadas en este poderoso servidor, y además ofrece integración casi nativa con ADF security, y con las aplicaciones desarrolladas en weblogic. A pesar de que existen herramientas para automatizar ciertos procesos, cierto es que, lo mejor es aprender a realizar las cosas de forma manual.

Este post ofrece los pasos necesarios para hacer dichas integraciones. Antes que nada es preciso comentar que la integración entre las aplicaciones de Weblogic y Oracle Access Manager, se usa utilizando tanto un reverse proxy web (en el cual se monta el WebGate), como haciendo uso de un provider. Esto es para poder gestionar las peticiones y manejar de forma interna las sesiones. Ahora si, para poder autenticar aplicaciones usando Oracle Access Manager, debemos realizar lo siguiente:

  1. Antes que nada se debe crear la entrada del Access Gate que manejará las peticiones mediante el webProxy y el provider que se instala en WebLogic.
  2. Generar las políticas que se requieran, y mediante las mismas configurar los recursos y el método de autenticado que utilizarán
  3. Agregar y configurar el provider de Weblogic de OAM (OAM Identity Asserter), para Weblogic 11g en adelante, este provider ya esta instalado y solo es necesario configurarlo, en Weblogic 10 y previas, se requiere descargar desde la página de Oracle e instalarlo. Durante la configuración debemos asergurarnos de realizar lo siguiente:
    • Marcarlo como REQUIRED
    • Elegir ObSSOCookie como método de gestión de sesión
  4. Dependiendo la configuración de la aplicación, esta puede requerir además de un autenticado LDAP para obtener cierta información del usuario, de ser este el caso, el provider se debe configurar como SUFFICIENTE
  5. Todas las aplicaciones web, que se quieran integrar a Oracle Access Manager, deben modificar su archivo web.xml, para manejar como configuración de login la opción de CLIENT-CERT. El siguiente es un ejemplo de como se debe configurar esa sección:

    <login-config>
    <auth-method>CLIENT-CERT</auth-method>
    </login-config>
  6. Si vamos a integrarnos con ADF, debemos modificar la configuración del dominio de ADF security, la cual radica en el archivo jps-config.xml, es muy importante recalcar que la configuración que se debe modificar es la del dominio, no la que viene con cada una de las aplicaciones.
    Para realizar esta modificación haremos uso de WLST:

    • Ejecutar el archivo $BEA_DOMAIN/bin/setDomainEnv.sh
    • Desplazarnos hacia $WL_SERVER/common/bin y ejecutar el archivo wlst.sh
    • Una vez dentro, nos conectaremos hacia el Admin Node del dominio: connect(‘username’,’password’,’t3://servidor:puerto’);
    • Ya autenticados, agregaremos la configuración de oam, usando la siguiente sintaxis: addOAMSSOProvider(loginuri=”/${app.context}/adfAuthentication”,
      logouturi=”/oamsso/logout.html”);
  7. Debemos hacer que weblogic tome los cambios, para esto reiniciamos las maquinas asociadas al dominio que se configuro, en el caso de un clúster es preciso reiniciar el Admin y los Managed Servers
  8. Finalmente y/o a la par, se debe configurar la capa Web que gestionará las peticiones necesarias. Para ello, montamos un OHS (Oracle HTTP Server) o apache, con el módulo de weblogic (mod_wl_ohs o mod_wl_22) o en su defecto con la configuración del módulo de proxy para reenrutar todas las petciones hacia el servidor de aplicaciones

Con lo anterior, ya tenemos configurado Weblogic y las aplicaciones ADF en nuestro esquema de Oracle Access Manager.

¿Dudas, comentarios, aclaraciones? Estamos para apoyarlos.

Happy Hacking!

—–
Entrada generada por:
NataS::: The Lord of Chaos
Marcos Ricardo Schejtman Rubio <mschejtman@nekasys.com>