20 junho 2012

JBoss 7.1.1 and CXF WS Client

JBoss 7.1.1 has a slightly small bug that prevents one to use a WS Client (implemented on JBoss with Apache CXF). This issue has already been reported to the JBoss WS component and fixed on JBoss EAP 6.0.0 ER 5 (see this specific issue ticket).

This is the stack trace you may see on your server.log:


Caused by: java.lang.ClassNotFoundException: org.springframework.beans.BeansException from [Module "org.apache.cxf:main" from local module loader @15cda3f (roots: /opt/dev/servers/jboss-as-7.1.1.Final/modules)]
  at org.jboss.modules.ModuleClassLoader.findClass(ModuleClassLoader.java:190)
  at org.jboss.modules.ConcurrentClassLoader.performLoadClassUnchecked(ConcurrentClassLoader.java:468)
  at org.jboss.modules.ConcurrentClassLoader.performLoadClassChecked(ConcurrentClassLoader.java:456)
  at org.jboss.modules.ConcurrentClassLoader.performLoadClassChecked(ConcurrentClassLoader.java:423)
  at org.jboss.modules.ConcurrentClassLoader.performLoadClass(ConcurrentClassLoader.java:398)
  at org.jboss.modules.ConcurrentClassLoader.loadClass(ConcurrentClassLoader.java:120)
  ... 96 more


If you have JBoss EAP and a license, just update it. But if you are on JBoss 7.1.1, you have two options to workaround this problem:

  1. One is updating JBoss WS to the upcoming 4.1.0 release (still in beta and it seems it has not been released publicly).
  2. Your best option is to add a Spring module to your JBoss instance and then add a dependency on Spring to the CXF module:

How to add a Spring module to JBoss AS 7?

First thing to do is to choose the best version of Spring. Prefer the latest one (in the time of this writing, 3.1.1). But if your application is using 3.0.x, pick the latest version of this branch.
  1. On the jboss-as-7.1.1-Final folder, create this path:
    • modules/org/springframework/spring/main
      • on Unix, you can do this using $ mkdir -p <path>
  2. Add the following module.xml to this newly created folder
  3. Download these JARs and add them to this  newly created folder
  4. Open this file
    • jboss-as-7.1.1-Final/modules/org/apache/cxf/main/module.xml
  5. At the end of this file, make sure you have this module dependency:
    • <module name="org.springframework.spring" />
Restart your application server.

19 junho 2012

Issue with JBoss and Camel

If you are like me and are trying to run Apache Camel on JBoss 7.1.1, you may face an issue related to this exception:
Error description: You receive a stacktrace with an inner exception
on the form below.
Caused by: java.lang.NullPointerException
at com.sun.xml.bind.v2.runtime.ClassBeanInfoImpl.checkOverrideProperties(ClassBeanInfoImpl.java:205)
at com.sun.xml.bind.v2.runtime.ClassBeanInfoImpl.<init>(ClassBeanInfoImpl.java:186)
at com.sun.xml.bind.v2.runtime.JAXBContextImpl.getOrCreate(JAXBContextImpl.java:509)
at com.sun.xml.bind.v2.runtime.JAXBContextImpl.getOrCreate(JAXBContextImpl.java:528)
at com.sun.xml.bind.v2.runtime.property.ArrayReferenceNodeProperty.<init>(ArrayReferenceNodeProperty.java:87)
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
[ ... and a looong intermediary stack trace removed ... The stacktrace
ends with: ]
at javax.xml.bind.ContextFinder.newInstance(ContextFinder.java:128)
at javax.xml.bind.ContextFinder.find(ContextFinder.java:277)
at javax.xml.bind.JAXBContext.newInstance(JAXBContext.java:372)
at javax.xml.bind.JAXBContext.newInstance(JAXBContext.java:337)
at org.apache.camel.spring.handler.CamelNamespaceHandler.createJaxbContext
This happens because there's a bug on JAXB 2.2.4, the version used by default on JBoss 7.1.1.
I honestly don't know if this also happens to any other JBoss 7 versions, but this is a bug only with JAXB 2.2.4, so if the version you have has this JAXB version, you also have this problem.

To fix this, follow these instructions:

  1. Download the new version of JAXB (from Maven Repo)
    1. jaxb-impl-2.2.5-2
    2. jaxb-xjc-2.2.5-2
  2. Put these files on this JBoss folder:
    1. jboss-as-7.1.1.Final/modules/com/sun/xml/bind/main
  3. Open the file module.xml
    1. replace the old version (2.2.4) with the new one (2.2.5-2)
  4. Done!
Now get back to work!

PS: part of this solution (updating JAXB) is thanks to this thread.

10 abril 2012

Apache Maven is awesome


Spread these clever words of Mr. Dos Esquis. Build doesn't break, and you get enough time to grab a beer... :D
So please RETWEET!


Disclaimer: I am an ASF volunteer (not committer, but contributor), and I do like Maven :P

22 março 2012

CSS fix for Internet Explorer fieldset/legend background bug


fieldset {
margin-top: 10px;
position: relative;
}
fieldset legend {
line-height: 1.5em;
position: relative;
top: -1.5em;
}

24 setembro 2011

Equilíbrio Financeiro e o Princípio 80/20

Esta é uma tradução livre do artigo "Financial Balance and the 80/20 Rule" que nos faz pensar e refletir a respeito de quanto gastamos, em termos financeiros e de tempo, com coisas desnecessárias no nosso dia-a-dia.

Uma das coisas mais fascinantes que descobri foi a regra do 80/20, também conhecida como Princípio de Pareto. Ela significa que 80% dos efeitos vem de 20% das causas.

Talvez seja mais fácil explicar este princípio dando exemplos de como ele aparece na minha vida, dia após dia, e como posso usar meu entendimento sobre ele a meu favor.

80% da conta do supermercado vem de 20% dos itens comprados. Seu eu pegar uma conta típica e olhar apenas para os itens mais caros, estes terão o custo de 80% do valor total da compra.

Ou seja, se eu quiser economizar dinheiro no supermercado, eu devo controlar estes itens. Este produto caro é realmente necessário na minha lista?

Você não economiza dinheiro reduzindo itens que custam menos de R$ 1,00. Você economiza dinheiro deixando de comprar (ou substituindo por um equivalente mais abrato) os itens acima de R$ 10,00.

Uso somente 20% das roupas que tenho para me vestir em 80% do tempo. Eu geralmente rotaciono por 5 calças/bermudas e mais ou menos 8 camisetas, enquanto alguma peça não ficar totalmente desgastada. Se eu observar meu guarda-roupas, possuo muito mais roupas que isso.

Então por que comprar? Por que possuir mais? 8 camisetas e 5 calças/bermudas me dão 40 combinações de vestimentas - e mais se eu combinar duas camisetas num estilo "dupla-camada".

Ou seja, eu não compro roupa a não ser que estejam em liquidação. Se de qualquer forma eu pegar uma nova peça de roupa, esta irá aguardar para entrar na lista de roupas mais usadas até o dia que uma outra peça for jogada fora.

80% do meu tempo em casa é gasto em somente 20% do espaço. Pense a respeito. Quanto tempo você gasta na sua cama? Quanto tempo você gasta na sua poltrona ou cadeira favorita? Para a maioria de nós, estes lugares gastam a maior parte do nosso tempo.

Eu gasto a maior parte do meu tempo em casa sentado no escritório, dormindo na minha cama, ou no sofá da sala. Gasto pouquíssimo tempo nos outros cantos da casa.

A única razão para ter uma casa maior é para ter mais espaço para guardar coisas.

80% do meu lazer vem de 20% da minha coleção. Eu costumo reler meus livros favoritos, ouvir novamente minhas músicas prediletas, ou assistir outra vez aos meus filmes e séries de TV favoritos.

Ter percebido isso me fez buscar formas gratuitas ou mais baratas de me expôr a novas mídias. Prefiro ir à biblioteca, assistir a vídeos online ou a ler capítulos grátis de livros digitais nos quais estou interessado.

Desta forma, não estou gastando dinheiro em algo que não está se conectando profundamente a mim.

Colocando de outra forma, a realidade do meu comportamento me leva à frugalidade. Eu só preciso sentar, olhar para o que estou fazendo, e tomar decisões financeiras de acordo.
Contato

Email:bruno.borges(at)gmail.com

LinkedIn: www.linkedin.com/in/brunocborges
Twitter: www.twitter.com/brunoborges
Comprei e Não Vou
Rio de Janeiro, RJ Brasil
Oracle
São Paulo, SP Brasil