Estou aproveitando a noite para colocar alguns posts em dia... obs.: Sport 2x0 Corinthians - Sport bate Corinthians e leva Copa do Brasil pela 1ª vez...
Em um dos dias de consultoria, retornei ao escritório para conversar com o Edgar sobre um dos projetos. Ao chegar, o vi muito empolgado com REST - (JSR 311: JAX-RS: The JavaTM API for RESTful Web Services), que está se tornando cada vez mais popular como alternativa para arquiteturas baseadas em SOAP.
É uma spec que tem por objetivo disponibilizar uma API em Java para o rápido desenvolvimento de REST ful WebServices totalmente baseada em anotações (Java 5).
No fundo, a explicação mais básica para o objetivo da API é uma forma rápida de desenvolver um retorno (que pode ser um XML, Texto, etc) sem precisar saber de Servlets ou JAX-WS, por exemplo... :) ... de forma padronizada. O que torna o desenvolvimento muito produtivo.
Atualmente para implementar REST em Java acaba sendo um pouco sofrível, e esta JSR veio para facilitar e agilizar nossa vida.
Aproveitem para ver um mini-tutorial de fácil entendimento sobre JBoss Resteasy feito pelo Edgar.
Satisfaction does not come with achievement, but with effort.
Full effort is full victory.
Mohandas Gandhi
quarta-feira, 11 de junho de 2008
JBoss Messaging 2.0 Alpha
Estou meio atrasado com o post sobre o JBoss Messaging 2.0 Alpha, mas vale a intenção :).
Dia 02/06 foi lançada a mais nova versão do JBoss Messaging, a qual tem foco em performance e o principal objetivo é ser a número 1 em providers de mensageria open-source.
Abaixo algumas das principais características:
- Arquitetura 100% baseada em POJOs
- Pode ser executado fora do JBoss AS, ou seja, independente do JBoss AS... não precisa ter o Application Server de pé.
- Alta performance utilizando Journal, podendo ser executado via Java NIO ou Linux Asynchronous IO
- Utilização de Apache MINA
Veja algumas comparações com outros providers, incluindo o JBossMQ e ActiveMQ:
http://www.jboss.org/file-access/default/members/jbossmessaging/freezone/docs/userguide-2.0.0.alpha1/html/performance.html#performance.results
Referências:
User Guide: http://www.jboss.org/file-access/default/members/jbossmessaging/freezone/docs/userguide-2.0.0.alpha1/html/index.html
Tim Fox's blog: http://jbossfox.blogspot.com/2008/03/high-performance-persistence-with-jboss.html
Clebert Suconic's Blog: http://clebertsuconic.blogspot.com/2008/05/speeding-up-io-on-files.html
Dia 02/06 foi lançada a mais nova versão do JBoss Messaging, a qual tem foco em performance e o principal objetivo é ser a número 1 em providers de mensageria open-source.
Abaixo algumas das principais características:
- Arquitetura 100% baseada em POJOs
- Pode ser executado fora do JBoss AS, ou seja, independente do JBoss AS... não precisa ter o Application Server de pé.
- Alta performance utilizando Journal, podendo ser executado via Java NIO ou Linux Asynchronous IO
- Utilização de Apache MINA
Veja algumas comparações com outros providers, incluindo o JBossMQ e ActiveMQ:
http://www.jboss.org/file-access/default/members/jbossmessaging/freezone/docs/userguide-2.0.0.alpha1/html/performance.html#performance.results
Referências:
User Guide: http://www.jboss.org/file-access/default/members/jbossmessaging/freezone/docs/userguide-2.0.0.alpha1/html/index.html
Tim Fox's blog: http://jbossfox.blogspot.com/2008/03/high-performance-persistence-with-jboss.html
Clebert Suconic's Blog: http://clebertsuconic.blogspot.com/2008/05/speeding-up-io-on-files.html
quinta-feira, 20 de março de 2008
Alterando Portas do JBoss
Um dos maiores problemas que muitos administradores JBoss passam é como subir mais de uma configuração na mesma máquina. Há algumas formas de realizar isto, uma delas é criar um IP virtual e subir o JBoss com o parâmetro -b.
Exemplo:
./run.sh -c <configuracao> -b <host>
Outra forma é subir as duas configurações trocando as portas comuns para evitar conflitos. A forma mais fácil de trocar as portas é alterar o arquivo conf/jboss-service.xml descomentando o MBean org.jboss.services.binding.ServiceBindingManager e alterando o atributo ServerName para ports-02 ou ports-03, ou ports-n.
Exemplo:
A instalação do JBoss AS já disponibiliza um arquivo exemplo para o binding das portas, o ideal é copia-lo para o diretório conf da sua configuração customizando conforme seja necessário. Exemplo: /server/conf/port-bindings.xml
ou copia-lo no diretório server adicionando todas as possibilidades de binding de portas para cada configuração do JBoss. Exemplo:
/server/port-bindings.xml
Referências:
http://wiki.jboss.org/wiki/Wiki.jsp?page=JBossRunParameters
http://www.jboss.org/wiki/Wiki.jsp?page=UsingJBossBehindAFirewall
http://wiki.jboss.org/wiki/Wiki.jsp?page=ConfiguringMultipleJBossInstancesOnOneMachine
http://wiki.jboss.org/wiki/Wiki.jsp?page=JBossDTDs
Exemplo:
./run.sh -c <configuracao> -b <host>
Outra forma é subir as duas configurações trocando as portas comuns para evitar conflitos. A forma mais fácil de trocar as portas é alterar o arquivo conf/jboss-service.xml descomentando o MBean org.jboss.services.binding.ServiceBindingManager e alterando o atributo ServerName para ports-02 ou ports-03, ou ports-n.
Exemplo:
<mbean code="org.jboss.services.binding.ServiceBindingManager"
name="jboss.system:service=ServiceBindingManager">
<attribute name="ServerName">ports-02</attribute>
<attribute name="StoreURL">${jboss.home.url}/docs/examples/binding-manager/sample-bindings.xml</attribute>
<attribute name="StoreFactoryClassName">
org.jboss.services.binding.XMLServicesStoreFactory
</attribute>
</mbean>
A instalação do JBoss AS já disponibiliza um arquivo exemplo para o binding das portas, o ideal é copia-lo para o diretório conf da sua configuração customizando conforme seja necessário. Exemplo: /server/conf/port-bindings.xml
ou copia-lo no diretório server adicionando todas as possibilidades de binding de portas para cada configuração do JBoss. Exemplo:
/server/port-bindings.xml
Referências:
http://wiki.jboss.org/wiki/Wiki.jsp?page=JBossRunParameters
http://www.jboss.org/wiki/Wiki.jsp?page=UsingJBossBehindAFirewall
http://wiki.jboss.org/wiki/Wiki.jsp?page=ConfiguringMultipleJBossInstancesOnOneMachine
http://wiki.jboss.org/wiki/Wiki.jsp?page=JBossDTDs
quarta-feira, 5 de março de 2008
De UTF-8 para ISO-8859-1 e vice-versa
Para converter arquivos UTF-8 para ISO-8859-1 e vice-versa no Linux pode-se utilizar o iconv ou o recode.
No Blog do Mitre há bons exemplos do iconv:
Resumindo:
iconv -f utf-8 -t iso-8859-1 arquivo > novo_arquivo
No Blog do Mitre há bons exemplos do iconv:
Resumindo:
iconv -f utf-8 -t iso-8859-1 arquivo > novo_arquivo
sexta-feira, 29 de fevereiro de 2008
JBoss Portal: User Role
Para validar se um usuário possui uma determina Role no JBoss Portal basta fazer o seguinte:
No seu código Java do portlet:
request.isUserInRole("Admin");
Seguindo a jsr-168, as roles utilizadas no método isUserInRole precisam ser declaradas no portlet.xml para serem reconhecidas em um portlet container. Se não for declarado, sempre retornará false. Veja abaixo:
No seu código Java do portlet:
request.isUserInRole("Admin");
Seguindo a jsr-168, as roles utilizadas no método isUserInRole precisam ser declaradas no portlet.xml para serem reconhecidas em um portlet container. Se não for declarado, sempre retornará false. Veja abaixo:
<portlet-app>
...
<portlet>
...
<security-role-ref>
<role-name>Admin</role-name>
</security-role-ref>
...
</portlet>
...
</portlet-app>
Clustering Scheduler
JBoss possui um MBean para agendamento de tarefas chamado Scheduler, o qual muitas pessoas se perguntam sobre sua atuação durante uma configuração em Cluster.
A idéia de uma configuração em cluster seria iniciar a execução do scheduler em apenas um nó (Master Node ) e caso este nó saia do cluster, a execução deve ser iniciada em um outro nó.
Para isso, a configuração do Scheduler deve ser a seguinte:
Referências:
http://www.jboss.com/index.html?module=bb&op=viewtopic&t=128528
http://wiki.jboss.org/wiki/Wiki.jsp?page=HASingletonDeployer
A idéia de uma configuração em cluster seria iniciar a execução do scheduler em apenas um nó (Master Node ) e caso este nó saia do cluster, a execução deve ser iniciada em um outro nó.
Para isso, a configuração do Scheduler deve ser a seguinte:
<mbean code="org.jboss.varia.scheduler.Scheduler"
name="Order:service=Scheduler">
<depends>jboss.ha:service=HASingletonDeployer,type=Barrier</depends>
<attribute name="StartAtStartup">true</attribute>
<attribute name="SchedulableClass">org.jboss.scheduler.OrderUpdateScheduler</attribute>
<attribute name="InitialStartDate">NOW</attribute>
<attribute name="SchedulePeriod">20000</attribute>
<attribute name="InitialRepetitions">-1</attribute>
</mbean>
Referências:
http://www.jboss.com/index.html?module=bb&op=viewtopic&t=128528
http://wiki.jboss.org/wiki/Wiki.jsp?page=HASingletonDeployer
segunda-feira, 25 de fevereiro de 2008
JBoss Portal: Informações importantes
Abaixo irei descrever algumas informações importantes sobre JBoss Portal, a qual todos os desenvolvedores iniciantes de portlets devem se deparar.
Onde obter informações:
http://labs.jboss.com/jbossportal/docs/
FAQ:
http://jboss.org/index.html?module=bb&op=viewforum&f=215
No PortletSwap você consegue baixar alguns exemplos de portlets e temas já prontos para utilização no JBoss Portal:
http://labs.jboss.com/portletswap/downloads/
No site de downloads do JBoss (Portlets) também é possível obter outros portlets (Wiki, Forum e Blog):
http://labs.jboss.com/projects/download/
Ao criar seu portlet, utilize a classe org.jboss.portlet.JBossPortlet ao invés GenericPortlet. Com JBossPortlet você consegue obter informações importantes, como:
protected void doView(JBossRenderRequest request, JBossRenderResponse response) throws PortletException, IOException, UnavailableException {
//o usuário logado
User user = request.getUser();
user.getUserName()
//portlet utilizado
PortalNode node = request.getPortalNode();
node.getName();
//portal node
PortalNode portal = (PortalNode) request.getAttribute("org.jboss.portal.api.PORTAL_NODE");
while (portal.getType() != PortalNode.TYPE_PORTAL) {
portal = portal.getParent();
}
}
entre muitas outras coisas.
Um bom exemplo de uso disso, é a classe TestPortlet que vem junto com os Samples do JBoss Portal, vale a pena dar uma olhada.
Onde obter informações:
http://labs.jboss.com/jbossportal/docs/
FAQ:
http://jboss.org/index.html?module=bb&op=viewforum&f=215
No PortletSwap você consegue baixar alguns exemplos de portlets e temas já prontos para utilização no JBoss Portal:
http://labs.jboss.com/portletswap/downloads/
No site de downloads do JBoss (Portlets) também é possível obter outros portlets (Wiki, Forum e Blog):
http://labs.jboss.com/projects/download/
Ao criar seu portlet, utilize a classe org.jboss.portlet.JBossPortlet ao invés GenericPortlet. Com JBossPortlet você consegue obter informações importantes, como:
protected void doView(JBossRenderRequest request, JBossRenderResponse response) throws PortletException, IOException, UnavailableException {
//o usuário logado
User user = request.getUser();
user.getUserName()
//portlet utilizado
PortalNode node = request.getPortalNode();
node.getName();
//portal node
PortalNode portal = (PortalNode) request.getAttribute("org.jboss.portal.api.PORTAL_NODE");
while (portal.getType() != PortalNode.TYPE_PORTAL) {
portal = portal.getParent();
}
}
entre muitas outras coisas.
Um bom exemplo de uso disso, é a classe TestPortlet que vem junto com os Samples do JBoss Portal, vale a pena dar uma olhada.
Assinar:
Postagens (Atom)