1.- Instalar Jboss EAP 6.4 IMPORTANTE: cada ves que se modifique los archivos de configuración del servidor es necesario reiniciar el server. 1.1.- Descargar Jboss – Descargar el archivo jboss-eap-7.2.0.zip 1.2.- Instalar Jboss – Descomprimir archivo jboss-eap-7.2.0.zip y dejarlo en la carpeta linux: /opt/jboss-eap-6.4 windows: C:\opt\jboss-eap-7.2 Desde ahora esta es la carpeta ${JBOSS_HOME} 2.- Administración de Jboss 2.1.- Crear usuario de administración – Ejecutar la shell de creación de usuarios: En Linux: ${JBOSS_HOME}/bin/add-user.sh En Windows: ${JBOSS_HOME}/bin/add-user.cmd – Luego seguir las instrucciones, por ejemplo donde se crea el usuario admin: What type of user do you wish to add? a) Management User (mgmt-users.properties) b) Application User (application-users.properties) (a): a Enter the details of the new user to add. Using realm 'ManagementRealm' as discovered from the existing property files. Username : admin User 'admin' already exits, would you like to update the existing user password and roles Is this correct yes/no? yes Password requirements are listed below. To modify these restrictions edit the add-user.properties configuration file. - The password must not be one of the following restricted values {root, admin, administrator} - The password must contain at least 8 characters, 1 alphabetic character(s), 1 digit(s), 1 non-alphanumeric symbol(s) - The password must be different from the username Password : Re-enter Password : What groups do you want this user to belong to? (Please enter a comma separated list, or leave blank for none)[ ]: Updated user 'admin' to file '${JBOSS_HOME}/standalone/configuration/mgmt-users.properties' Updated user 'admin' to file '${JBOSS_HOME}/domain/configuration/mgmtusers.properties' Updated user 'admin' with groups to file '${JBOSS_HOME}/standalone/configuration/mgmt-groups.properties' Updated user 'admin' with groups to file '${JBOSS_HOME}/domain/configuration/mgmt-groups.properties' Is this new user going to be used for one AS process to connect to another AS process? e.g. for a slave host controller connecting to the master or for a Remoting connection for server to server EJB calls. yes/no? yes To represent the user add the following to the server-identities definition <secret value="YWRtaW4kMTIz" /> 2.2.- Iniciar Server – Para iniciar el server ejecutar: En Windows ${JBOSS_HOME}/bin/standalone.cmd -c standalone-full.xml En Linux ${JBOSS_HOME}/bin/standalone.sh -c standalone-full.xml – Entrar a http://localhost:9990/console para validar el inicio, también revisar el archivo de log: ${JBOSS_HOME}/standalone/log/server.log IMPORTANTE: siempre usaremos el perfil(profile) full 2.3.- Detener Server – Para detener el server se debe ejecutar: En Windows ${JBOSS_HOME}/bin/jboss-cli.cmd --connect command=:shutdown En Linux ${JBOSS_HOME}/bin/jboss-cli.sh --connect command=:shutdown 2.4.- Crear DataSource 2.4.1.- Agregar driver al servidor – Crear la carpeta ${JBOSS_HOME}/modules/com/oracle/weblogic/ojdbc7/main – Descargar el archivo ojdbc7-12.1.3-0-0.jar y dejarlo en la carpeta creada – Crear el archivo module.xml en la carpeta creada: <?xml version="1.0" ?> <module xmlns="urn:jboss:module:1.1" name="com.oracle.weblogic.ojdbc7"> <resources> <resource-root path="ojdbc7-12.1.3-0-0.jar"/> </resources> <dependencies> <module name="javax.api"/> <module name="javax.transaction.api"/> </dependencies> </module> – Modificar el archivo ${JBOSS_HOME}/standalone/configuration/standalone-full.xml y agregar el driver en la sección de drivers <drivers> ...... <driver name="oracle" module="com.oracle.weblogic.ojdbc7"> <driver-class>oracle.jdbc.driver.OracleDriver</driver-class> <xa-datasourceclass>oracle.jdbc.xa.client.OracleXADataSource</xa-datasource-class> </driver> </drivers> 2.4.2.- Crear Datasource – Iniciar el server y entrar a la pestaña Configuration y seleccionar Connector -> Datasources y presionar el botón Add – Ingresar el nombre y JNDI (ver tabla JNDI) pra el Datasource – Seleccionar el driver “oracle” – Ingresar los datos de conexión y luego presionar el botón Done: Connection URL: jdbc:oracle:thin:@HOST:PUERTO:SERVICIO Username: Usuario de base de datos Password: Pasword del usuario – Seleccionar el Nuevo Datasource y presionar el botón Enabled 2.5.- Manejo de Colas y Temas (Queue y Topic) 2.5.1.- Crear Provider – Modificar el archivo ${JBOSS_HOME}/standalone/configuration/standalone-full.xml y agregar el hornetq-server en el subsystem de mensajería: <subsystem xmlns="urn:jboss:domain:messaging:1.4"> ...... <hornetq-server name="MiappProvider"> <backup>true</backup> <allow-failback>true</allow-failback> <shared-store>true</shared-store> <journal-min-files>10</journal-min-files> <connectors> <connector name="netty-connector"> <factoryclass>org.hornetq.core.remoting.impl.netty.NettyConnectorFactory</fact ory-class> <param key="host" value="${jboss.bind.address:localhost}"/> <param key="port" value="${hornetq.remoting.backup.netty.port:5446}"/> </connector> <connector name="in-vm"> <factoryclass>org.hornetq.core.remoting.impl.invm.InVMConnectorFactory</factor y-class> <param key="server-id" value="${hornetq.serverid:0}"/> </connector> </connectors> <acceptors> <acceptor name="netty"> <factoryclass>org.hornetq.core.remoting.impl.netty.NettyAcceptorFactory</facto ry-class> <param key="host" value="${jboss.bind.address:localhost}"/> <param key="port" value="${hornetq.remoting.backup.netty.port:5446}"/> </acceptor> </acceptors> <security-settings> <security-setting match="#"> <permission type="send" roles="guest"/> <permission type="consume" roles="guest"/> <permission type="createNonDurableQueue" roles="guest"/> <permission type="deleteNonDurableQueue" roles="guest"/> </security-setting> </security-settings> <address-settings> <address-setting match="#"> <dead-letter-address>jms.queue.DLQ</dead-letteraddress> <expiry-address>jms.queue.ExpiryQueue</expiry-address> <redelivery-delay>0</redelivery-delay> <max-size-bytes>10485760</max-size-bytes> <page-size-bytes>2097152</page-size-bytes> <address-full-policy>PAGE</address-full-policy> <message-counter-history-day-limit>10</messagecounter-history-day-limit> </address-setting> </address-settings> </hornetq-server> </subsystem> – Luego entrar a la consola de administración para validar la creación 2.5.2.- Crear cola (queue) – Presionar View en nuestro Provider creado – En la pestaña Queues/Topics presionar el botón Add – Ingresar los siguientes valores: Name: <Aplicación><Funcionalidad>Queue JNDI: java:/jms/queue/<Aplicación><Funcionalidad>Queue (ver tabla JNDI) Luego presionar el botón Save 2.5.3.- Crear tema (topic) – Presionar View en nuestro Provider creado – En la pestaña Queues/Topics y luego a la seccion Topics y presionar el botón Add – Ingresar los siguientes valores: Name: <Aplicación><Funcionalidad>Topic JNDI: java:/jms/topic/<Aplicación><Funcionalidad>Topic (ver tabla JNDI) Luego presionar el botón Save 2.5.4.- Crear fabrica de conexiones (Connection Factory) – Presionar View en nuestro Provider creado – En la pestaña Queues/Topics y luego a la sección Topics y presionar el botón Add – Ingresar los siguientes valores: Name: <Aplicación>CF JNDI: java:/jms/cf/<Aplicación>CF (ver tabla JNDI) Luego presionar el botón Save 2.6.- Desplegar aplicación – Entrar a Deployments y presionar el botón Add – Presionar el botón Examinar y seleccionar el componente que se desea desplegar – Seleccionar la opción Enabled y presionar el botón Save – Si el despliegue es correcto aparecerá en la lista 2.7.- Crear grupos y usuarios para las aplicaciones 2.7.1.- Crear usuario y grupos en Jboss – Ejecutar la shell de creación de usuarios: En Linux: ${JBOSS_HOME}/bin/add-user.sh En Windows: ${JBOSS_HOME}/bin/add-user.cmd – Luego seguir las instrucciones, por ejemplo, donde se crea el usuario movistaruser el cual pertenece a los grupos grp_movistaruser,grupo2,grupo3: What type of user do you wish to add? a) Management User (mgmt-users.properties) b) Application User (application-users.properties) (a): b Enter the details of the new user to add. Using realm 'ApplicationRealm' as discovered from the existing property files. Username : movistaruser Password requirements are listed below. To modify these restrictions edit the add-user.properties configuration file. - The password must not be one of the following restricted values {root, admin, administrator} - The password must contain at least 8 characters, 1 alphabetic character(s), 1 digit(s), 1 non-alphanumeric symbol(s) - The password must be different from the username Password : Re-enter Password : What groups do you want this user to belong to? (Please enter a comma separated list, or leave blank for none)[ ]: grp_movistaruser,grupo2,grupo3 About to add user 'movistaruser' for realm 'ApplicationRealm' Is this correct yes/no? yes Added user 'movistaruser' to file '${JBOSS_HOME}/standalone/configuration/application-users.properties' Added user 'movistaruser' to file '${JBOSS_HOME}/domain/configuration/application-users.properties' Added user 'movistaruser' with groups grp_movistaruser,grupo2,grupo3 to file '${JBOSS_HOME}/standalone/configuration/applicationroles.properties' Added user 'movistaruser' with groups grp_movistaruser,grupo2,grupo3 to file '${JBOSS_HOME}/domain/configuration/applicationroles.properties' Is this new user going to be used for one AS process to connect to another AS process? e.g. for a slave host controller connecting to the master or for a Remoting connection for server to server EJB calls. yes/no? yes To represent the user add the following to the server-identities definition <secret value="bW92aXN0YXJ1c2VyMSQ=" /> – Los usuarios y password quedan en el archivo applicationusers.properties y las relaciones entre los usuarios y los grupos a los que pertenece quedan en el archivo application-roles.properties – Se modifica el archivo ${JBOSS_HOME}/standalone/configuration/standalone-full.xml y se crea un nuevo dominio de seguridad que use los archivos para hacer el login de los usuario: <security-domains> ....... <security-domain name="TchileDomain" cache-type="default"> <authentication> <login-module code="RealmUsersRoles" flag="sufficient"> <module-option name="usersProperties" value="file:///${jboss.server.config.dir}/applicationusers.properties"/> <module-option name="rolesProperties" value="file:///${jboss.server.config.dir}/applicationroles.properties"/> <module-option name="defaultUsersProperties" value="file:///${jboss.server.config.dir}/applicationusers.properties"/> <module-option name="defaultRolesProperties" value="file:///${jboss.server.config.dir}/applicationroles.properties"/> <module-option name="realm" value="ApplicationRealm"/> <module-option name="password-stacking" value="useFirstPass"/> </login-module> </authentication> </security-domain> </security-domains> Importante: el name se usará para hacer la relación con la aplicación 2.7.2.- Relación de los grupos en Jboss con la aplicación – Se crea el archivo jboss-web.xml y se deja en la aplicación en src\main\webapp\WEB-INF <?xml version="1.0" encoding="UTF-8"?> <jboss-web> <context-root>miapp</context-root> <session-config> <cookie-config> <!-- Cookie propia del proyecto para almacenar la session-> <name>miapp-jsessionid</name> <!-- La cookie queda asociada al dominio --> <domain>tchile.local</domain> <!-- La cookie queda en la raiz, asociada a todos los recursos de la aplicacion --> <path>/</path> <!-- timeout de la session: 30 minutos = 1800 segundos --> <max-age>1800</max-age> </cookie-config> <!-- Se habilita el uso de cookie para manejar la sesion --> <tracking-mode>COOKIE</tracking-mode> </session-config> <!-- TchileDomain: nombre del dominio de seguridad configurado en Jboss --> <security-domain>java:/jaas/TchileDomain</security-domain> <security-role> <!-- Rol que usa la aplicacion --> <role-name>ejecutivo</role-name> <!-- Nombre usuario o nombre de grupo en Jboss o Ldap configurado --> <principal-name>grp_movistaruser</principal-name> </security-role> </jboss-web> Importante: Es necesario modificar el archivo hosts y agregar 127.0.0.1 miapp.tchile.local Se usará para acceder a la aplicación: http://miapp.tchile.local:8080/miapp 2.7.3.- Usar Ldap Tchile para el manejo de usuarios y grupos – Se modifica el archivo ${JBOSS_HOME}/standalone/configuration/standalone-full.xml y se crea un nuevo dominio de seguridad que use los archivos para hacer el login de los usuario: <security-domains> ....... <security-domain name="TchileDomain" cache-type="default"> <authentication> <login-module code="LdapExtended" flag="sufficient"> <module-option name="java.naming.provider.url" value="ldap://tchile.local:389"/> <module-option name="java.naming.factory.initial" value="com.sun.jndi.ldap.LdapCtxFactory"/> <module-option name="java.naming.security.authentication" value="simple"/> <module-option name="bindDN" value="USUARIO_LDAP"/> <module-option name="bindCredential" value="PASSWORD_USUARIO_LDAP"/> <module-option name="baseCtxDN" value="OU=_Usuarios,DC=tchile,DC=local"/> <module-option name="baseFilter" value="(sAMAccountName={0})"/> <module-option name="rolesCtxDN" value="OU=_Grupos,DC=tchile,DC=local"/> <module-option name="roleFilter" value="(member={1})"/> <module-option name="roleAttributeID" value="sAMAccountName"/> <module-option name="roleAttributeIsDN" value="false"/> <module-option name="searchScope" value="SUBTREE_SCOPE"/> <module-option name="allowEmptyPasswords" value="false"/> <module-option name="throwValidateError" value="true"/> </login-module> </authentication> </security-domain> </security-domains> Importante: el name se usará para hacer la relación con la aplicación 3.- JNDI: nombre de objetos <Aplicación>: corresponde al nombre del componente desplegado (ear, war, jar) en el Jboss Elemento Nombre JNDI Ejemplo JNDI Data Source <Aplicación>DS java:/jdbc/<Aplicación>DS java:/jdbc/perDS JMS Conection Factory <Aplicación>CF java:/jms/cf/<Aplicación>CF java:/jms/cf/perCF JMS Queue <Aplicación><Funcionalidad>QUE java:/jms/queue/<Aplicación><Funcionalidad>QUE java:/jms/queue/perCo JMS Topic <Aplicación><Funcionalidad>TOP java:/jms/topic/<Aplicación><Funcionalidad>TOP java:/jms/topic/perCon Work Manager <Aplicación><Funcionalidad>WM java:/eis/<Aplicación><Funcionalidad>WM java:/eis/WDQSendMa Apoyo extra: ¿Qué deben hacer? Instalar Jboss - http://arquitecturati.tchile.local/arquitectura/jboss/#1 Descargar Instalar Crear Usuario (add-user.cmd) Iniciar server: En la ruta de JBOSS_HOME/bin ejecutar por comando: standalone.bat -c standalone-full.xml Crear DataSource o Agregar el driver: crear el archivo module.xml o Crear DataSource (Personalmente prefiero modificar el archivo standalone-full.xml) Descargar fuentes desde GIT Cargarlas en Eclipse Crear el EAR Desplegar aplicación en Jboss Properties: Deben crear las siguientes carpetas: EAP 7.7\modules\cl\tchile\properties\main Pegar los archivos properties del aplicativo Driver: En base al punto 2.4.1 del manual Jboss 6.4, y la 'name ingresado' Deben crear las siguientes carpetas: EAP 7.2\modules\com\oracle\weblogic\ojdbc7\main Alojar los archivos: -module.xml -ojdbc7-12.1.3.0-0.jar De ser necesario algún archivo de este manual, me lo solicitan.