JNDI Customizado no Weblogic

Diferente de vários outros applications server, o Weblogic não fornece uma forma de criar um JNDI simples com chave e valor. Já abri chamado na oracle, já tentei todas configurações possíveis mas realmente não existe.

Então vamos ao que temos: O Weblogic tem a opção de “Startup and Shutdown Classes”  então resolvi implementar uma classe java para que ele crie na arvore JNDI do server.

Encontrei um projeto free que faz justamente isso de uma forma bem simples, weblogic-jndi-startup  copiei o código e criei um projeto java no eclipse apenas para mudar o empacotamento e gerei um novo jar.

Veja o Código:

Leia mais…

Anúncios
Categorias:Java, weblogic

NodeManager como serviço no Linux

Quando temos domínios com grande números de Machines(Node Manager) é interessante colocar o start do node como serviço do Linux, para que quando reinicie a máquina o node já inicialize no start do Sistema Operacional, eliminando o trabalho de logar na máquina apenas para start o node manager. Vou utilizar como exemplo o Oracle Linux 6, baseado no RedHat 6 ou qualquer outro linux baseados nessa distro.

Para usuário de SO eu utilizo o usuário oracle para o weblogic, mas o script precisa ser criado e alterado como usuário root, veja que no script eu mudo a permissão de execução para usuário oracle, assim garanto que o Node Manager não será iniciado como root.

  1. Crie um script startNodeDaemon no diretório init.d com o seguinte conteúdo:

    vi /etc/init.d/startNodeDaemon

    #!/bin/bash
    # chkconfig: 345 96 4
    su - oracle -c ; cd /var/domains/meuDomain/bin; nohup ./startNodeManager.sh & ;
    
  2. Dê permissão de execução para o Script.

    chmod +x /etc/init.d/startNodeDaemon

  3. Adicione o script ao chkconfig que adiciona ao SO pra ser chamado na sua inicialização.

    chkconfig −−add startNodeDaemon

  4. Habilite o chkconfig para que o script fique “ligado” ON

    chkconfig −−level 345 startNodeDaemon on

    Agora é só fazer um reboot no SO e testar se o Node Manager subiu junto com o Linux.

  5. Caso queira desabilitar o script do chkconfig utilize ‘off’ e não será mais chamado.

    chkconfig −−level 345 startNodeDaemon off

  6. Listar todos chkconfig

    chkconfig −−list

    startNodeDaemon  0:off 1:off 2:off 3:on 4:on 5:on 6:off
    NetworkManager   0:off 1:off 2:on 3:on 4:on 5:on 6:off
    abrt-ccpp             0:off 1:off 2:off 3:on 4:off 5:on 6:off
    abrt-oops             0:off 1:off 2:off 3:on 4:off 5:on 6:off

Categorias:linux, weblogic Tags:,

Encriptar valores para o weblogic

1 – Como encriptar valores utilizando o weblogic 

Quando é preciso colocar o password do weblogic dentro de alguma aplicação ou script que não deve ser mostrado isso para o desenvolvedor/usuário pode encriptar o valor e passar ele já encriptado.
O weblogic tem um uma classe que encripta qualquer palavra, senha, usuário.. etc.
Essa classe é a mesma utilizada para gerar o hash do arquivo boot.properties por exemplo.

  • É necessário que gere no próprio domínio onde vai ser utilizado, pois o weblogic utiliza algumas informações de ambiente para gerar essa chave.

$ java -Dweblogic.RootDirectory=/var/weblogic/domains/meuDominio/ -cp /var/Oracle/weblogic/wlserver/server/lib/weblogic.jar weblogic.security.Encrypt

$ password “digite a chave a ser encryptada”

$ {AES}pS4lHQ2E6WoLmL6w5fETP/V8Nk2QpHTLdZncZZfAAQc=


2 – Adicionar variável de ambiente JAVA no weblogic. 

O weblogic pode inserir qualquer variável no classpath do Servidor o que pode ser facilmente capturado pela aplicação.

 2.1 – No AdminServer – Como o AdminServer é iniciado por script a variável será adicionada no arquivo “setDomainEnv.sh”

$ vi /var/weblogic/domains/meuDominio/bin/setDomainEnv.sh  

USER_MEM_ARGS= -DPASSWD={AES}pS4lHQ2E6WoLmL6w5fETP/V8Nk2QpHTLdZncZZfAAQc=”

export USER_MEM_ARGS

2.2 – No Servidores –  Server-> Server Start-> Arguments

-DPASSWD={AES}pS4lHQ2E6WoLmL6w5fETP/V8Nk2QpHTLdZncZZfAAQc=


3 – Arquivo no Classpath do Servidor.

     Foi criada uma classe baseada na api do webloigic.encrypt para descriptografar a chave criada hashUtilWeblogicBB.jar  Adicione esse arquivo hashUtilWeblogicBB.jar no classpath do domínio ou do Server que irá utilizá-lo.


4 – Como utilizar na aplicação: 

     4.1 – Adicionar a biblioteca hashUtilWeblogicBB.jar ao projeto.
     4.2 – Ler os valores do servidor de aplicação. 

Para  obter esse valores que estão no classpath do java basta utilizar a api do java System.getProperty(“NOME”)  
import br.com.bb.senha.HashHelperWeblogic;

String chave = System.getProperty(“PASSWD”);
System.out.println(chave);


4.3 – Decriptografar a senha.

 A classe hashUtilWeblogicBB.jar tem o método decriptaSenha(String) que faz a decriptografia do hash.
String chave = System.getProperty(“PASSWD”);
String senha = new HashHelperWeblogic().decriptaSenha(chave);
Categorias:weblogic

Alterar memória apenas do AdminServer Weblogic 12c

Por padrão o Weblogic utiliza 512mb de memória para o AdminServer administrar o domínio. Ser for um domínio pequeno essa memória e suficiente.  
Para um domínio maior com mais recursos é recomendado aumentar a quantidade de memória utilizada pela console. Como o AdminServer sobe por script colocar apenas adicionar na aba “Server Start” do AdminServer como é feito nos servidores não funciona, a alteração de memória dever ser definida no script setDomainEnv.sh que determina as variáveis e os valores do domínio.Este script fica localizado no diretório bin do domínio.

Edite o arquivo setDomainEnv.sh e insira o código abaixo para que apenas o AdminServer utilize a quantidade de memória defenida.

# vi /var/weblogic/domains/nomeDoDominio/bin/setDomainEnv.sh

Adicione esse código após os comentários do arquivo.

Por que ? Se não tiver o “IF” para definir a memória apenas para o AdminServer, todos servers do domínio também utilizarão essa quantidade de memória, e mesmo que para o server você adicione no ServerStart os parâmentos de -xms -xmx não sobrescreve o parâmetro MEN_ARGS.

if [ “${SERVER_NAME}” = “AdminServer” ] ; then
MEM_ARGS=”-Xms2048m -Xmx2048m -XX:MaxPermSize=512m”
export MEM_ARGS
fi

* Após a alteração restart o AdminServer e verifique no AdminServer.log se o parâmetro -Xms e -Xmx estão corretos.

Categorias:weblogic Tags:

Debug do JTA no Weblogic

Para habilitar o debug de JTA no weblogic basta setar os seguintes parâmetros na jvm do weblogic. No exemplo vou colocar no setDomainEnv.sh mas pode ser apenas no server-start da instância.

Variáveis utilizadas para debug: 

-Dweblogic.transaction.allowOverrideSetRollbackReason=true
-Dweblogic.debug.DebugJTA2PCStackTrace=true
-Dweblogic.debug.DebugJTA2PC=true
-Dweblogic.debug.DebugJTAXA=true</blockquote>

Colocando no setDomainEnv.sh


# vi /var/Oracle/domains/mydomain/bin/setDomainEnv.sh
JAVA_OPTIONS="-Dweblogic.transaction.allowOverrideSetRollbackReason=true -Dweblogic.debug.DebugJTA2PCStackTrace=true -Dweblogic.debug.DebugJTA2PC=true -Dweblogic.debug.DebugJTAXA=true"

export JAVA_OPTIONS

Agora é só reiniciar o domínio e testar o debug.

Categorias:weblogic Tags:

Patch no Weblogic 12 utilizando OPatch

O Weblogic na versão 12c parou de utilizar o BSU e passou a para o utilitário da Oracle de patch mais conhecido como OPatch. Para aplicar e verificar patch instalado ficou bem mais simples, vejamos:

1 – Baixe o patch no suporte da oracle. 

https://support.oracle.com/

* É necessário ter uma conta do Oracle My Supporte

2 – Descompactar o patch baixado Ex:

# unzip -d /var/Oracle/Middleware/PATCH_TOP p19637454_121300_Generic.zip

3 – Executar o opatch no diretório Oracle_Home
$ cd /var/Oracle/Middleware/Oracle_Home/OPatch
$ ./opatch apply /var/Oracle/PATCH_TOP/19647454
Log:

Patching component oracle.wls.server.shared.with.core.engine, 12.1.3.0.0…

Patching component oracle.wls.libraries, 12.1.3.0.0…
Patching component oracle.wls.core.app.server, 12.1.3.0.0…
Patching component oracle.wls.admin.console.en, 12.1.3.0.0…
Verifying the update…
Patch 19637454 successfully applied
Log file location: /var/Oracle/Middleware/Oracle_Home/cfgtoollogs/opatch/19637454_Feb_10_2015_18_33_57/apply2015-02-10_18-33-51PM_1.log
OPatch succeeded.

4 – Verificar se o patch foi instalado.
$ /var/Oracle/Middleware/Oracle_Home/opatch lsinventory

Log:

Patch  19637454     : applied on Tue Feb 10 18:35:09 BRST 2015

Unique Patch ID:  18320966
Patch description:  “WebLogic Server 12.1.3.0.2 PSU Patch for BUG19637454 THU NOV 27 10:54:42 IST 2014”
   Created on 27 Nov 2014, 13:01:39 hrs Asia/Calcutta
   Bugs fixed:
     19287874, 18276961, 18691894, 18968900, 19287842, 18859387, 18589879
     17012341, 19942900, 19730967, 18538501

*Obs:  Cada patch mostra em qual versão mínima do opatch e necessária para executar, verifique o arquivo README.txt do patch para ver qual a versão necessária.
 
Verificar a versão do OPatch da Instalação do Middleware.
$ cd /var/Oracle/Middleware/Oracle_Home/OPatch
$ ./opatch version

OPatch Version: 13.2.0.0.0

OPatch succeeded.
Veja a lista de parâmetros do OPatch. 
$ /var/Oracle/Middleware/Oracle_Home/opatch help
 apply
 napply
 rollback
 nrollback
 lsinventory
 lsinv
 lspatches
 compare
 query
 util
 prereq
 version
 -help
OBS:  Tive um problema com OPATH em uma máquina, ele funcionava pois encontrava o OracleHomeInventory ou estava corrompido. Tentei setar parâmetro, copiar de outra máquina, sempre o mesmo erro. Veja o Log de Erro:
OPatch cannot load inventory for the given Oracle Home.
      Possible causes are:
      Oracle Home dir. path does not exist in Central Inventory
      Oracle Home is a symbolic link
      Oracle Home inventory is corrupted
 OUI-67073:LsInventorySession failed: 

Solução: Executar um script do OPATCH para recriar o Inventory.

cd $ORACLE_HOME/oui/bin
$ ./attachHome.sh

Checking swap space: must be greater than 500 MB. Actual 196608 MB Passed
Preparing to launch Oracle Universal Installer from /tmp/OraInstall2012-06-27_03-07-48AM. Please wait ...
Re-run the same command and it is going to work. 
Agora pode instalar o patch que vai funcionar .
Categorias:weblogic Tags:

Mapeando Diretório no Weblogic

Quando uma aplicação no Weblogic precisa acessar um diretório em disco para fazer uploud de arquivo ou ler arquivos em pdf, imagens e etc, e preciso mapear esse diretório para que o weblogic deixe esse diretório ser acessado pela aplicação.

1 – Criar um diretório que ficaram os arquivos: 
# /var/tmp/reportsFiles/

2 – Criar o arquivo weblogic.xml com as tags de Mapear diretório Virtual – O arquivo no projeto deve ficar no mesmo diretório do web.xml  /WEB-INF
 
/WEB-INF/weblogic.xml
<weblogic-web-app>
    <virtual-directory-mapping>
         <local-path>/var/tmp/reportsFiles/</local-path>
         <url-pattern>*.pdf</url-pattern>
    </virtual-directory-mapping>
</weblogic-web-app>

Feito isso a aplicação pode ler e salvar arquivos nesse diretório, lembre-se de ver as permissões de disco de leitura e gravação para o usuário que está iniciando o weblogic.

 

 

Categorias:weblogic Tags: