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:

<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:


<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.

terça-feira, 19 de fevereiro de 2008

Utilizando P6Spy JBoss

O P6Spy é uma ferramenta que permite realizar o monitoramento de queries realizadas utilizando JPA, Hibernate, etc. Sua utilização é bem simples para o JBoss, bastando apenas poucas configurações.

Copie o arquivo p6spy.jar para o diretório lib de sua configuração do JBoss:
cp p6spy.jar $JBOSS_HOME/server/sua_configuracao/lib

Copie o arquivo spy.properties para o diretório conf referente a sua configuração do JBoss:
cp spy.properties $JBOSS_HOME/server/sua_configuracao/conf

Edite o arquivo spy.properties para utilizar o driver jdbc referente ao banco de dados a ser utilizado, no meu caso, irei utilizar MySQL, entao irei utilizar a configuração:

# mysql Connector/J driver
realdriver=com.mysql.jdbc.Driver

Configure a propriedade logfile informando o arquivo onde será gravado os logs do P6Spy, no meu caso irei utilizar /tmp/spy.log

logfile = /tmp/spy.log

Edite o arquivo de configuração do seu DataSource no mudando o atributo driver-class para utilizar o P6Spy:
com.p6spy.engine.spy.P6SpyDriver

Pronto, com isso o arquivo spy.log receberá as queries executadas em seu sistema.

Referencias:
http://www.p6spy.com/

Encoding MySQL para UTF-8

Basta alterar o arquivo my.cnf da seguinte forma:
character-set-server=utf8
default-collation=utf8_unicode_ci

ou logo após se conectar utilizar o comando:
SET NAMES utf8