Skip to content

Spring com JBoss 5 – Problema com o Scan de recursos

Agosto 17, 2011

O framework spring possui um mecanismo de scan para a detecção de recursos durante a inicialização do servidor de aplicação. Entrando em mais detalhes, o componente utilizado para este scan assume que os recursos estão em diretórios ou arquivos JAR.
O problema é que, o JBoss, a partir de sua versão 5.0, utiliza o conceito de Virtual File System (VFS) no classpath. Desta forma, ao tentar fazer o scan, o spring acusa erros similares à stack abaixo:

ERROR org.springframework.web.servlet.DispatcherServlet - Context initialization failed org.springframework.beans.factory.BeanDefinitionStoreException:
I/O failure during classpath scanning; nested exception is java.util.zip.ZipException: error in opening zip file  
at org.springframework.context.annotation.ClassPathScanningCandidateComponentProvider.findCandidateComponents(ClassPathScanningCandidateComponentProvider.java:222)

A solução para este problema é fornecida através do framework snowdrop. Através deste, o JBoss disponibiliza uma classe que consegue fazer o scanning segundo a estrutura do VFS.
A biblioteca que contém esta classe é a snowdrop-vfs-XXX.jar, onde deve-se usar a versão 1.1 para spring 3 e a versão 1.0 para spring 2.5. Ainda, o download desta biblioteca pode ser realizado em http://www.jboss.org/snowdrop/downloads, bastanto inclui-la no WEB-INF/lib da aplicação.

Por fim, após incluir esta lib dentro da aplicação, é necessário informar ao spring que é para ser utilizada a classe VFSXmlWebApplicationContext no momento do scan. Para tanto, basta adiconar um context-param no web.xml, conforme listagem abaixo. Ressaltando que a classe informada nesta listagem está contida na lib do snowdrop.


<context-param>
<param-name>contextClass</param-name>
<param-value> org.jboss.spring.vfs.context.VFSXmlWebApplicationContext</param-value>
</context-param>

Qualquer dúvida estou a disposição.
[]’s

From → Uncategorized

2 comentários
  1. Leysson permalink

    Você poderia postar um exemplo de como integrar JBoss 5 + Spring 3.x + DataSource + JPA 1.0 e HIBERNATE. Não consegui fazer o deploy de minha aplicação que esta funcionando perfeitamente nas versões anteriores do JBoss.

Deixe uma Resposta

Preencha os seus detalhes abaixo ou clique num ícone para iniciar sessão:

Logótipo da WordPress.com

Está a comentar usando a sua conta WordPress.com Terminar Sessão / Alterar )

Imagem do Twitter

Está a comentar usando a sua conta Twitter Terminar Sessão / Alterar )

Facebook photo

Está a comentar usando a sua conta Facebook Terminar Sessão / Alterar )

Google+ photo

Está a comentar usando a sua conta Google+ Terminar Sessão / Alterar )

Connecting to %s

Coding Horror

Um prato de informações tecnológicas com uma pitada de conhecimento aleatório.

InfoQ

Um prato de informações tecnológicas com uma pitada de conhecimento aleatório.

JBoss Developer Recent Posts

Um prato de informações tecnológicas com uma pitada de conhecimento aleatório.

JBossDivers

Mergulhando no Mundo JBoss

%d bloggers like this: