18 de dez. de 2008

Netbeans em inglês

Na última semana, devido a um projeto onde estou trabalhando com JME decidi utilizar pela primeira vez em um projeto real o NetBeans da Sun. A versão que estou utilizando é a versão 6.5. Um fato que me chamou a atenção é que apesar de eu ter escolhido a versão em inglês para baixar a ferramenta quando instalei a IDE apresentava o menu em português. Conforme a imagem abaixo. Eu, particularmente, prefiro trabalhar com as IDE's em inglês como faço com o Eclipse, JUDE, MindMap e outras ferramentas que utilizo para desenvolvimento e, portanto, fui procurar um jeito de mudar a linguagem da IDE, o que não foi muito difícil de encontrar. Para mudar a lingua padrão do netbeas faça o seguinte(windows): 1) No diretório de instalação do Netbeans (Program Files/Netbeans6.5 ou Arquivos de Programas/Netbeans6.5 dependendo da linguagem utilizada) navegue para o diretório etc. e edite o arquivo chamado netbeans.conf , procure a entrada netbeans_default_options Conforme a imagem abaixo: 2) Adicione o seguinte no final de netbeans_default_options:-J-Duser.language=en -J-Duser.region=US dentro das aspas, salve o arquivo e feche. 3) Reinicie o seu netbeans e ele deverá estar em inglês, conforme imagem abaixo: Abaixo seguem instruções de outra forma de mudar a lingua do netbeans, perceba que você não precisa fazer as duas coisas somente uma delas. Outra forma de mudar a linguagem do netbeans é adicionando o parâmetro --locale en:US ao final do atalho de execução do netbeans, para isso procure o atalho do netbeans no menu iniciar clique com o botão direito sobre o ícone e propriedades, você deverá ter a tela de propriedades conforme mostrado na imagem abaixo: Adicione o parâmetro reinicie o netbeans e veja o resultado. É isso agora vc pode utilizar o netbeans 6.5 em inglês. O netbeans é uma ferramente nova para mim e pretendo utilizá-lo, pelo menos por enquanto, para desenvolvimento JME já que o plugin oficial do eclipse para JME que tenho utilizado até então não me proporciona a produtividade desejada, pelo pouco que vi, o netbeans poderá melhorar a produtividade de desenvolvimento para JME pois proporciona várias facilidades para o desenvolvimento JME, com a aplicação da ferramente no projeto real poderei em alguns meses falar melhor sobre isso. []s

12 de ago. de 2008

Como definir uma função com WLST?

Para definir uma função com WLST basta utilizar a instrução def que tem o formato:
def nomeFuncao(Parametros)
como no exemplo a seguir:
def carregaPropriedades(nomeArquivo):
  #carrega arquivo de propriedades
  myProps.load(FileInputStream(File(nomeArquivo)))
A função chamada carregaPropriedades é definida recebendo como parâmetro o nome do arquivo a ser carregado. Depois para chamar a função:
#chama a função definida acima
carregaPropriedades('exemplo.properties')

no exemplo acima um arquivo de propriedades chamado exemplo.properties é carregado e deve existir no mesmo diretório do script.

Segue exemplo completo, lembre-se de criar no mesmo diretório do arquivo .py um arquivo chamado exemplo.properties com chave valor no padrão .properties de java.
from java.util  import Properties
from java.io  import FileInputStream
from java.io  import File
from java.util  import Enumeration

myProps = Properties()

def carregaPropriedades(nomeArquivo):
  #carrega arquivo de propriedades
  myProps.load(FileInputStream(File(nomeArquivo)))

#chama a função definida acima
carregaPropriedades('exemplo.properties')

propertyNames = myProps.propertyNames()
while propertyNames.hasMoreElements():
  #imprime on nomes de todas as chaves carregadas do arquivo de propriedades
  chave = propertyNames.nextElement()
  print str(chave)
  print '' + myProps.getProperty(chave)


É isso, em outro artigo mostrarei como fazer herança utilizando WLST e portanto como pode-se definir funções reutilizáveis em seus scripts WLST.
[]s

5 de ago. de 2008

Importante!

Publico aqui um artigo que encontrei na internet sobre a importância de aprendermos com nossos erros, achei muito interessante e importante para nossas vidas!

Quer saber o segredo do sucesso? "O segredo do sucesso é a constância de propósito" - Benjamin Disraeli

Você não fracassa por fazer as coisas erradas. Fracassa por desistir ao fazer as coisas erradas.

A diferença entre um fracasso e um sucesso não é aquilo que sai errado. Tanto os que fracassam, quanto os que atingem o sucesso, em qualquer área da vida, cometem erros. Muitos cometem erros enormes. Deixe-me repetir isso, para que você compreenda: tanto os que fracassam, quanto os que atingem o sucesso, em qualquer área da vida, cometem erros.

Muitas vezes, os mesmos erros. Você não fracassa por fazer as coisas erradas. Fracassa pordesistir ao fazer as coisas erradas.

Em qualquer momento da história, em qualquer país do mundo e em qualquer mundo do Universo, não existe nenhuma diferença nos erros cometidos pelos que têm sucesso e os que têm fracasso. Nenhuma diferença. Na verdade, normalmente os que levam os troféus da vida cometem erros maiores, mais caros e mais dolorosos do que aqueles que ficam comendo pipoca na arquibancada da existência. Naturalmente, a imagem que fica dos vencedores é aquela do podium, do momento em que o "herói" levanta o troféu. Mas é somente uma cena do filme da vida dos vitoriosos. A cena editada.

Quantas vezes você viu Ayrton Senna deprimido, chorando, triste, bravo, suando enquanto reclamava que não conseguia fazer "Cooper" por que seu peito parecia doer? Provavelmente, nenhuma. Mas ele era humano e, por isso, também fracassava. Ainda assim, você tem a imagem do seu carro cruzando a linha de chegada, ele carregando a bandeira do Brasil e a música eternizada do "tan-tan-tannnn tan-tan-tannnn". Você se lembra dele no topo do podium, levantando o troféu. Você lembra do minuto da vitória. Apenas quem conviveu com ele lembra das horas de preparação, dos dias de esforço, das milhares de vezes que ele errou e, rapidamente, corrigiu seu rumo.

Você não fracassa por fazer as coisas erradas. Fracassa por desistir ao fazer as coisas erradas. Ayrton Senna cometeu todos os erros que um piloto pode cometer. Mas ele tinha um propósito e não desistiu jamais. Anote isso em sua mente: tanto os que fracassam, quanto os que atingem o sucesso, em qualquer área da vida, cometem erros. Muitas vezes, os mesmos erros. Mas os que têm sucesso não desistem. Eles continuam. Eles têm constância de propósito.

Você errou. Doeu, talvez não somente em você, mas em outras pessoas. Você sofreu. Você teve sua carne marcada pela vida como o fazendeiro marca seu gado com ferro quente. Ótimo.

Isso prova que você está mais próximo do podium, mais perto de atingir seu sonho. Talvez a marca tenha sido causada por uma crise no casamento, um emprego perdido, um filho envolvido com o submundo, uma escolha errada na universidade. Chore, viva o sofrimento.

Fique triste, absorva a derrota. Não finja que não sofreu. Sofra. Você faz parte da raça humana, e isso é normal. Mas faça tudo isso somente na hora da queda. Assim que a vida tirar ferro quente da sua carne, vire a página e, como Ayrton Senna, olhe a próxima pista, o próximo desafio, os próximos erros e a próxima vitória. Leve com você a marca que a vida lhe deu. Ela é parte de tudo de bom que você é agora, ou vai ser.

Como disse Benjamin Disraeli, "o segredo do sucesso é a constância de propósito". Você fez uma burrada? Excelente. Somente quem faz parte dos "personagens do filme" fazem burradas.

Os outros pagam o ingresso no cinema para assisti-los. Entre no filme da sua vida. Você não fracassa por fazer as coisas erradas. Fracassa por desistir ao fazer as coisas erradas. Tente novamente, por mais improvável que seja. Tente. Tente. Tente! Não importa o tamanho da sua queda, do seu erro, da sua derrota, você está mais próximo agora, do que estava antes. Por isso, não desista.

Texto de Aldo Novak, coach e conferencista Diretor da Academia Novak do Brasil

[]s

Eclipse Ganymede!

Baixei e vou começar a utilizar o eclipse Ganymede para meu novo projeto! Para isso vou utilizar a ferramenta para revisar alguns frameworks e aproveitar para ver como ficou. Neste projeto devo utilizar as tecnologias JSF ou Struts2(ainda indefinido), Spring e Hibernate.

Este novo release do eclipse, pelo pouco que pude ver até o momento, tem documentação aparentemente bem completa e as principais alterações do ponto de vista do usuário final podem ser vistas na documentação on-line do projeto no link: http://help.eclipse.org/ganymede/topic/org.eclipse.platform.doc.user/whatsNew/platform_whatsnew.html , link em inglês.

[]s

Como começar um novo projeto? Dica, Appfuse!

Estou começando um novo projeto J2EE, é um projeto pessoal e ultimamente andei avaliando a melhor forma de integrar frameworks e fazer o startup do projeto. Já conhecia o AppFuse e analisando as opções disponíveis optei mesmo por utilizar este produto. O site oficial é: http://www.appfuse.org

A documentação é boa e tem uma boa comunidade para discussões também. O grande lance do appfuse é que ele dá a possibilidade de facilmente começar um projeto utilizando frameworks já integrados como JSF + Spring + Hibernate ou Struts2 + Spring + Hibernate, dentre outros. Além disso ele faz geração básica de código utilizando arquitetura básica web ou em módulos para as aplicações a partir de modelos de base de dados ou Classes POJO java, de domínio.

Enfim, agora só falta decidir o framework de front end que irei utilizar estou em dúvida entre o Struts2 e JSF, depois posto minhas impressões e decisão final.

O projeto irá envolver J2EE no servidor e cliente desktop com swing e J2ME para celulares. Espero começar o projeto em breve. Como será um projeto pessoal ele estará fadado ao trabalho nas horas vagas e provavelmente será um projeto open source.

[]s

Configuração de log dos servidores com WLST

Para fazer a configuração de log padrão e http de um servidor utilizando WLST utilizo os seguintes comandos:

username='weblogic'
password='weblogic'
adminurl='t3://localhost:7001'

SERVIDOR='managedServer1'

DIRETORIO_LOG='/var/logs'

NOME_ARQUIVO_LOG='server.log'

# Conecta com Admin server do domínio
connect(username, password, adminurl)

edit()
startEdit()

print 'INICIANDO CONFIGURACAO DE LOG DO SERVIDOR ...'
cd('Servers/' + SERVIDOR + '/Log/' + SERVIDOR)
cmo.setFileName(DIRETORIO_LOG+ '/' + SERVIDOR + '/' + NOME_ARQUIVO_LOG)
cmo.setRotationType('byTime')
cmo.setFileTimeSpan(6)
cd('/')
#====CONFIGURANDO LOG HTTP====
cd('Servers/' + SERVIDOR + '/WebServer/' + SERVIDOR + '/WebServerLog/' + SERVIDOR)
cmo.setFileName(DIRETORIO_LOG + '/' + SERVIDOR + '/access.log')
cmo.setRotationType('byTime')
cmo.setFileTimeSpan(6)
print 'LOG DO SERVIDOR CONFIGURADO\n\n'
cd('/')
activate()


Neste caso será feita uma conexão com o Admin server rodando em localhost na porta 7001, depois no primeiro bloco navega para o MBean de log da instância passada na variável SERVIDOR e finalmente seta o arquivo de log para, neste caso, diretório /var/logs/managedServer1/server.log usando o setFileName finalmente configura o arquivo de log para rotacionar por tempo e seta o tempo para 6 horas. Depois inicia configuração do log http para isso navega para local de configuração do WebServer do servidor em questão e configura a saída para /var/logs/managedServer1/access.log, configura para rotacionar por tempo de 6 em 6 horas ativa as configurações e termina o script.

[]s

Como rodar um script WLST

Este post mostra como executar um script WLST do Oracle BEA Weblogic Server 10.

Para executar o script recomendo utilizar a JVM da BEA que vem com o Weblogic server. Para isso neste exemplo como modelo didádito irei passar o caminho completo da JVM utilizada assim como o classpath completo. No seu ambiente vc pode setar o Path e Classpath para simplificar este comando.

O Script WLST tem a extensão python .py portanto o script terá o formato xxxxx.py onde xxxxx pode ser qualquer nome de arquivo válido no sistema operacional.

Para executar o script chamado criaDominioWeblogic.py de um console DOS no windows o comando, pressupondo que vc esteja no mesmo nível do diretório onde se encontra o script mencionado, seria:

C:\bea\jrockit_150_11\bin\java -cp C:\bea\wlserver_10.0\server\lib\weblogic.jar weblogic.WLST criaDominioWeblogic.py

[]s

Criação de domínio com WLST

Script para criação de um domínio default utilizando WLST este script foi escrito para Weblogic 10 MP1.

Neste exemplo foi criado um script wlst com o nome criaDominioBasico.py com a seguinte estrutura:

#Constantes utilizadas para criação do domínio
NOME_DOMINIO='dominioTutorial'
PORTA_HTTP=7001
PORTA_HTTPS=7002


#Utiliza um template padrão do weblogic 10 como base para criação do domínio.
readTemplate("C:/bea/wlserver_10.0/common/templates/domains/wls.jar")

#Configura o Admin Server para o domínio.
cd('Servers/AdminServer')
set('ListenAddress','')
set('ListenPort', PORTA_HTTP)

#Configura porta SSL para domínio
create('AdminServer','SSL')
cd('SSL/AdminServer')
set('Enabled', 'True')
set('ListenPort', PORTA_HTTPS)

#Define a senha para usuário default do weblogic(usuario=weblogic, senha=weblogic).
cd('/')
cd('Security/base_domain/User/weblogic')
cmo.setPassword('weblogic')

#configura o domínio com os valores passados e cria o domínio
setOption('OverwriteDomain', 'true')
writeDomain('c:\\tools\\dominiosWeblogic\\' + NOME_DOMINIO)

print('Dominio chamado: ' + NOME_DOMINIO + ' criado com sucesso')

closeTemplate()
exit()

Este script utiliza WLST offline e cria um domínio do weblogic no diretorio c:\tools\dominiosWeblogic\dominioTutorial, configura a porta http para 7001 e https para 7002, cria usuário de administraçao para o domínio com nome weblogic e senha weblogic.

[]s

Sobre este blog! Objetivos e conteúdo.

Este blog tem por objetivo documentar conhecimentos nas áreas de TI relacionadas ao desenvolvimento e administração de aplicações J2EE, java e Servidores de Aplicação. No momento estou muito envolvido em trablahos de administração com Oracle BEA Weblogic Server 10 e portando devo estar postando vários assuntos relacionados a este servidor de aplicações J2EE neste primeiro momento.

Tenho interesse também em arquitetura de sistemas, desenvolvimento, frameworks J2EE, UML, ferramentas de desenvolvimento, processos de desenvolvimento de software, XMl, Webservices e java em geral e portanto postagens relativas a estes assuntos irão .

Eventualmente postarei também informações, tutoriais e quaisquer estudos relacionados as areas de TI em que estiver envolvido.

Fundamentalmente este blog será uma base de informações e conhecimentos que irá crescer junto com meu desenvolvimento profissional que atualmente é de cerca de 12 anos trabalhando com TI.

30 de jul. de 2008

Como capturar informações de um arquivo de propriedades utilizando WLST

Irei mostrar aqui um script criado para carregar valores de variáveis de um arquivo de propriedades.
O Script irá chamar carregamentoPropriedades.py e o arquivo configuracoes.properties.
O script carregamentoPropriedades.py segue abaixo:

#Script simples que lê um arquivo de propriedades e depois imprime em um loop as chaves e valores carregados.
#algums imports necessários
from java.util  import Properties
from java.io  import FileInputStream
from java.io  import File
from java.util  import Enumeration
#arquivo de propriedades a ser carregado
localizacaoArquivoPropriedades = 'D:\\eclipse_workspace\\scriptsWLST\src\\carregamentoArquivoProperties\\configuracoes.properties'
#instancia objeto Properties
listaPropriedades = Properties()
#carrega efetivamente o arquivo de propriedades
listaPropriedades.load(FileInputStream(File(localizacaoArquivoPropriedades))
#carrega lista Enum com os valores das chaves contidos no arquivo de propriedades.
nomesPropriedades = listaPropriedades.propertyNames()
#loop para imprimir chave=valor
while nomesPropriedades.hasMoreElements():
  #imprime on nomes de todas as chaves carregadas de um arquivo de propriedades
  #perceba que esta rotina não garante que a ordem será a mesma do arquivo carregado.
  chave = nomesPropriedades.nextElement()
  print str(chave) + '=' + listaPropriedades.getProperty(chave)


É isso, bem direto neste caso no arquivo de propriedades com a seguinte estrutura:
adminserverurl=t3://localhost:7001
usuario=weblogic
senha=weblogic


temos uma saída de console:



É isso! Note que nesta imagem estou executando o WLST utilizando o eclipse. Irei mostrar como fazer isso em uma próxima oportunidade!