Hola… este es mi regalo de año viejo… Despues de varios dias y horas y horas de buscar información de errores, leer acerca de jboss 7, por fin he logrado desplegar alfresco community 4.2.c en jboss 7. Espero que esta guía le sirva a alguien…PlataformaSistema Operativo: Debian Squeeze 6.0.6 de 64bitsBase de Datos: MySQL 5Java: JDK 1.7 update 09Jboss: 7.1.1 FinalAlfresco Community: 4.2.c (Archivo WAR)PrerrequisitosInstalar y configurar JDK (El sistema viene con openjdk por defecto por lo que debemos cambiarlo)Instalar y configurar la base de datos MySQLJboss 7.1.1Alfresco Community 4.2.c (Archivo WAR)MySQL Connector JConsideracionesDicen que la suposición es la madre de todas las desgracias por lo que para evitar esto:Se asume que el usuario de esta guía tiene conocimientos básicos del manejo de la consola de Linux y comandos básicos.Se asume que el usuario de esta guía tiene conocimientos básicos de como desplegar aplicaciones en Jboss 7.Se asume que el usuario de esta guía tiene creada una base de datos de alfresco en mysql.Se asume que el usuario de esta guía cumple con los prerrequisitos de software ya que esta guía fue creada en este ambiente y no se asegura que pueda funcionar en configuraciones de ambiente distintos.InstalaciónCrear un directorio “alfresco42c” dentro de /optDescomprimir jboss-as-7.1.1.Final.zip dentro de la carpeta /opt/alfresco42cCrear un directorio tmpalfresco dentro de /opt/alfresco42c/Descomprimir alfresco-community-4.2.c.zip dentro de /opt/alfresco42c/ tmpalfrescoConfiguración del datasource para conexiones a base de datos mysqlCrear un directorio “mysql” en /opt/alfresco42c/jboss-as-7.1.1.Final/modules/com/Crear un directorio “driver” en /opt/alfresco42c/jboss-as-7.1.1.Final/modules/com/mysql/Crear un directorio “main” en /opt/alfresco42c/jboss-as-7.1.1.Final/modules/com/mysql/driver/Descargar el archivo .jar controlador de base de datos y colocarlo en la carpeta “/opt/alfresco42c/jboss-as-7.1.1.Final/modules/com/mysql/driver/main”. Descargue el controlador MySQL Connector/J desde http://dev.mysql.com/downloads/connector/j/ y coloque el archivo .jar en la carpeta “/opt/alfresco42c/jboss-as-7.1.1.Final/modules/com/mysql/driver/main”.Crear el archivo module.xml en la carpeta:“/opt/alfresco42c/jboss-as-7.1.1.Final/modules/com/mysql/driver/main/”e inserte el siguiente contenido:<?xml version="1.0"?>
<module xmlns="urn:jboss:module:1.0" name="com.mysql.driver">
<resources>
<resource-root path="mysql-connector-java-5.1.22-bin.jar" />
</resources>
<dependencies>
<module name="javax.api" />
<module name="javax.mail.api" />
<module name="javax.servlet.api" />
<module name="javax.servlet.jsp.api" />
<module name="javax.transaction.api" />
</dependencies>
</module>
Modifique el archivo standalone.xml ubicado en la carpeta “/opt/alfresco42c/jboss-as-7.1.1.Final/standalone/configuration/”, añadiendo el datasource y el driver dentro del elemento <datasources>.1.- Primero agregue el datasource dentro del elemento <datasources><datasource jndi-name="java:jboss/datasources/AlfrescoDS" pool-name="AlfrescoDS" enabled="true" jta="true" use-java-context="true" use-ccm="true">
<connection-url>jdbc:mysql://localhost/alfresco</connection-url>
<driver>mysql</driver>
<security>
<user-name>root</user-name>
<password>root</password>
</security>
</datasource>
2.- Agregue <driver name="mysql" module="com.mysql.driver"/> dentro del elemento <drivers> que esta dentro de <datasources>Antes del siguiente paso vaya a "Desplegar Alfresco"Editar el archivo jboss-web.xml ubicado en “/opt/alfresco42c/jboss-as-7.1.1.Final/standalone/deployments/alfresco.war/WEB-INF/” y eliminar o comentar:<!– <jboss-web>
<resource-ref>
<res-ref-name>jdbc/dataSource</res-ref-name>
<jndi-name>java:alfresco-datasource</jndi-name>
</resource-ref>
</jboss-web>
–>
y añadir
<jboss-web>
<resource-ref>
<res-ref-name>jdbc/dataSource</res-ref-name>
<jndi-name>java:jboss/datasources/AlfrescoDS</jndi-name>
</resource-ref>
</jboss-web>
Editar el archivo web.xml ubicado en “/opt/alfresco42c/jboss-as-7.1.1.Final/standalone/deployments/alfresco.war/WEB-INF/” y eliminar o comentar:<!– <resource-ref>
<description>The Alfresco database connection</description>
<res-ref-name>jdbc/dataSource</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
<res-sharing-scope>Unshareable</res-sharing-scope>
</resource-ref>
–>
y añadir
<resource-ref>
<description>The Alfresco database connection</description>
<res-ref-name>java:jboss/datasources/AlfrescoDS</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
<res-sharing-scope>Unshareable</res-sharing-scope>
</resource-ref>
Crear el archivo persistence.xml en la carpeta “/opt/alfresco42c/jboss-as-7.1.1.Final/standalone/deployments/alfresco.war/META-INF” y agregar el siguiente contenido:<?xml version="1.0" encoding="UTF-8"?>
<persistence
xmlns="http://java.sun.com/xml/ns/persistence"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd"
version="2.0">
<!– MySQL –>
<persistence-unit name="tiny" transaction-type="JTA">
<provider>org.hibernate.ejb.HibernatePersistence</provider>
<jta-data-source>java:jboss/datasources/AlfrescoDS</jta-data-source>
<properties>
<property name="hibernate.dialect" value="org.hibernate.dialect.MySQLInnoDBDialect" />
<property name="hibernate.hbm2ddl.auto" value="update" />
<property name="hibernate.show_sql" value="true" />
<property name="hibernate.format_sql" value="true" />
</properties>
</persistence-unit>
</persistence>
Configurar las dependencias de alfrescoCrear el archivo jboss-deployment-structure.xml dentro de la carpeta “/opt/alfresco4jb7/jboss-as-7.1.1.Final/standalone/deployments/alfresco.war/WEB-INF/” y añadir el siguiente contenido:<?xml version="1.0"?>
<jboss-deployment-structure xmlns="urn:jboss:deployment-structure:1.0">
<deployment>
<exclusions>
<module name="org.apache.log4j" />
<module name="org.hibernate" />
</exclusions>
<dependencies>
<module name="com.mysql.driver" />
<module name="javax.mail.api" />
<module name="org.apache.xerces" />
<module name="org.jboss.modules" />
</dependencies>
</deployment>
</jboss-deployment-structure>
Configuración de memoria de la JVMRealizar las siguientes modificaciones en el archivo standalone.conf ubicado en “/opt/alfresco42c/jboss-as-7.1.1.Final/bin”JAVA_OPTS="$JAVA_OPTS -Dfile.encoding=UTF-8 -Djava.net.preferIPv4Stack=true -Duser.timezone=GMT -Xmx1024m -XX:MaxPermSize=256m”Desplegar AlfrescoCrear un directorio alfresco.war dentro del directorio /opt/alfresco42c/jboss-as-7.1.1.Final/standalone/deployments/Descomprimir el contenido del archivo /opt/alfresco42c/tmpalfresco/web-server/webapps/alfresco.war en el directorio /opt/alfresco42c/jboss-as-7.1.1.Final/standalone/deployments/alfresco.war Crear el archivo alfresco.war.dodeploy en el directorio /opt/alfresco42c/jboss-as-7.1.1.Final/standalone/deployments/Iniciar JbossEjecute /opt/alfresco42c/jboss-as-7.1.1.Final/bin/./standalone.shProbar la aplicaciónUna vez que el servidor ha iniciado, abra su navegador y coloque la url: http://localhost:8080/alfrescoTareas AdicionalesAun quedan detalles por afinar como son configurar jboss para reducir la salida en el log del servidor.Hacer que alfresco lea el archivo de configuración alfresco-global.properties y las extensiones, para lo cual encontré el siguiente enlace https://community.jboss.org/wiki/HowToPutAnExternalFileInTheClasspathya que por ejemplo alfresco lee el archivo repository.properties ubicado en /opt/alfresco42c/jboss-as-7.1.1.Final/standalone/deployments/alfresco.war/WEB-INF/classes/alfresco/en lugar del archivo alfresco-global.propertiesAfinar y manejo de módulos y dependencias.Verificar los nombres de los datasources específicamente los valores:<res-ref-name>jdbc/dataSource</res-ref-name>y<jndi-name>java:jboss/datasources/AlfrescoDS</jndi-name>ya que muy probablemente se pueden dejar los nombres que alfresco trae configurados por defecto.Y muy probablemente algunos detalles que he dejado pasar, conforme lo vaya afinando lo compartiré.Probar en otros ambientes con distribuciones Linux diferentes y versiones de java y conector de mysql.Bueno… esta es mi experiencia hasta el momento con el despliegue de Alfresco Community 4.2.c en Jboss 7.1.1 hasta el momento, espero sus comentarios buenos o malos y desde luego sus aportaciones.Errores comunes con los que me encontré:ERROR [org.jboss.msc.service.fail] (MSC service thread 1-6) MSC00001: Failed to start service jboss.deployment.unit."alfresco.war".PARSE: org.jboss.msc.service.StartException in service jboss.deployment.unit."alfresco.war".PARSE: Failed to process phase PARSE of deployment "alfresco.war" at org.jboss.as.server.deployment.DeploymentUnitPhaseService.start(DeploymentUnitPhaseService.java:119) [jboss-as-server-7.1.1.Final.jar:7.1.1.Final] at org.jboss.msc.service.ServiceControllerImpl$StartTask.startService(ServiceControllerImpl.java:1811) [jboss-msc-1.0.2.GA.jar:1.0.2.GA] at org.jboss.msc.service.ServiceControllerImpl$StartTask.run(ServiceControllerImpl.java:1746) [jboss-msc-1.0.2.GA.jar:1.0.2.GA] at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110) [rt.jar:1.7.0_09] at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603) [rt.jar:1.7.0_09] at java.lang.Thread.run(Thread.java:722) [rt.jar:1.7.0_09]Caused by: java.lang.IllegalArgumentException: JBAS015533: Web Service endpoint org.apache.chemistry.opencmis.server.impl.webservices.RelationshipService with URL pattern /RelationshipService is already registered. Web service endpoint org.alfresco.repo.cmis.ws.DMRelationshipServicePort is requesting the same URL pattern. at org.jboss.as.webservices.metadata.model.AbstractDeployment.addEndpoint(AbstractDeployment.java:60) at org.jboss.as.webservices.metadata.model.JAXWSDeployment.addEndpoint(JAXWSDeployment.java:27) at org.jboss.as.webservices.deployers.WSIntegrationProcessorJAXWS_POJO.processAnnotation(WSIntegrationProcessorJAXWS_POJO.java:94) at org.jboss.as.webservices.deployers.AbstractIntegrationProcessorJAXWS.deploy(AbstractIntegrationProcessorJAXWS.java:87) at org.jboss.as.server.deployment.DeploymentUnitPhaseService.start(DeploymentUnitPhaseService.java:113) [jboss-as-server-7.1.1.Final.jar:7.1.1.Final] … 5 moreSolucion: https://community.jboss.org/message/728811 gracias NiranjanEsto sucede porque JBoss 7.1 ya inicia un servicio web service. Abra el archivo “/opt/alfresco42c/jboss-as-7.1.1.Final/standalone/configuration/standalone.xml” buscar webservices y comentar:<!– <extension module="org.jboss.as.webservices"/> –><!– <subsystem xmlns="urn:jboss:domain:webservices:1.1"> <modify-wsdl-address>true</modify-wsdl-address> <wsdl-host>${jboss.bind.address:127.0.0.1}</wsdl-host> <endpoint-config name="Standard-Endpoint-Config"/> <endpoint-config name="Recording-Endpoint-Config"> <pre-handler-chain name="recording-handlers" protocol-bindings="##SOAP11_HTTP ##SOAP11_HTTP_MTOM ##SOAP12_HTTP ##SOAP12_HTTP_MTOM"> <handler name="RecordingHandler" class="org.jboss.ws.common.invocation.RecordingServerHandler"/> </pre-handler-chain> </endpoint-config> </subsystem>–>