sexta-feira, 24 de junho de 2011

JBoss - WAR com diretório compartilhado

Estes dias me deparei com a seguinte situação, uma aplicação WAR que necessitava de um diretório compartilhado para armazenar arquivos. Um JBoss em cluster, então nada de diretório local, deste modo tinha duas soluções: NFS, GFS ou OCF2.

Bom, NFS não me pareceu uma boa solução, pois teria um ponto único de falha, no caso o servidor NFS. Restava então a solução GFS ou OCF2, GFS não era possível por causa do cluster estar em um Xen Server da Citrix que não suporta fencing device, logo estava eliminado, me restou o OCFS.

Só que como o cluster do JBoss tinha duas instâncias por VM, ou seja, 101 e 102 e 201 e 202, não era possível criar um ponto de montagem OCFS2 para ambas as instâncias sem reescrever a aplicação.

O ponto de montagem deveria ser por exemplo: /opt/jboss-eap-5.1/jboss-as/server/101/deploy/my.war/userfiles

Então teria que ter dois pontos de montagem:

/opt/jboss-eap-5.1/jboss-as/server/101/deploy/my.war/userfiles
/opt/jboss-eap-5.1/jboss-as/server/102/deploy/my.war/userfiles

E atualmente o ponto de montagem configurado era /dados e os arquivos necessários estavam em /dados/usersfiles

Tentei um link simbólico: ln -s /dados /opt/jboss-eap-5.1/jboss-as/server/101/deploy/my.war/userfiles

Não funcionou.

Solução: Movi a pasta deploy para /dados(OCF2) e o userfiles para /dados/deploy/my.war, ficando /dados/deploy/my.war/userfiles

Após criei os seguintes links simbólicos:

ln -s /dados/deploy /opt/jboss-eap-5.1/jboss-as/server/101/deploy
ln -s /dados/deploy /opt/jboss-eap-5.1/jboss-as/server/102/deploy

O JVMRoute deixei no arquivo de inicialização das instâncias, exemplo /etc/init.d/jboss-init-101

Pronto, o JBoss entendeu o link da pasta deploy e 100% funcionando.

É uma dificuldade peculiar, mas de peculiaridades é feita a vida.

quarta-feira, 1 de junho de 2011

Oracle - Arrumando o erro do EM Exceeded Max allowed Upload data no Oracle 11g

Erro:


2011-05-26 22:10:38 Thread-3161134928 WARN  http: snmehl_connect: connect failed to (myserver.com.br:1158): Conexão recusada (error = 111)
2011-04-05 23:02:09 Thread-1095002432 <Upload Manager> Exceeded Max allowed Upload data - No of files: 1588, Size of upload data: 50,048591MB, Pct(%) of Disk used: 45,54%, Disabling collections (00852)
2011-04-05 23:02:09 Thread-1095002432 Disable collector (00406)



Sintoma: Ao executar o 'emctl start dbconsole' é retornado 'failed', mas o emagent é iniciado(ps -ef | grep emagent) entretanto a interface web não inicia. 


Seguem procedimentos que realizei para corrigir o erro:

1-> Ajuste dos seguintes parâmetros no 'emd.properties':

# Comente a opção 'UploadFileSize'
#UploadFileSize=2048


2-> Remover XMLs da pasta 'sysman/upload'

3-> Adicionar na variável LD_LIBRARY_PATH o caminho para os jars do OC4J, evitando o erro:

OC4J startup failed
org.xml.sax.SAXException: META-INF/boot.xml in /oracle/product/11.1.0/db_1/oc4j/j2ee/home/oc4j.jar, line 206: Shared loader 'oc4j.internal' cannot be found.
        at oracle.classloader.util.XMLConfiguration.fail(XMLConfiguration.java:1215)
        at oracle.classloader.util.XMLConfiguration.addImport(XMLConfiguration.java:1189)
        at oracle.classloader.util.XMLConfiguration.startElement(XMLConfiguration.java:594)
        at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.startElement(AbstractSAXParser.java:533)
        at com.sun.org.apache.xerces.internal.parsers.AbstractXMLDocumentParser.emptyElement(AbstractXMLDocumentParser.java:220)
        at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanStartElement(XMLDocumentFragmentScannerImpl.java:872)
        at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl$FragmentContentDispatcher.dispatch(XMLDocumentFragmentScannerImpl.java:1693)
        at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(XMLDocumentFragmentScannerImpl.java:368)
        at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:834)
        at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:764)
        at com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(XMLParser.java:148)
        at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(AbstractSAXParser.java:1242)
        at oracle.classloader.util.XMLConfiguration.configureLoaders(XMLConfiguration.java:271)
        at oracle.classloader.util.InitialLoadersFactory.populateLoaders(InitialLoadersFactory.java:365)
        at oracle.classloader.util.InitialLoadersFactory.initLoaders(InitialLoadersFactory.java:231)
        at oracle.classloader.util.InitialLoadersFactory.create(InitialLoadersFactory.java:168)
        at oracle.oc4j.loader.boot.BootStrap.main(BootStrap.java:26)