Deploying Alfresco on JBoss

Document created by resplin Employee on Jun 6, 2015
Version 1Show Document
  • View in full screen mode

Obsolete Pages{{Obsolete}}

The official documentation is at: http://docs.alfresco.com



InstallationJBoss
This guide assumes you are knowledgeable enough with JBoss and MySQL to install them both and create a empty database schema.


jboss


  • Download JBoss 4.2.2.GA or 4.2.3.GA or JBoss 5.1.GA
    • Note: Compatibility with JBoss 5.0.1.GA is currently experimental and only available in the v3.2 Community Release.
    • Note: Compatibility with JBoss 5.1.GA started in Enterprise 3.2
    • Note: If JDK 6 + JBoss 4.2.2.GA problems with endorsed directory appears. With JDK 5 this problem is solved.
  • Download the Alfresco Community or Enterprise war bundle
  • create a directory to install Jboss, e.g:
 mkdir -p /opt/alfrescoJb310My

  • Extract your JBoss ZIP package to that folder, e.g:
unzip -d /opt/alfrescoJb310My /home/madon/alfresco_soft/jboss-4.2.3.GA.zip

  • Create a temporary directory and uncompress the alfresco package
mkdir -p /opt/alfrescoJb310My/tmpalfresco
tar -C /opt/alfrescoJb310My/tmpalfresco -xzvf /home/madon/alfresco_soft/alfresco-enterprise-war-3.1.tar.gz

  • Create a conf directory for alfresco and move the distribution extension folder
mkdir /opt/alfrescoJb310My/jboss-4.2.3.GA/server/default/conf/alfresco
mv /opt/alfrescoJb310My/tmpalfresco/extensions/extension /opt/alfrescoJb310My/jboss-4.2.3.GA/server/default/conf/alfresco

  • On alfresco 3.2 and above, you also need to copy from the tmpalfresco folder the 'alfresco-global.properties' file to the '/server/default/conf/' directory.
  • Copy or move the alfresco war files (alfresco and share) to \jboss\server\default\deploy
mv /opt/alfrescoJb310My/tmpalfresco/alfresco.war /opt/alfrescoJb310My/jboss-4.2.3.GA/server/default/deploy 
mv /opt/alfrescoJb310My/tmpalfresco/share.war /opt/alfrescoJb310My/jboss-4.2.3.GA/server/default/deploy

For more information about the alfresco configuration files location, you can look at Location of Extension Configuration Files


Database


This assumes you use a mysql database. Similar steps for other databases.




  • Create a new empty database schema instance called 'alfresco' in MySQL - use the example files in the Alfresco bundle in /extra/databases/mysql to perform this with the correct user permissions.
  • Download the MySQL JDBC driver file from MySQL
  • Extract the MySQL JDBC driver .jar file and copy to \jboss\server\default\lib
  • [Alfresco v3.2 / Nightly builds only] Create a datasource that defines the connection details for your MySQL database by copying \jboss\docs\examples\jca\mysql-ds.xml to \jboss\server\default\deploy and editing with the parameters appropriate for your database. The jndi-name must be changed to alfresco-datasource to match up with alfresco.war. For example:
 <local-tx-datasource>
   <jndi-name>alfresco-datasource</jndi-name>
   <connection-url>jdbc:mysql://localhost:3306/alfresco</connection-url>
   <driver-class>org.gjt.mm.mysql.Driver</driver-class>
   <user-name>alfresco</user-name>
   <password>alfresco</password>
   <exception-sorter-class-name>org.jboss.resource.adapter.jdbc.vendor.MySQLExceptionSorter</exception-sorter-class-name>
   <metadata>
      <type-mapping>mySQL</type-mapping>
   </metadata>
</local-tx-datasource>

UTF8 support


  • Edit \jboss>\server\default\deploy\jboss-web.deployer\server.xml and \jboss\server\all\deploy\jboss-web.deployer\server.xml and add URIEncoding='UTF-8' to the section:
   <root>
     <priority value='INFO' />
     <appender-ref ref='CONSOLE'/>
     <appender-ref ref='FILE'/>
  </root>

  • Note that if you are using Alfresco 2.1 the above step is required if you want to start the server on a X11 console without a graphical display (otherwise the Swing JavaScript debugger window will attempt to open on the server machine which will cause an error)
  • [Optional] - Even with the above configuration there will still be a lot of output sent to the console, if you wish you can reduce it further by adding the following to \jboss\server\default\conf\jboss-log4j.xml:
  <category name='org.jboss.logging.Log4jService$URLWatchTimerTask'>
     <priority value='INFO'/>
  </category>
  <category name='org.jboss.system.server.Server'>
     <priority value='INFO'/>
  </category>
  <category name='org.jboss'>
     <priority value='WARN'/>
  </category>
  <category name='net'>
     <priority value='WARN'/>
  </category>
  <category name='org.alfresco'>
     <priority value='WARN'/>
  </category>
  <category name='org.alfresco.repo.policy'>
     <priority value='WARN'/>
  </category>
  <category name='org.springframework'>
     <priority value='WARN'/>
  </category>
  <category name='org.hibernate'>
     <priority value='WARN'/>
  </category>
  <category name='org.hibernate.cache.ReadWriteCache'>
     <priority value='ERROR'/>
  </category>
  <category name='org.hibernate.cache.EhCacheProvider'>
     <priority value='ERROR'/>
  </category>
  <category name='org.hibernate.engine.StatefulPersistenceContext.ProxyWarnLog'>
     <priority value='ERROR'/>
  </category>
  <category name='org.apache.myfaces'>
     <priority value='ERROR'/>
  </category>
  <category name='org.jbpm.jpdl.xml.JpdlXmlReader'>
     <priority value='ERROR'/>
  </category> 

Hibernate


  • Edit \jboss\server\default\deploy\ejb3.deployer\META-INF\persistence.properties

and change the line:

hibernate.bytecode.provider=javassist

to:

hibernate.bytecode.provider=cglib

Note that on JBoss5 and above, the value can be found in \jboss\server\default\deployers\ejb3.deployer\META-INF\jpa-deployers-jboss-beans.xml

<entry>
  <key>hibernate.bytecode.provider</key>
  <value>cglib</value>
</entry>

JVM options


  • Ensure that \jboss\bin\run.sh[.bat] specifies appropriate JVM memory settings in JAVA_OPTS. For example, the following are minimums
-Xms128m -Xmx512m -XX:MaxPermSize=128m

  • To enable JMX monitoring and automatic discovery of Alfresco by the Hyperic plugin, ensure JAVA_OPTS contains the following arguments:
-Dcom.sun.management.jmxremote -Dalfresco.home=.

-Djavax.xml.soap.MessageFactory=com.sun.xml.messaging.saaj.soap.ver1_1.SOAPMessageFactory1_1Impl 

  • In JBoss 5.0.1 and above, edit the filteredPackages property of the WarClassLoaderDeployer bean in \jboss\server\default\deployers\jbossweb.deployer\META-INF\war-deployers-jboss-beans.xml as follows, to avoid collisions between JVM bootstrap classes and those embedded in the war
  <bean name='WarClassLoaderDeployer' class='org.jboss.web.tomcat.service.deployers.WarClassLoaderDeployer'>
     <property name='relativeOrder'>-1</property>
     <property name='filteredPackages'>javax.activation,javax.servlet,javax.servlet.jsp,javax.servlet.jsp.jstl,javax.servlet.jsp.jstl.core,javax.servlet.jsp.jstl.fmt,javax.servlet.jsp.jstl.sql,javax.servlet.jsp.jstl.tlv,javax.xml,javax.xml.bind,javax.xml.bind.annotation,javax.xml.bind.annotation.adapters,javax.xml.bind.attachment,javax.xml.bind.helpers,javax.xml.bind.util,javax.xml.crypto,javax.xml.crypto.dom,javax.xml.crypto.dsig,javax.xml.crypto.dsig.dom,javax.xml.crypto.dsig.keyinfo,javax.xml.crypto.dsig.spec,javax.xml.datatype,javax.xml.messaging,javax.xml.namespace,javax.xml.parsers,javax.xml.rpc,javax.xml.rpc.encoding,javax.xml.rpc.handler,javax.xml.rpc.handler.soap,javax.xml.rpc.holders,javax.xml.rpc.server,javax.xml.rpc.soap,javax.xml.soap,javax.xml.stream,javax.xml.stream.events,javax.xml.stream.util,javax.xml.transform,javax.xml.transform.dom,javax.xml.transform.sax,javax.xml.transform.stream,javax.xml.validation,javax.xml.ws,javax.xml.ws.handler,javax.xml.ws.handler.soap,javax.xml.ws.http,javax.xml.ws.soap,javax.xml.ws.spi,javax.xml.ws.wsaddressing,javax.xml.xpath,org.apache.commons.logging,org.apache.commons.logging.impl,org.apache.xerces,org.apache.xerces.dom,org.apache.xerces.dom.events,org.apache.xerces.dom3,org.apache.xerces.dom3.as,org.apache.xerces.impl,org.apache.xerces.impl.dtd,org.apache.xerces.impl.dtd.models,org.apache.xerces.impl.dv,org.apache.xerces.impl.dv.dtd,org.apache.xerces.impl.dv.util,org.apache.xerces.impl.dv.xs,org.apache.xerces.impl.io,org.apache.xerces.impl.msg,org.apache.xerces.impl.validation,org.apache.xerces.impl.xpath,org.apache.xerces.impl.xpath.regex,org.apache.xerces.impl.xs,org.apache.xerces.impl.xs.identity,org.apache.xerces.impl.xs.models,org.apache.xerces.impl.xs.opti,org.apache.xerces.impl.xs.traversers,org.apache.xerces.impl.xs.util,org.apache.xerces.jaxp,org.apache.xerces.jaxp.datatype,org.apache.xerces.jaxp.validation,org.apache.xerces.parsers,org.apache.xerces.util,org.apache.xerces.xinclude,org.apache.xerces.xni,org.apache.xerces.xni.grammars,org.apache.xerces.xni.parser,org.apache.xerces.xpointer,org.apache.xerces.xs,org.apache.xerces.xs.datatypes,org.apache.xml,org.apache.xml.resolver,org.apache.xml.resolver.apps,org.apache.xml.resolver.etc,org.apache.xml.resolver.etc.catalog.dtd,org.apache.xml.resolver.etc.catalog.rng,org.apache.xml.resolver.etc.catalog.xsd,org.apache.xml.resolver.etc.xcatalog.dtd,org.apache.xml.resolver.helpers,org.apache.xml.resolver.readers,org.apache.xml.resolver.tools,org.apache.xml.security,org.apache.xml.security.algorithms,org.apache.xml.security.algorithms.implementations,org.apache.xml.security.c14n,org.apache.xml.security.c14n.helper,org.apache.xml.security.c14n.implementations,org.apache.xml.security.encryption,org.apache.xml.security.exceptions,org.apache.xml.security.keys,org.apache.xml.security.keys.content,org.apache.xml.security.keys.content.keyvalues,org.apache.xml.security.keys.content.x509,org.apache.xml.security.keys.keyresolver,org.apache.xml.security.keys.keyresolver.implementations,org.apache.xml.security.keys.storage,org.apache.xml.security.keys.storage.implementations,org.apache.xml.security.resource,org.apache.xml.security.resource.schema,org.apache.xml.security.signature,org.apache.xml.security.transforms,org.apache.xml.security.transforms.implementations,org.apache.xml.security.transforms.params,org.apache.xml.security.utils,org.apache.xml.security.utils.resolver,org.apache.xml.security.utils.resolver.implementations,org.apache.xml.serialize,org.apache.xmlcommons,org.xml,org.xml.sax,org.xml.sax.ext,org.xml.sax.helpers,org.w3c.css,org.w3c.css.sac,org.w3c.css.sac.helpers,org.w3c.dom,org.w3c.dom.bootstrap,org.w3c.dom.css,org.w3c.dom.events,org.w3c.dom.html,org.w3c.dom.ls,org.w3c.dom.ranges,org.w3c.dom.smil,org.w3c.dom.stylesheets,org.w3c.dom.svg,org.w3c.dom.traversal,org.w3c.dom.views,org.w3c.dom.xpath</property>     
  </bean>

Starting


  • Execute \jboss\bin\run.sh[.bat]. Note that by default Jboss 4.2 and above will only listen on the localhost network adapter, rather than the adapter with a real IP address connected to the outside world. To override this, start Jboss with the -b addr option, specifying the IP address of the network adapter you want to listen on or 0.0.0.0 to listen on all adapters. E.g.
run.sh -b 0.0.0.0

  • Note that the following warning message will appear in the log but can be ignored, since Alfresco disables the faces RI with a special parameter in web.xml:
[STDOUT] 16:59:43,814 ERROR [shared_impl.config.MyfacesConfig] Both MyFaces and the RI are on your classpath. Please make sure to use only one of the two JSF-implementations.



Back to Server Installation

Attachments

    Outcomes