Você pode ver as 2000 maiores empresas do mundo, entre elas algumas brasileiras, no caso a mais bem colocada é a Petrobrás ocupando o número 50 no ranking do Forbes, ainda atrás de até várias empresas de tecnologias norte-americanas.
Neste artigo o autor mostra vários pontos importantes sobre como balancear carga de processamento entre tomcats, o que pode valer para JBoss também. O interessante que há uma tabela comparativa sobre “Balanceamento de Dados” e “Clustering”, que esclarece alguns conceitos triviais sobre estes conceitos. Boa leiutra.
Em Delphi(TM) havia alguns truques via RTTI(Run Time Type Information) que sem ser programadores paranormais com truques do tipo “limpe 50 TEdits com 3 linhas de código” animavamos todo o time de desenvolvimento. Com Java, RTTI tem um nome mais bonito Reflection.
O saudosismo deste post, deve-se a lembrança de práticas similares, no caso, eu precisava criar uma classe BeanToProperties e PropertiesToBean, para que fosse possível ler um properties e todas sua chaves fossem passadas para atributos de um bean, claro com atributos com memso nome (já que não há um decoador “de para”), e vice-versa. Acho que até pode existir isso num Apache Commons da vida, mas como eu estou passando grande parte dos meus dias em aeroportos e apertado nos assentos da Tam e Grande Onibus Lotado, onde há pouca internet disponível, então resolvi criar um recurso destes para finalizar uma atividade no projeto, veja então o resultado.
Primeiro, eu preciso saber se o atributo da Classe em questão é equivalente a uma chave do Properties que tenho carregado, veja então:
public static java.util.List getFieldsFromClass(
Properties props) {
java.lang.reflect.Field[] methods = new ClientProperties()
.getClass().getDeclaredFields();
ArrayList< ?> a = Collections.list(props.propertyNames());
java.util.ArrayList fieldList = new java.util.ArrayList();
for (java.lang.reflect.Field m : methods) { if (a.contains(m.getName())) {
fieldList.add(m);
} }
return fieldList;
}
Em seguida, preciso obter os dados das chaves e atribuir aos atributos usando os métodos gets, para isso, veja o método:
ClientProperties bean = new ClientProperties();
List fields = getFieldsFromClass(props);
for (Field f : fields) {
try {
String methodName = “set”
+ f.getName().substring(0, 1).toUpperCase()
+ f.getName().substring(1, f.getName().length());
Com isso, o objeto “bean” irá executar para a propriedade core o mesmo que: bean.setCore(prop.getValue(”core”)); , só que se eu tiver 58 propriedades, este método me economiza um super tempo!
Espero que esta dica ajude, ela está aqui com certeza para me ajudar, caso amanha eu esqueça como já fiz isto, mais ou menos como quase tudo que há em nível de códigos nesse blog. Até a próxima.
JMX é de fato uma das APIs mais notáveis presentes em Java, alguns servidores de Aplicações comerciais só vieram a implementar tais recursos somente a poucas anos atrás. No caso do JBoss, todo o MicroKernel foi concebido em torno desta tecnologia, o que torna mais simples a criação de ferramentas de monitoração, controle, monitores transacionais e até os profilers.
Como exemplo de invocação de chamadas JMX diretamente via código Java, veja a seguinte porção de código:
Hashtable environment = new Hashtable();
environment.put(Context.INITIAL_CONTEXT_FACTORY, “org.jnp.interfaces.NamingContextFactory”);
environment.put(Context.URL_PKG_PREFIXES, “org.jboss.naming:org.jnp.interfaces”);
environment.put(Context.PROVIDER_URL, “jnp://127.0.0.1:1099″); // remote machine IP
InitialContext ic = new InitialContext(environment);
RMIAdaptor server = (RMIAdaptor) ic.lookup(”jmx/invoker/RMIAdaptor”);
ObjectName name = new ObjectName(”jboss.system:type=ServerConfig”);
System.out.println(”ServerTempDir=”+server.getAttribute(name, “ServerTempDir”));
O código imprime o valor da propriedade ServerTemp que pode ser obtida facilmente através do JMX-Console num browser qualquer, qualquer outra propriedade do ServerConfig que está dentro do domínio jboss.system poderia ser obtida através do contexto JMX obtido via JNDI (RMIAdaptor) .
Alterações podem ser solicitadas também, isto também é possível também de forma programática.
Aguardem o que está por vim de interessante o novo JBoss Micro-Container.
Aqui os primeiros screenshots do JBoss Profiler 2.0, em breve o time deverá publicar o download do primeiro release do JBoss Profiler2.0, mas vejam aqui os screenshots:
JBoss 5 - As novidades da versão penta para a Comunidade Livre!
Foi aprovada! Então vejo vocês no dia 17, 18 e 19 de Abril na PUC em Porto Alegre, vai ser minha terceira vez neste evento, desde que eu fui na primeira vez, deixaram de fazer na PUC, e este ano está de volta, o que significará mais pessoas. O FISL é considerado como um dos maiores e mais importantes eventos de Software Livre do mundo, sendo assim, se você puder: Prestigi-o!
Nesta palestra vamos abordar as novidades do JBoss5, assim como as questoes de Micro-Container, novo Console, Plugins, e o JBoss Profiler 2.0.
Vejo vocês em Porto Alegre, e de noite no restaurante Mercado Del Puerto, comendo um Entrecot ao molho de vinho
Minha correria de final quarter e ano fiscal na empresa, o meu provedor que dificulta manter meu site no ar, me impediram de blogar sobre o JBossWorld, evento que estive último fevereiro, mas há blogueiros como o Guilherme da Globo.COM, que fizeram uma cobertura fantástica em seu Blog, recomendo que todos leiam.
Bom, meu ano começa para valer agora, como alguns dos focos deste ano é consolidar as duas plataformas novas da JBoss: O SOA Platform, que está a um tempo sendo bastante divulgada aqui e em vários outros blogs, e o JBoss Communications Platform, este último deve dar o que falar para o nosso mercado que pede e exige bastante interatividade nas aplicações voltadas para o mercado de voz sobre IP e Telecom de modo geral. Logo, alguns posts sobre estas tecnologia que acima de qualquer outra coisas é: 100% Opensource, e claro, sua contribuição seria extremamente bem-vinda, veja mais em: http://labs.jboss.org/mobicents ou no site do projeto MobiCents, projeto adquirido ano passado pela Red Hat para fazer parte do leque de soluções JBoss.
Voltando a vida normal após o susto, e ter perdido várias implementações de ESB e de Seam, resolvi concentrar em algo novo para distrair, o esbgen module.
Quando você baixa o JBoss ESB, talvez pelos conceitos, ou por certa complexidade nas inúmeras possibilidades de protocolos, ações e etc, nos perdemos por onde começar quando queremos criar um projeto ESB. Sendo assim, inspirado em várias ferramentas similares, criei um módulo para o ESB que é um assistente para criação de projetos usando um utilitário de linha de comando. Veja os exemplos aqui:
Figura 1- Criando o Projeto inicial.
Projeto ESB com todos os arquivos necessários criados. Se você trabalhar com os QuickStarts, você terá toda a estrutura para deploy e testes de seus projetos.
Se você ficou curioso, veja o design e estágio atual da ferramenta clicando aqui.
Desculpem os RSS Readers! Desculpem a revolta, mas é revoltante algumas coisas em nossas vidas. Vocês que estudaram como desgraçados, comeram em bandeijão, pegaram onibus lotados, daqueles que é tanta gente que você pode dormir em pé que as Leis de Newton não farão efeito!
Você orgulha seus pais e a si mesmo, vai, estuda engenharia, estuda seja lá o que ou até onde for, e nesse caso, não adianta nada, você ainda vai ganhar mal, e você sabe o por quê? Porque você é um burro e honesto, que ao invés de roubar, você resolveu estudar…. Você é um burro!
Quanto é sua hora de trabalho? 100, 200, 300 reais? E você se acha o cara?! Você é um bosta, assim como eu, pois veja: Em 1 minuto eu fui assaltado, e me levaram:
Mochila com vários acessórios(do JavaOne para os nerds de plantão): 200,00
Isto totaliza cerca de 8.500 Reais, em cerca de 1 minuto de trabalho por parte dos grandes profissionais de mercado de São Paulo, se você multiplicar por 60(1 hora), a hora deles então custa: 510.000 Reais. E você se achando seu bosta!
O pior, é você ir fazer um BO (Boletim de Otário), e os servidores públicos no momento da sua descrição do fato, vê a funcionária fumar a merda de um FREE vagabundo, e entre uma pergunta e outra, baforar uma nuvem de fumaça na sua cara! E no final, depois de várias piadinhas, do tipo: “Os caras fizeram a feira com você”, tu pegas seus míseros papéis e começa a rezar para o próximo dia no PoupaTempo, onde 2 horas na fila consegue-se apenas comprando lugares na mesma…
Este é um desabafo de um otário como eu, que ama a merda desse país, que desde 1999 morando em São Paulo, nunca havia presenciado nada de violento, e eis que tudo veio num pacote único, o que nos deixa apenas revoltados, frustrados, sem ação….
E ai como descedente de Judeus que droga eu fui fazer na vida… Estudar, os caras ganham mais que os bostas da TV Brasileira! Tá vendo? Somos uns bostas! E eles são os Mickeys, só nos resta ser os “patetas”.
Desculpem o desabafo!
Edgar
ps- Local do Assalto: Vila Olimpia, em frente ao Ceasar Park. Atenção: Roubos na Berrini são frequentes em São Paulo, como as empresas de TI ficam grande parte nessa região cuidado nunca é pouco.
Calma, isso nada tem a ver com a linguagem Ruby, uma linguagem que respeito, mas que pouco usei na vida, e sim apenas fazer uma pequena homenagem a este rítimo que quem vai a Belém e não faz questão de ser fechado e se permite apreciar o que é local acaba no mínimo respeitando. Eu como um paraense apaixonado e saudoso da minha terra, tinha que aproveitar esse tema da minha área para fazer essa “brincadeira”. Ora, o Rio tem funk, vários lugares do interior de SP, Goiás, Minas tem o Sertanejo, o sul tem o vanerão, o nordeste tem o forró, o Amazonas tem o Boi, o Maranhão tem Reggae da jamaica brasileira, o Pará tem o que é conhecido como Techno brega, um ritimo engraçado, mas que mobiliza pessoas humildes, de posses, cultas outras sem tantas oportunidades, mas que se tornam comum numa festa onde o rítimo seja este, apenas uma homenagem, fruto das mini-férias que tive passando com a minha familia e mulher em Belém .
Lyoto Machida, filho do lendário e respeitado mundialmente professor de Karatê Machida de Belém, é um paraense que vai longe veja a última luta dele no UFC.
Quando ele fala de Belém, claro que o orgulho vem todo a tona. Parabéns Lyoto!
O JBoss Seam de fato é um framework que enche os olhos de qualquer um, mesmo tendo trabalhando em geradores de códigos/aplicações, me rendi ao JBoss Seam desde a primeira vez que o vi, mais precisamente no final de 2006, de lá pra cá, os projetos que trabalhei usavam muito mais questões de integrações do que aplicações de usuários finais. Porém, desde que comecei a avaliar o Seam com um maior cuidado para utilizá-lo como framework JSF por trás do Console do novo JBoss Profiler, percebi que realmente o framework vale muito a pena.Não é pra menos, um time de talentosos desenvolvedores está por trás do Seam, logo, tal resultado já era esperado. Mas chega de papo, e vamos a algumas dicas interessantes:
Forçando o Login para Determinadas Páginas JSF
Muitas vezes você quer que determinadas Páginas sejam protegidas por Login, para resolver isso, o Seam possui todo um framework de segurança baseado em JAAS, e para ativar tal requisito para uma determinada página, basta adicionar a seguinte string no arquivo pages.xml :
Adicionando novas Consultas baseadas na Extensão do EntityQuery
Quando você extende a classe EntityQuery você tem acesso a vários componentens que o Seam injeta dinamicamente para nós, entre eles o EntityManager do JPA, que pemite que criemos Queries dinamicas, veja no exemplo o método que adicionei em uma das classes que extende o EntityQuery:
Implementando uma Autenticação no Seam e salvando dados no Contexto
Imagine que seus dados de usuários serão buscados via JPA, o exemplo a seguir mostra o Autenticator em ação, que é um SessionBean que o Seam executa toda a vez que a Aplicação precisa autenticar alguém. O Autenticator é um recurso que também faz parte do Seam. (No exemplo abaixo não há encriptação de senha, por favor leve isso em consideração no mundo real):
(String.format("We allow the user %s request a Travel",
employee.getName()));
}
return ok;
}
}
EntityListeners nossos! E por que não?
Mesmo com o suporte a Inteceptors do Seam, não faz mal criarmos os nossos algumas vezes, eis então um exemplo de inteceptação de eventos
na EntityClass: TravelRequest, onde antes de persistirmos uma informação, podemos promover uma avaliação e tomar alguma ação antes da ação ser executada,
os famosos Eventos, presentes em frameworks de persistências muito antigos como o TFieldDataLink no Borland Delphi desde 1995. Veja o exemplo:
O Eclipse em termos de mercado ainda é a IDE Java mais usada
Esse foi um dos argumentos para o JBoss Studio ser baseado nele. Não cabe a mim maiores argumentações, até porque ainda uso NetBeans, e para quem pretende extender uma IDE, (in)felizmente o NetBeans ainda é extremamente mais simples.
Perdendo algum tempo tentando fazer as coisas de forma "correta", usando as Interfaces: ICompilationUnit, IType, IJavaModel, IJavaElement e todos os "I's" que você puder imaginar, resolvi usar a famosa POW (Programação Orientada a Workarouds). Workaround é uma forma bonita que foi cirada para camuflar o que conhecemos como : Gambiarra!
No JBoss Studio, para quem desenvolve com o JBoss Seam, quando você gera um Entity, o SeamGen gera uma página JSP com tags JSF para Listagem e Edição, a itenção desta extensão que estou trabalhando nas horas vagas (pouquissimas recentemente), visa atualizar via o DiffEditor do eclipse os campos do formulário e da listagem com base em novos atributos da sua Entity Class. Sendo assim, você irá clicar com o botão direita no Package Explorer e ai você terá a opção "Update JSPs based on this Entity...".
Basicamente este plugin é um PopupAction que trata as invocação do popup sobre um .java da seguinte forma:
E eu confesso que tentei usar vários recursos, entre eles: IType para capturar o IClassFile , para saber qual o .class respectivo daquele respectivo .java...E desisti de tanto NPEs (NullPointerExceptions) que levei na cara, e ai veio o seguinte "gambiarratico", todavia funcional método tabajara:
Eu tenho certeza que isso é quase um assassinato ao modelo RCP, JDT do Eclipse, porém, para o que eu precisava, que é a droga do .class, isso funcionou bem mais simples e melhor que as tão belas e "fundamentadas" classes do Eclipse. É por essas e outras, que ainda tenho falta do NetBeans.
Abraços e aproveitando: Feliz 2008 , Saúde! O resto é todo lucro.
Bom, desenvolvendo com JBoss Studio e JBoss Seam, ainda me faz muita falta as mágicas que o Greenbox nos dava na palma da mão, por isso, estou estruturando algumas extensões para proporcionar maior produtividade agora criando agora plugins para Eclipse.
O exemplo a seguir me ajuda a ler qualquer .class Java para poder usar Reflection, obrigado Edson Tirelli, pela dica simplificada de capturar isto, segue aqui a dica:
Estes dias tivemos que realizar uma prova de conceito se o DWR rodava no JBoss Portal. A minha primeira impressão era que seria possível, mas em primeira instância a referência aos JavaScripts deveria ser feita nos templates, porém devido a flexibilidade no JBP toda referência fica nas próprias Páginas enviadas para o cliente pelo o Portlet.