Variável de Ambiente Java no Weblogic

09/24/2014 2 comentários

Aplicações que necessitam passar por vários ambientes como Desenvolvimento, Homologação e Produção, para que não seja necessário fazer um pacote para cada ambiente pode resolver no próprio código da aplicação testando uma variável colocada no weblogic identificando qual ambiente o pacote está. Vamos lá :

  1. Vamos definir o valor da variável para cada ambiente.

    Nome da Variável
    -Dambiente
    Valores:
    -Dambiente=DESENV
    -Dambiente=HOMO
    -Dambiente=PROD

  2. Adicinando a variável ao weblogic
    No weblogic navegue até: Dominio -> Environment -> Servers –> Server-1 -> Server Start -> Arguments Adicione a variável com o valor de Desenvolvimento:

    -Dambiente=DESENV 

  3. Testando com jsp
    Fiz uma aplicação web apenas com uma página inicial jsp parar testar.

    <% String teste = System.getProperty(“ambiente”); out.println(teste); %>

    Fiz deploy da aplicação do server e chamei a URL no browser:
    var

  4. Agora para cada ambiente basta colocar a variável com o seu conteúdo [DESENV,HOMO,PROD] testar na sua aplicação e utilizar o mesmo pacote parar todos ambientes. 😉
Anúncios
Categorias:weblogic Tags:

Weblogic 12c Ligth

      O Weblogic é um aplication server muito completo, tem várias “features” que nem sempre usamos, nesse post vou mostrar como iniciar uma versão do Weblogic 12c mais “ligth” sem EJB, JCA, JMS. Caso sua aplicação não utilize alguns desses recurso e aconselhável utilizar de forma mais enxuta.

    1. Edite o setDomainEnv.sh e adicione o parâmetro ao classpath:

      JAVA_OPTIONS=”-DserverType=”wlx”
      export JAVA_OPTIONS

      *Reinicie o adminserver.

      Padrão com JMS Com o parâmetro sem JMS
      x1 Sem JMS
      -DserverType=”wls” -DserverType=”wlx”

      Veja que o menu Messaging (JMS) não foi criado. Isso vale para conectares JCA, JMS e EJB.

Referência: http://docs.oracle.com/middleware/1213/wls/START/overview.htm

Categorias:weblogic Tags:

Weblogic como Serviço do Windows

    Weblogic no windows para mim não é uma coisa muito comum, mas existe, acredite, Existe!
    Nem sempre o instalador cria um serviço para subir o weblogic, isso faz com que você tenha que deixar um prompt de comando sempre preso rodando o weblogic. Para criar um serviço no windows para o weblogic e simples.

  1. Cria-se um arquivo “criarServico.cmd” com as seguinte variáveis.

    echo off
    SETLOCAL
    set USERDOMAIN_HOME=C:\Oracle\Middleware\domains\Curso
    set SERVER_NAME=AdminServer
    set DOMAIN_NAME=Curso
    set WL_HOME=C:\Oracle\Middleware\wlserver_10.3\server
    set PRODUCTION_MODE=true
    set MEM_ARGS=-Xms1024m -Xmx1024m
    set HOST=192.168.1.100
    set PORT=7001
    set MAX_CONNECT_RETRIES=2
    set JAVA_OPTIONS=-Dweblogic.Stdout=”C:\Oracle\Middleware\domains\Curso\stdout.txt”
    call C:\Oracle\Middleware\wlserver_10.3\server\bin\installSvc.cmd”
    ENDLOCAL

    Algumas Explicações:

    USERDOMAIN_HOME= Caminho do seu Domínio
    SERVER_NAME= Nome do AdminServer
    WL_HOME= Caminho da instalação do weblogic
    PRODUCTION_MODE= Se a instalação é Produção ou Desenvolvimento
    HOST= IP do AdminServer (ou localhost)
    PORT= Porta do Admin (por default é instalando na 7001)
    MAX_CONNECT_RETRIES= Número de vezes que o windows vai tentar subir no caso de erro
    JAVA_OPTIONS= Incluir um arquivo de log, se ocorrer erro verifique esse arquivo

  2. Trocando o nome do Serviço

    O serviço é criando através do script installSvc.cmd que é chamando pela primeiro script que criamos para alimentar as variáveis do seu ambiente. Esse script por padrão coloca o nome do serviço de
    beasvc +DOMAIN_NAME +SERVER_NAME caso queria trocar o nome do serviço, edite o arquivo installSvc.cmd e troque o nome beasvc para o nome de sua preferência. Ex:

    De: -svcname:beasvc
    De: -svcname:weblogic

  3. Excluíndo o servido
    Caso queira excluir o serviço execute esse comando no prompt.

    sc delete “nome do serviço”

Categorias:weblogic Tags:

Linux Liberando Portas < 1024

Sistemas Operacionais Linux usuário não root não tem permissão pra para utilizar portas menores que 1024, para poder utilizar servidor de aplicação nessas portas é preciso criar uma regra utilizando i iptables do linux. Veja como:

  1. Regra para portas 443, sempre que ela for chamada redireciona para 4443

    iptables -A INPUT -i eth0 -p tcp –dport 443 -j ACCEPT
    iptables -A INPUT -i eth0 -p tcp –dport 4443 -j ACCEPT
    iptables -A PREROUTING -t nat -i eth0 -p tcp –dport 443 -j REDIRECT –to-port 4443

  2. Regra para portas 80, sempre que ela for chamada redireciona para 8080

    iptables -A INPUT -i eth0 -p tcp –dport 80 -j ACCEPT
    iptables -A INPUT -i eth0 -p tcp –dport 8080 -j ACCEPT
    iptables -A PREROUTING -t nat -i eth0 -p tcp –dport 80 -j REDIRECT –to-port 8080

  3. Para salvar o iptables

    iptables-save -c > /etc/iptables.rules
    vi /etc/rc.d/init.d/iptablesload

    #!/bin/sh
    iptables-restore < /etc/iptables.rules
    exit 0

    chmod 755 /etc/rc.d/init.d/iptablesload
    cd /etc/rc.d/rc3.d
    ln -s ../init.d/iptablesload S92iptablesload
    cd /etc/rc.d/rc5.d
    ln -s ../init.d/iptablesload S92iptablesload

  4. Para listar o iptables

    iptables –list

  5. Para consultar as regras ativas no iptables

    iptables -t nat -L -n -v

Categorias:linux, Sjsas, weblogic Tags:,

Stop Start Weblogic Server

Recentemente fiz um script para parar e iniciar todos servers de um domínio weblogic, bem mais complexo pois tinha cluster e dois node Manager, era necessário subir cada Node depois conectar via node e subir todos servidores da lista de Mbeans do AdminServer.

Esse script você coloca o nome de um servidor específico e ele faz o Stop e Start via AdminServer.

  1. cria-se um arquivo restartServer.py com o seguinte conteúdo:

    import getopt
    ################################################################
    # Script para reniciar um server do weblogic.
    ################################################################
    # 1 – Conecta no AdminServer
    # 2 – Para o servidor
    # 3 – Inicia o servidor
    #
    # @author Herivelto Gabriel
    # @Date Abril/2014
    ###############################################################

    ################################################################
    # Variaveis.
    ################################################################
    adminusername=’weblogic’
    adminpassword=’weblogic11′
    adminurl=’t3://172.18.4.62:7001′
    serverRestart=’Server-DB’

    ################################################################
    # Conecta no AdminServer entra em runtime e ler o server
    ################################################################

    connect(adminusername, adminpassword, adminurl)
    domainRuntime()

    ################################################################
    # STOP – Server
    ################################################################
    bean = getMBean(‘ServerRuntimes/’ + serverRestart)
    if bean:
    print ”
    print ‘======================================’
    print ‘ STOP Server, Please wait……….!!!’
    print ‘======================================’
    shutdown(serverRestart, ‘Server’ , force=’true’)
    print ‘======================================’
    print ‘ START Server, Please wait…………….!!!’
    print ‘======================================’
    start(serverRestart, ‘Server’, block=’true’)
    print ‘======================================’
    print ‘Started Server ‘ + serverRestart
    print ‘======================================’
    print ”
    print ”

    ################################################################
    # START – Server
    ################################################################

    bean = getMBean(‘ServerRuntimes/’ + serverRestart)
    if bean:
    print ‘Server ‘ + serverRestart + ‘ is ‘ + bean.getState()
    else:
    print ”
    print ‘======================================’
    print ‘ START Server, Please wait…………….!!!’
    print ‘======================================’
    start(serverRestart, ‘Server’, block=’true’)
    print ‘======================================’
    print ‘Started Server ‘ + serverRestart
    print ‘======================================’
    print ”
    print ”

    ################################################################
    # Desconecta e sai do script
    ################################################################
    disconnect()
    exit()

  2. Excutando o script:

    /var/Oracle/Middleware/wlserver/common/bin/wlst.sh restartServer.py

  3. Saída do Script:

    ===================================================
    STOP Server, Please wait……………..!!!
    ===================================================
    Shutting down the server Server-DB with force=true while connected to AdminServer …
    ===================================================
    START Server, Please wait…………….!!!
    ===================================================
    Starting server Server-DB ……………
    Server with name Server-DB started successfully
    ===================================================
    Started Server Server-DB !!
    ==================================================

Categorias:weblogic, wlst Tags:

Criar Dominio Weblogic 12 WLST

O weblogic 12c(12.1.2) não tem mais o modo console para instalação e nem criação de domínio. Fiz um script para criar domínio que simula um pouco o modo console como era nas versões anteriores.

  1. cria-se um arquivo createDomain.py com o seguinte conteúdo
    ###############################################################
    # Script para criar dominio weblogic 12c
    # Para : Oracle WebLogic 12c
    # Author : Herivelto Gabriel
    ###############################################################
      
    print'#========================================================'
    print'# Enter Weblogic Home: Ex: /var/Oracle/Middleware'
    print'#========================================================'
    print'
    WLHOME=raw_input('Please Enter Weblogic Home install: ') 
    print'
    #Ler o template padrão do weblogic
    readTemplate(WLHOME+'/wlserver/common/templates/wls/wls.jar')
     
    print'#========================================================'
    print'# Create Domain in Weblogic 12c.'
    print'#========================================================'
    print''
    cd('Servers/AdminServer')
    set('Name',"AdminServer")
    
    domainName=raw_input('Please Enter domain name: ')
    domainPath=raw_input('Please Enter the domain path: ')
    AdminListenAdr=raw_input('Please Enter Admin Listen Address: ')
    AdminListenPort=input('Please enter Admin listen Port: ')
     
    set('ListenAddress',AdminListenAdr)
    set('ListenPort', AdminListenPort)
    
    cd('/')
    cd('Security/base_domain/User/weblogic')
    usr=raw_input('Please Enter AdminUser Name: ')
    set('Name',usr)
    AdminPassword=raw_input('Please enter Admin password:')
    cmo.setPassword(AdminPassword)
     
    # - OverwriteDomain: Se existir dominio com o mesmo nome sobrescreve
    setOption('OverwriteDomain', 'true')
    print'' 
    print'# Please wait ... Creating Domain '
    print'' 
    writeDomain(domainPath+"/"+domainName)
    
    print'#========================================================'
    print'# Domain create with sucesso !' 
    print'#========================================================'
    print'' 
    print'Domain Name = ',domainName  
    print'Path Name = ', domainPath
    print'Username = ', usr
    print'Listern = ',AdminListenAdr
    print'Port = ', AdminListenPort
    print'' 
    print '#========================================================'
    
    closeTemplate()
    exit()
    
  2. Excutando o script:

      /var/Oracle/Middleware/wlserver/common/bin/wlst.sh createDomain.py
    
  3. Saída do Script:

    #========================================================
    # Enter Weblogic Home: Ex: /var/Oracle/Middleware
    #========================================================
    
    Please Enter Weblogic Home install: /var/Oracle/Middleware12
    
    #========================================================
    # Create Domain in Weblogic 12c.
    #========================================================
    
    Please Enter domain name: weblogic12c
    Please Enter the domain path: /var/Oracle/domains
    Please Enter Admin Listen Address: 192.168.14.129
    Please enter Admin listen Port: 7001
    Please Enter AdminUser Name: weblogic
    Please enter Admin password:weblogic12
    
    # Please wait ... Creating Domain 
    
    #========================================================
    # Domain create with sucesso !
    #========================================================
    
    Domain Name =  weblogic12c
    Path Name =  /var/Oracle/domains
    Username =  weblogic
    Listern =  192.168.14.129
    Port =  7001
    
    #========================================================
    
Categorias:weblogic, wlst Tags:,

Renomear Domínio Weblogic

Algumas vezes é necessário mudar o nome do domínio ou simplesmente duplicar o domínio para dividir a console de administração que esteja lenta por estar com uma grande quantidade de servidores.

  1. Faca uma cópia do diretório do domínio:
    # cp -rp /var/Oracle/domains/meuDominio meuNovoDominio
  2. Execute um grep para ver todos arquivos que contém o nome do domínio: Veja a Saida de todos arquivos que precisam serem alterados. Principalmente as tags do Config.xml, startScript.xml e o arquivo tokenValue.properties o restante e basicamente caminhos físicos.
    # grep -r * meuNovoDominio --exclude-dir={temp,logs,data,domain_bak} 
    
    meuDominio/bin/setDomainEnv.sh:DOMAIN_HOME="/var/Oracle/domains/meuDominio"
    
    meuDominio/bin/setDomainEnv.sh:LONG_DOMAIN_HOME="/var/Oracle/domains/meuDominio"
    
    meuDominio/bin/startManagedWebLogic.sh:DOMAIN_NAME="meuDominio"
    
    meuDominio/bin/startManagedWebLogic.sh:DOMAIN_HOME="/var/Oracle/domains/meuDominio"
    
    meuDominio/bin/startWebLogic.sh:DOMAIN_HOME="/var/Oracle/domains/meuDominio"
    
    meuDominio/bin/stopManagedWebLogic.sh:DOMAIN_HOME="/var/Oracle/domains/meuDominio"
    
    meuDominio/bin/stopWebLogic.sh:DOMAIN_HOME="/var/Oracle/domains/meuDominio"
    
    meuDominio/config/config.xml: meuDominio
    
    meuDominio/config/config.xml: meuDominio
    
    meuDominio/config/config.xml: meuDominio
    
    meuDominio/init-info/startscript.xml:  /var/Oracle/domains/meuDominio
    
    meuDominio/init-info/startscript.xml:  /var/Oracle/domains/meuDominio
    
    meuDominio/init-info/startscript.xml:  /var/Oracle/domains/meuDominio
    
    meuDominio/init-info/startscript.xml:  meuDominio
    
    meuDominio/init-info/startscript.xml:  /var/Oracle/domains/meuDominio
    
    meuDominio/init-info/startscript.xml:  /var/Oracle/domains/meuDominio
    
    meuDominio/init-info/startscript.xml:  /var/Oracle/domains/meuDominio
    
    meuDominio/init-info/startscript.xml:  /var/Oracle/domains/meuDominio
    
    meuDominio/init-info/tokenValue.properties:@DOMAIN_HOME=/var/Oracle/domains/meuDominio
    
    meuDominio/init-info/tokenValue.properties:@DOMAIN_NAME=meuDominio
    
    meuDominio/init-info/tokenValue.properties:@USERDOMAIN_HOME=/var/Oracle/domains/meuDominio
    
    meuDominio/startWebLogic.sh:DOMAIN_HOME="/var/Oracle/domains/meuDominio"
    
  3. Execute o script Perl para renomear tudo que estive no novo diretório meuNovoDominio, onde encontrar a string “meuDominio” trocar para “meuNovoDominio”.
    # find/var/Oracle/domains/meuNovoDominio -type f -exec perl -pi -e 's/meuDominio/meuNovoDominio/g' '{}' \;
  4. Vá para a pasta do AdminServer e delete as pastas cache, data e tmp, não exclua a pasta data caso tenha usuários criados para o weblogic, eles todos serão ecluídos.
    Caso já tenha outros servers pode deletar todas as pastar dos servers, quando for reinciado o weblogic recriar toda estrutura de pastas dos servidores.

    # cd /var/Oracle/domains/meuNovoDomain/servers/AdminServer# 
    
    rm -rf cach/ data/ tmp
  5. Agora é só reiniciar seu domínio renomeado.
    #cd  /var/Oracle/domains/meuNovoDomain/
    nohup ./startWebLogic.sh &amp;
    


  6. Ok ! Seu novo domínio renomeado está pronto para ser usado.

    AdminServer

Categorias:weblogic Tags: