ResourceBundle

7 respostas
M

Se eu alterar um arquivo .properties eu preciso reiniciar o servidor de net pra reconhecer as alterações ou as alterações são reconhecidas em tempo de execucção?

7 Respostas

saoj

Precisa reiniciar.

ResourceBundle é muito bom para aplicativos, que vc pode reiniciar sem maiores dores de cabeça.

Para websites, eu tive que fazer o meu próprio esquema de i18n, sem usar o padrão da Sun, pois quero fazer mudanças no properites sem restarar o servidor.

Veja aqui:

http://www.guj.com.br/posts/list/16241.java

wbsouza

Há um motivo por que a solução de internacionalização usando bundles seja desta forma: evitar I/O o tempo todo e deixar as coisas simples.

Em um sistema de produção, geralmente vc cria o seu pacote war ou ear e faz o deploy no servidor de produção. Em tempo de desenvolvimento se vc usar um container que suporte hot-deploy nao terá problemas em mudar os arquivos properties e ter o resultado após o deploy.

[]s, Welington B. Souza

saoj

Fala Wellington!!!

Mas é claro que eu evito I/O usando um timestamp, ou seja, eu só checo se a versão foi alterado em disco de tantos em tantos segundos ou minutos. :wink:

Como assim hot-deploy !? Se vc quer mudar um arquivo properties que está dentro de um war ou ear, vc vai ter que restartar tudo para sua alteração fazer efeito. O ResourceBundle é bastante burro nesse sentido.

A situação é simples: Quero alterar a palavra Hi para Hello sem que nada aconteça com o meu site que está no ar. Como faço com a solução padrão da Sun de i18n ???

wbsouza

OK, vc nao fica fazendo alteração o tempo todo com o site no ar certo!
Se tiver fazendo alterações com o site em produção no ar deve ter algo errado :roll:

Quando tiver desenvolvendo, se vc quiser que as alterações apareçam na sua máquina a medida que o seu bundle for alterado, basta fazer um deploy da aplicação inteira. Parece meio burro este processo, mas funciona e não te toma quase nada de tempo.

A respeito de performance, vc pode até dar um jeitinho, mas está fazendo uma aplicação fora do padrão :?

[]s, Welington B. Souza

wbsouza

De maneira simplória, o hot-deploy consiste em pegar um pacote (ear, war, etc) e colocar no diretório do seu AppServer e ele irá automaticamente reconhecer que a versão do seu pacote foi alterada, e ele irá “recarregar” a aplicação nova. Assim no próximo request terá suas alterações refletidas.

Alguns Application Servers suportam esta feature, que eu sei o JBoss e o Resin tem estas funcionalidades. Se vc tá usando tomcat, tente o Resin para desenvolvimento. É extremamente rápido, suporta hot-deploy e de quebra vc já testa se a sua aplicação está realmente independente de fornecedor.

[]s, Welington B. Souza

saoj

Só me tira uma dúvida: o web container vai restartar ou não com um hot-deploy, isto é, as seções vão ser perdidas ou não ???

Na minha cabeça não há como vc forçar um reload do ResourceBundle sem reiniciar a porra toda, mas posso estar errado.

Fugir do padrão é legal !!! :slight_smile: Fazer tudo da maneira que os outros convencionaram é chato. Já escutou aquela música do Frank Sinatra, My Way ???

É só tomar cuidado para quando fugir do padrão fazer a coisa bem feita e bem fácil para um outro profissional entender e usar. :wink:

E a galera de design e conteúdo aqui adora colocar novos textos e alterar os já existentes a todo momento. Precisar restartar o site inteiro porque eu quero mudar Hello para Hi não faz sentido!

wbsouza

As seções sao perdidas sim, mas nao eh necessario restartar o container, basta o usuario fazer um novo login. E o pessoal de design tem que mexer no codigo nas maquinas de desenvolvimento e em ambiente de testes/homologação. O deploy nos servidores de producao deve ser feito em horario menos acessado para evitar problemas, pois mesmo nao precisando restartar o container, como eu disse, as seçoes serao perdidas.

[]s, Welington B. Souza

Criado 12 de fevereiro de 2005
Ultima resposta 14 de fev. de 2005
Respostas 7
Participantes 3