JBoss x Horário de Verão

Para quem teve muitos problemas com o horário de verão na sua aplicação em Java (início / durante / fim) e possui esta aplicação rodando em cima do JBoss. Aqui vai a solução:

Abra seu arquivo run.bat se o servidor roda no windows ou run.sh no caso do linux.

Vou escrever apenas sobre o run.bat por que foi onde eu já testei.

Procure as linhas:


if exist "%JBOSS_HOME%\bin\native" set JAVA_OPTS=%JAVA_OPTS% -Djava.library.path="%PATH%" 

e
set JAVA_OPTS=%JAVA_OPTS% -Dprogram.name=%PROGNAME%

E adicione o seguinte comando:

-Duser.timezone=America/Sao_Paulo -Duser.language=pt -Duser.country=BR

nas respectivas linhas.


O resultado vai ficar:

if exist "%JBOSS_HOME%\bin\native" set JAVA_OPTS=%JAVA_OPTS% -Djava.library.path="%PATH%" -Duser.timezone=America/Sao_Paulo -Duser.language=pt -Duser.country=BR
e
set JAVA_OPTS=%JAVA_OPTS% -Dprogram.name=%PROGNAME% -Duser.timezone=America/Sao_Paulo -Duser.language=pt -Duser.country=BR
Isto resolve definitivamente o problema.

Para quem tiver outros problemas com JBoss pode perguntar aqui no comentário.

Erro Intermitente - Failed tracking modifications of '/WEB-INF/lib'

Há um erro bastante interessante na utilização de facelets. Ele ocorre em alguns servidores trazendo a seguinte mensagem:

2009-06-16 11:00:59,484 DEBUG [org.apache.catalina.loader.WebappClassLoader] modified()
2009-06-16 11:00:59,484 DEBUG [org.apache.catalina.loader.WebappClassLoader] Failed tracking modifications of '/WEB-INF/lib'

Este erro consiste em não mostrar ou carregar alguns "includes" onde simplesmente a página deixa de carregar de forma intermitente alguma área da página que se está acessando.

Na verdade isto deve-se ao fato de que o framework está tentando carregar um objeto em um certo horário. Porém, como o relógio está atrasado, é como se aquele item ainda não existisse, fazendo com que o framework não consiga ler o novo código.

Este problema normalmente ocorre perto do horário em que o sistema foi iniciado.

Outro problema que pode ocorrer é que em modo debug, o java começa a ficar muito mais lento do que o normal. Basicamente o problema é o mesmo.

Sendo assim, a correção deste problema é simples. Basta atualizar ou adiantar o relógio do servidor em alguns minutos.

JBoss - Serviço do Windows

O JBoss é sem dúvida um dos melhores servidores de aplicação que existem para Java, porém, eu achei algo em que ele pecou muito em ser claro na hora de por exemplo, se criar um serviço no windows (foi a minha necessidade em um projeto) para o mesmo.

Então, pesquisei muito e encontrei três alternativas:

  1. JavaService - Lí em um dos documentos do site do jboss.org que não é recomendado pelo jboss (não era um documento oficial e sim um documento da comunidade que ajuda o JBoss)
  2. Poderia utilizar o JavaServiceWrapper (não é o JavaService, apesar do nome) - Apesar de ser bem recomendado, e fácil de utilizar (testei para verificar como funcionava) quis utilizar em último caso, pois, não se trata de um serviço criado pela equipe do JBoss.
  3. Um serviço próprio do JBoss.org - É um serviço do JBoss, porém, não possui muita documentação para o mesmo.

Apesar de todas as dificuldades, quis investir neste item.

Verifiquei que a facilidade não é tão diferente quanto ao uso do JSW(Java Service Wrapper), porém, quando se quer fazer algo diferente do uso da instance default (é dificílimo, onde encontrei apenas em um site em ingles) ou rodar duas instances ao mesmo tempo (simplesmente não achei - o que não significa que não existe).

Para fazer rodar o serviço do JBoss no windows, basta baixar a última versão do JBoss Native (http://www.jboss.org/jbossweb/downloads/jboss-native/?action=a&windowstate=maximized), e seguir as instruções abaixo ou do site do JBoss (http://www.jboss.org/community/docs/DOC-11932).

Copiar os arquivos da pasta bin do zip baixado:

  • jbosssvc.exe
  • service.bat

para a pasta %JBOSS_HOME%\bin do servidor

Executar os seguintes passos:

  1. Clicar em iniciar > executar > digitar "cmd".
  2. Digitar "cd %JBOSS_HOME%\bin"
  3. Digitar "service.bat install"
  4. Fechar a janela do cmd digitando "exit"
  5. Clicar em iniciar > painel de controle > ferramentas administrativas > serviços
  6. Na lista terá o serviço "Jboss Alguma coisa"
  7. Clicar com o botão direito do mouse e selecionar no combo "Tipo de inicialização" como "Automático" e apertar o botão "Iniciar"

    O serviço agora esta configurado, pronto e rodando.

Para se certificar que o serviço está rodando, na tela de serviços verificar se os dois serviços estão com a coluna "Status" como "Iniciado" e em "Tipo de Inicialização" como "Automático". Após isto, basta acessar a URL do seu serviço JBoss como se você tivesse iniciado manualmente.

Pode ser que o serviço demore 20 ~ 30 segundos para iniciar.

Para quem preferir, eu editei o arquivo service.bat para facilitar sua parametrização via variáveis. E para facilitar sua vida, destaquei as linhas em que você deve editar para parametrizar o serviço:


@echo off
REM JBoss, the OpenSource webOS
REM
REM Distributable under LGPL license.
REM See terms of license at gnu.org.
REM
REM -------------------------------------------------------------------------
REM JBoss Service Script for Windows
REM -------------------------------------------------------------------------


@if not "%ECHO%" == "" echo %ECHO%
@if "%OS%" == "Windows_NT" setlocal
set DIRNAME=%CD%

REM
REM VERSION, VERSION_MAJOR and VERSION_MINOR are populated
REM during the build with ant filter.
REM
set SVCNAME=JBAS[versaojboss]SVC[site] Ex: JBAS442SVCPORTAL
set SVCDISP=JBoss Application Server 4.2.2 GA Portal Escovando Bytes
set SVCDESC=JBoss Application Server 4.2.2 GA Portal Escovando Bytes/Platform: Windows x86
set NOPAUSE=Y
set LOGNAMEUP=run[site].log Ex: runPortal.log
set LOGNAMEDOWN=shutdown[site]Portal.log Ex: shutdownPortal.log
set LOCKNAMEUP=.r[site].lock Ex: .rPortal.lock
set LOCKNAMEDOWN=.s[site].lock Ex: .sPortal.lock
set FILENAME=[nomedoseuarquivo].bat Ex: service.bat
set INSTANCENAME=[instância] Ex: admin

REM Suppress killing service on logoff event
set JAVA_OPTS=-Xrs

REM Figure out the running mode

if /I "%1" == "install" goto cmdInstall
if /I "%1" == "uninstall" goto cmdUninstall
if /I "%1" == "start" goto cmdStart
if /I "%1" == "stop" goto cmdStop
if /I "%1" == "restart" goto cmdRestart
if /I "%1" == "signal" goto cmdSignal
echo Usage: service install^uninstall^start^stop^restart^signal
goto cmdEnd

REM jbosssvc retun values
REM ERR_RET_USAGE 1
REM ERR_RET_VERSION 2
REM ERR_RET_INSTALL 3
REM ERR_RET_REMOVE 4
REM ERR_RET_PARAMS 5
REM ERR_RET_MODE 6

:errExplain
if errorlevel 1 echo Invalid command line parameters
if errorlevel 2 echo Failed installing %SVCDISP%
if errorlevel 4 echo Failed removing %SVCDISP%
if errorlevel 6 echo Unknown service mode for %SVCDISP%
goto cmdEnd

:cmdInstall
jbosssvc.exe -imwdc %SVCNAME% "%DIRNAME%" "%SVCDISP%" "%SVCDESC%" %FILENAME%
if not errorlevel 0 goto errExplain
echo Service %SVCDISP% installed
goto cmdEnd

:cmdUninstall
jbosssvc.exe -u %SVCNAME%
if not errorlevel 0 goto errExplain
echo Service %SVCDISP% removed
goto cmdEnd

:cmdStart
REM Executed on service start
del %LOCKNAMEUP% 2>&1 findstr /C:"being used" > nul
if not errorlevel 1 (
echo Could not continue. Locking file already in use.
goto cmdEnd
)
echo Y > %LOCKNAMEUP%
jbosssvc.exe -p 1 "Starting %SVCDISP%" > %LOGNAMEUP%
call run.bat -c %INSTANCENAME% -b 0.0.0.0 < %LOCKNAMEUP% >> %LOGNAMEUP% 2>&1
jbosssvc.exe -p 1 "Shutdown %SVCDISP% service" >> %LOGNAMEUP%
del %LOCKNAMEUP%
goto cmdEnd

:cmdStop
REM Executed on service stop
echo Y > %LOCKNAMEDOWN%
jbosssvc.exe -p 1 "Shutting down %SVCDISP%" > %LOGNAMEDOWN%
call shutdown -S < %LOCKNAMEDOWN% >> %LOGNAMEDOWN% 2>&1
jbosssvc.exe -p 1 "Shutdown %SVCDISP% service" >> %LOGNAMEDOWN%
del %LOCKNAMEDOWN%
goto cmdEnd

:cmdRestart
REM Executed manually from command line
REM Note: We can only stop and start
echo Y > %LOCKNAMEDOWN%
jbosssvc.exe -p 1 "Shutting down %SVCDISP%" >> %LOGNAMEDOWN%
call shutdown -S < %LOCKNAMEDOWN% >> %LOGNAMEDOWN% 2>&1
del %LOCKNAMEDOWN%
:waitRun
REM Delete lock file
del %LOCKNAMEUP% > nul 2>&1
REM Wait one second if lock file exist
jbosssvc.exe -s 1
if exist "%LOCKNAMEUP%" goto waitRun
echo Y > %LOCKNAMEUP%
jbosssvc.exe -p 1 "Restarting %SVCDISP%" >> %LOGNAMEUP%
call run.bat -c %INSTANCENAME% -b 0.0.0.0 < %LOCKNAMEUP% >> %LOGNAMEUP% 2>&1
jbosssvc.exe -p 1 "Shutdown %SVCDISP% service" >> %LOGNAMEUP%
del %LOCKNAMEUP%
goto cmdEnd

:cmdSignal
REM Send signal to the service.
REM Requires jbosssch.dll to be loaded in JVM
@if not ""%2"" == """" goto execSignal
echo Missing signal parameter.
echo Usage: service signal [0...9]
goto cmdEnd
:execSignal
jbosssvc.exe -k%2 %SVCNAME%
goto cmdEnd

:cmdEnd


Para quem não entendeu o que fazer com o código acima, basta copiar, abrir o notepad, colar, e salvar como service.bat (ou o nome de sua preferência) dentro da pasta bin do seu JBoss.

É possível observar que é possível parametrizar melhor este arquivo.

É importante verificar que todos os pontos marcados entre "[" "]" devem ser alterados para poder rodar em paralelo com outras instâncias.

É importante ressaltar também, que cada instância deve possuir seu próprio arquivo ".bat" para criar seu serviço e que este mesmo nome deve ser colocado no lugar de [nomedoseuarquivo] no código.

Seguindo os passos da instalação acima e utilizando o arquivo que eu editei o código, fica mais fácil. Espero que eu tenha sido claro.

POGs SA

POG (programação orientada à gambiarras) é uma "paródia" inspirada em POO (programação orientada à objetos) que é um dos símbolos da programação organizada e preocupada com a qualidade do código escrito. POG é termo criado nos baixos da área de informática que descreve uma forma "jogada" ou criada normalmente por quem está começando na área de programação (não é culpa deles), mas, não entende muito bem o conceito e nem tem o conhecimento necessário para fazer um código de qualidade.

Porém, é extremamente necessário que as empresas possuam ao menos uma pessoa experiente na parte de organização / arquitetura de software para que certos erros não venham a ser cometidos nos sistemas.

Apesar de fazer bem feito inicialmente passe a idéia da forma correta de ser feito, a maior parte da área de TI desconhece alguns conceitos de como fazer isto, mas, este não é o único problema. Muitas das empresas também não se preocupam de como está sendo desenvolvido a qualidade do código, e a maior parte deles é por conta do tempo de desenvolvimento que isto custa inicialmente (quando falo inicialmente, é inicialmente mesmo, dando a impressão de atraso nos primeiros 20% ~ 40 % do tempo de desenvolvimento do sistema), porém, que traz uma agilidade incrível após "fechada" toda ou ao menos a maior parte da arquitetura do software. Fora isto, a quantidade de tempo que se gasta fazendo uma manutenção em um software bem estruturado é incrível. Mudanças de bancos de dados, regras de negócio e até reutilização de código para o mesmo sistema funcionar web e desktop é incrível, além, da satisfação de encontrar / desenvolver um código limpo é algo que não tem explicação.

Porém, na cultura das empresas tudo é para ontem, tudo tem que entregar logo e de qualquer jeito, então, o gasto com a "reescrita" de sistemas inteiros é algo que na minha concepção, as empresas economizariam cerca de 60% ~ 70% do seu orçamento em TI. Fora isto, a confiabilidade do sistema e a velocidade de replicação de regras e funcionalidades faz com que os usuários da área de TI fiquem muito mais contentes com os sistemas desenvolvidos.

Por estes e muitos outros motivos que não vejo POGs com bons olhos. Porém, como a área é nova, a área necessita cada vez mais de pessoas e os professores até mesmo de faculdades não conhecem as boas práticas de programação, o preço disto é uma área extremamente necessária nas empresas, porém, amadora.

Google, a empresa beta

Google, a empresa beta

Falar de inovação é falar de Google.

Se tem uma empresa que nos surprende a cada dia ela se chama Google.

Podemos amá-la como provedor de recursos web da mais alta qualidade, podemos odiá-la com sua postura de imperialista na dominação de serviços da Internet, mas o que devemos mesmo é elogiá-la!

Seus "ataques" no intuido de dominação não são grotescos como os da conhecida Microsoft ao tentar comprar com unhas e dentes seus concorrentes como o Yahoo!

A Google simplesmente estuda, estuda e ataca, e esse ataque é simples...é direto e inteligente..e o que deixa? são perguntas ou questionamentos para nós.

Isso só dá certo com a Google?

Interessente mesmo é sua estratégia do "beta eterno"!

Nós, desenvolvedores de software, estudamos e lutamos para pôr nossos "filhotes" em produção; lutamos para prover um nível de excelência e depois enfatizando que nossa concepção é UM SOFTWARE DE PRODUÇÃO e não mais um protótipo BETA!

Mas porque fazer isso?

Por que não deixemos de lados os padrões, os processos, as normas e/ou as recomendações e pomos tudo em beta mesmo?

Podemos dizer que "beta" já é o nível de excelência! Olha o Google!

Se não me engano o gmail foi lançado em 2003 não foi?

Puta merda! Os desenvolvedores do Google são tão ruins que 5 anos depois o produto deles AINDA É BETA!

Mas espera! não é apenas o gmail não, vamos então para uma pequna listagem!

Google Book Search - Beta

Google Orkut - Beta

Google Video - Beta


Google Mail Beta

Não, Não e Não! Chega de beta não é?

Agora temos o mais novo "Google's beta" o navegador Chrome ! PQP!

Eu soube da novidade e logo pensei: "Espere! Já uso meu Firefox todo bonzinho e tal! Pra que eu devo usar esse Chrome se ele acabou de ser lançado e é beta?"

Mas subitamente, sem demora, quase que instantaneamente repensei: "Não, não Olavo! Ele é beta, mas é do Google! Primeiro, ele não deixará de ser beta! E segundo...se é do Google, importa se é beta?

Para minha surpresa, eu certifiquei do que pensei inicialmente!

Ele era realmente beta! Estava eu testando e aparece essa tela show de bola!


Google Chrome - Beta


Humm...seria uma prova que o "beta é beta" de fato?

Isso me lembrou uma estória de um amigo que já trabalhou comigo.

Ele disse que na empresa que ele trabalhou uma vez...algum programador "esqueceu" um "alert" no código (provavelmente era debug não é?) que quando o programa tinha um "comportamento estranho", ou seja, um bug, esse "alert" era exibido com a seguinte mensagem:

"Deu pau!"

Isso deu o maior rolo! O cliente viu o Pau! ahahahahahha

Na verdade sendo beta ou não isso pouco importa...o que acho é que esse programador deve está no Google agora!

Eu irei demitir minha equipe se o nosso produto for posto em produção! Ele tem que ficar em beta!

Vou alterar meu blog para beta...e fazer uma dissertação para quem sabe no meu futuro mestrado, dizer: "

"TODO SOFTWARE É BETA! ELE SEMPRE MUDA, NUNCA ESTÁ NA EXCELÊNCIA DA PRODUÇÃO...A EXCELÊNCIA É BETA! Google É BETA!

Texto inicialmente publicado no meu blog:http://oalexandrino.com/blog/pt-BR/28/google-a-empresa-beta.aspx

Comprar software orginal no Brasil, será que chegou a hora?

Olá pessoal, durante uma breve passada na minha lista de feeds do meu Google Reader (para quem não conhece este fantástico leitor de RSS o endereço é www.google.com/reader), uma noticia do canal IDGNow chamou a minha atenção, a Microsoft abaixo de forma considerável o preço das licenças dos seus principais produtos destinados ao usuários finais, o pacote Office 2007 na versão Home & Student que inclui os softwares Word, Excel, PowerPoint e Outlook passa sair pela bagatela de R$ 199,00 sendo que no começo do ano custava R$ 399,00 e o Windows Vista Home Basic que custava R$ 499,00 passa a custar R$ 299,00, para este ultimo acredito que seja uma forma de forçar a migração para o sistema operacional, pois nas ultimas semanas a Microsoft anunciou que não vai mais comercializar o Windows XP, o que chamou a atenção nesta noticia não é diminuição de valor neste curto período de tempo, mais com relação as versões anteriores destes produto, e de outros softwares que utilizamos no nosso dia-a-dia, pois a dois anos atrás o era inimaginável pelo menos para mim ter um computador com todos os softwares originais, e não estou falando de softwares específicos que costumam custar o olho da cara, softwares que qualquer pessoa que tem um computador em casa ou utiliza no trabalho que ao meu ver são essenciais como um bom editor de textos, uma boa planilha de calculo, um compactador de arquivo descente, antivírus, firewall, programa de gravação de CD, etc ,etc, quando colocava o valor de cada licença na ponta do lápis chegava a conclusão que iria gastar duas vezes o preço do computador (que na época já era caro), somente com licenças de software "essenciais", por este motivo acabava indo para o lado negro da força (se é que vocês em entendem), mais acho que as coisas estão mudando,pois parece que softwares proprietários estão acompanhando a queda de preço dos computadores. Com este tipo de metida adotada por algumas das gigantes do mercado de software, será que nós brasileiros vamos mudar a nossa cultura e passar a valorizar o software original e deixar as banquinhas de lado? eu espero que sim, eu até estou pensando em comprar uma licença :-), e espero que outros seguimentos como DVDs e CDs sigam a mesma linha, pois ai quem sabe o Brasil deixa de ser visto como um dos países que mais pirateia produtos no mundo, já que muita vezes relacionamos esta prática com alto valor cobrado por estes produtos.

Fontes: http://idgnow.uol.com.br/computacao_pessoal/2008/07/01/motivada-por-promocao-microsoft-corta-precos-do-vista-e-office-2007/

http://www1.folha.uol.com.br/folha/informatica/ult124u21506.shtml

Windows Vista, Sql Server e Office 2007 Updates e a Tecnologia 3G

Olá,

meu nome é Olavo Alexandrino trabalho como Engenheiro de Software e estarei aqui blogando sobre tecnologia à convite do meu ex-colega de trabalho David Barros.

Pois é, recentemente decidi adotar as últimas versões dos softwares da Microsoft para o meu laptop. A escolha foi mais um desafio do que a mais viável ou aceitável opção.

Então veio a primeira questão:

"1Gb de memória RAM é o suficiente para usar o Windows Vista?"

Claro que não! Tive que fazer diversas customizações e a primeira foi desabilitar o Tema Aero do Vista!

Apesar de muito legal, esse tema consome uma memória absurda, até para PC's com 2Gb de ram você pode notar.

Como é que se tem coragem de vender PCs com o Windows Vista e com 512Mb de RAM???!!

Vocês já viram não é?

O engraçado que no mesmo laptop eu tenho uma partição dedicada ao Ubuntu que tem efeitos semelhantes e roda com uma performance extremamente superior!

Por quê será?

E depois pra instalar o Visual Studio 2005 e SQL Server Express?

Nossa! Arrependo-me até hoje não ter salvo o print-screen da operação. Foram mais, acredite, de 1GB de updates.

Se não me engano toda terça a Microsoft lança updates do Vista. Para minha surpresa um novo super pacote de atualização veio
recentemente.

Juntando o Windows Vista, o SQL Server e o Office totalizaram quase que 500 Mb de downloads! Vide na imagem abaixo!

Super pacotes de atualização

Outra coisa muito interessante é que nosso velho Ubuntu vem num CD! E esse update aí é bem próximo de um tamanho dum CD.

Evidentemente que temos quase que diariamente updates no Ubuntu, é só deixar lá sem atualizar durante uma semana que podemos ver a porção de updates que são sugeridos.

O ponto negativo que eu vejo nos do Windows é que pelo menos num dos ítens mais perceptíveis para o usuário: a Performance, eu não percebi melhoria alguma em nenhum update.

Ei! E vocês que estão animados com a tecnologia 3G?!!

Legal não é?

Agora você todo animado vai ao shoping e assina um plano como o da operadora Claro que limita a 1GB de download mensal ao preço de R$ 99,00 reais e ainda usa o Windows Vista?!!!

O que acontece? Você deixa seu laptop ligado! Vai ali, dá uma saidinha, e deixa seu Super Windows Vista com o Windows Update ligado pra atualizações automáticas. Quando você volta, seu Windows já está "up-to-date"!

Agora a sua conexão está com a velocidade menor que aquela porcaria de internet discada que você usada há vários anos . Você preocupado, liga para a operadora que lhe ofereceu aquele serviço de "última geração" e o operador lhe diz que você ultrapassou a franquia de tráfego!

Você fica sem entender e pensa:

"E eu pensei que aquela porcaria de Velox (Telemá) era ruim !!!! Que merda!"Um abraço, meu amigo!

Como diria o velho ditado:

"Nem tudo que reluz é ouro!"

Tem coisas, que só a Microsoft e a Telefonia móvel brasileira faz pra você !!

 

©2007 - 2010 Escovando Bytes | Template Blue by TNB