Introdução
Para aproveitar um inspiração que não sei de onde veio, vou tentar fazer um post por semana. Nessa, vou falar sobre a instalação do xWiki, em Jboss AS 5.1 e de quebra mostrar como configuramos a aplicação para utilizar o banco de dados PostgreSQL.
Para esse artigo irei assumir que tudo será feito dentro do diretório /opt . entao para dar início ao nosso procedimento, vamos fazer o download dos itens que vão compor nossa solução, o JbossAS o servidor que irá sustentar nossa aplicação, xWiki.
Obtendo os pacotes
Faça download do pacote war do xwiki em http://download.forge.objectweb.org/xwiki/xwiki-enterprise-web-2.7.1.war
wget -c http://download.forge.objectweb.org/xwiki/xwiki-enterprise-web-2.7.1.war
Faça download do Jboss AS 5.1 em http://downloads.sourceforge.net/project/jboss/JBoss/JBoss-5.1.0.GA/jboss-5.1.0.GA.zip?r=http%3A%2F%2Fsourceforge.net%2Fprojects%2Fjboss%2Ffiles%2FJBoss%2FJBoss-5.1.0.GA%2F&ts=1301058385&use_mirror=ufpr
/
wget -c http://downloads.sourceforge.net/project/jboss/JBoss/JBoss-5.1.0.GA/jboss-5.1.0.GA.zip?r=http%3A%2F%2Fsourceforge.net%2Fprojects%2Fjboss%2Ffiles%2FJBoss%2FJBoss-5.1.0.GA%2F&ts=1301058385&use_mirror=ufpr
Então para seguir para o próximo passo tenha certeza que você têm esses arquivos com você:
ls /opt
jboss-5.1.0.GA.zip
Para qualquer dúvida, a implementação desse documento foi baseada nessa tread da lista do xwiki.org
Com os arquivos salvos, vamos extrair o Jboss AS e instalar o pacote war dentro do diretório de deploy padrão, fazer algumas correções e fazer o deploy em si;
Extraindo o servidor de Aplicação
Lembre-se que estou assumindo que tudo será feito dentro do diretório /opt
unzip jboss-5.1.0.GA.zip
cd jboss-5.1.0.GA
cd bin
chmod +x *.sh
cd /opt
Copiando a aplicação para o diretório de Deploy
Copie o pacote war baixado anteriormente para o diretório server/default/deploy dentro do JbossAS que acabamos de extrair.
cp xwiki-enterprise-web-2.7.1.war jboss-5.1.0.GA/server/default/deploy/
Se tentarmos fazer o deploy da aplixação xwiki sem fazer nenhuma alteração, teremos dois erros ocasionados pelo empacotamento de algumas classes na aplicação que também são empacotadas pelo AS, como elas são de versões diferentes, o deploy não consegue finalizar com exito. Vamos abaixo, apenas deixar as aplicações do Servidor de Aplicações, fazendo com que o conflito acabe, e a aplicação utilize as bibliotecas empacotadas pelo AS.
Editando a aplicação
Abaixo, vamos extrair o conteúdo do pacote war para que possamos edita-lo, fazendo:
cd jboss-5.1.0.GA/server/default/deploy/
mkdir xwiki.war
mv xwiki-enterprise-web-2.7.1.war xwiki.war/
cd xwiki.war
unzip xwiki-enterprise-web-2.7.1.war
rm xwiki-enterprise-web-2.7.1.war
Agora que o pacote já acessivel vamos deixar com que a aplicação utilize algumas bibliotecas diretamente do AS, assim apagando as bibliotecas que vêm empacotadas com a aplicação:
rm WEB-INF/lib/libxercesImpl-2.8.1.jar
rm WEB-INF/lib/xml-apis-1.3.04.jar
rm WEB-INF/lib/xml-apis-ext-1.3.04.jar
rm WEB-INF/lib/xmlParserAPIs-2.0.2.jar
Fazendo o deploy
cd /opt/jboss-5.1.0.GA/bin
./run.h -b 0.0.0.0
Configurando a aplicação para utilizar Postgresql
Para configurar a aplicação para utilizar Postgresql, basta editar as configurações do hibernate, comentando a padrão hsql, e descomentando as linhas de configuração para Postgresql, e colocar o jdbc driver do diretório lib da aplicação.
Baixando o driver jdbc do postgresql
cd /opt/jboss-5.1.0.GA/server/default/lib/
wget -c http://jdbc.postgresql.org/download/postgresql-8.4-702.jdbc3.jar
Reparem que é necessário ver qual é a versão do seu banco, e do seu AS para saber qual é a versão adequada de driver jdbc, verifique isso em:aqui.
Editando o hibernate.cfg.xml
Para configurar a conexão com o banco Postgresql, basta editar o arquivo hibernate.cfg.xml
vim /opt/jboss-5.1.0.GA/server/default/deploy/xwiki.war/WEB-INF/hibernate.cfg.xml
Comente a parte de HSQL:
<!-- Configuration for the default database.
Comment out this section and uncomment other sections below if you want to use another database.
Note that the database tables will be created automatically if they don't already exist.
<property name="connection.url">jdbc:hsqldb:file:database/xwiki_db;shutdown=true</property>
<property name="connection.username">sa</property>
<property name="connection.password"></property>
<property name="connection.driver_class">org.hsqldb.jdbcDriver</property>
<property name="dialect">org.hibernate.dialect.HSQLDialect</property>
<property name="connection.provider_class">com.xpn.xwiki.store.DBCPConnectionProvider</property>
<property name="connection.pool_size">2</property>
<property name="statement_cache.size">2</property>
<mapping resource="xwiki.hbm.xml"/>
<mapping resource="feeds.hbm.xml"/>
<mapping resource="activitystream.hbm.xml"/>-->
Descomente e edite conforme sua necessidade o bloco de configuração do postgresql:
<!-- PostgreSQL configuration.
Uncomment if you want to use PostgreSQL and comment out other database configurations.-->
<property name="connection.url">jdbc:postgresql://<IP/NOME>:<PORTA>/<BANCO></property>
<property name="connection.username">USUARIO</property>
<property name="connection.password">SENHA</property>
<property name="connection.driver_class">org.postgresql.Driver</property>
<property name="dialect">org.hibernate.dialect.PostgreSQLDialect</property>
<property name="connection.provider_class">com.xpn.xwiki.store.DBCPConnectionProvider</property>
<property name="connection.pool_size">2</property>
<property name="statement_cache.size">2</property>
<mapping resource="xwiki.hbm.xml"/>
<mapping resource="feeds.hbm.xml"/>
<mapping resource="activitystream.hbm.xml"/>
Note que você precisa configurar devidamente a url de conexão para seu banco, usuário e senha. Cheque isso de maneira devida, acesse o bando, para ver se a escrita foi efetivada. A escrita acontece no primeiro acesso a página web: SEUIP:8080 .
[]`s