Сканирование classpath в Spring 2.5 не работает на JBoss5 из-за внутренних изменений архитектуры в JBoss5. Вы можете столкнуться с этой проблемой при переходе с JBoss4 на JBoss5. Эта статья проведет вас через простое исправление с фрагментами кода.
Ошибка сканирования пути к классам
В JBoss 4 ваше приложение, вероятно, использовало Spring 2.5.6 с сканированием пути к классам для загрузки пружинных компонентов (как показано ниже). При переносе кода в JBoss5 вы заметите, что компонентное сканирование не работает с JBoss5. Симптомы могут включать в себя нулевые компоненты Spring или если вы использовали интеграцию Spring Seam и бины Spring были загружены при сканировании пути к классам, то может быть следующая ошибка:
Код шва
public class LoginController extends Controller {
@In("#{userService}")
protected demo.entity.service.UserService userService;
Трассировки стека
Caused by: org.jboss.seam.RequiredException: @In attribute requires non-null value: loginController.#{userService}
at org.jboss.seam.Component.getValueToInject(Component.java:2335)
at org.jboss.seam.Component.injectAttributes(Component.java:1736)
at org.jboss.seam.Component.inject(Component.java:1554)
at org.jboss.seam.core.BijectionInterceptor.aroundInvoke(BijectionInterceptor.java:61)
at org.jboss.seam.intercept.SeamInvocationContext.proceed(SeamInvocationContext.java:68)
Spring 2.5.6 зависимость в pom.xml
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring</artifactId>
<version>2.5.6</version>
</dependency>
Старый весенний конфиг XML
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context"
xmlns:tx="http://www.springframework.org/schema/tx"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
http://www.springframework.org/schema/tx
http://www.springframework.org/schema/tx/spring-tx-2.5.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-2.5.xsd"
default-init-method="init" default-destroy-method="shutdown">
<context:annotation-config />
<context:component-scan base-package="demo.dao.jpa" />
</beans>
Если вы запустите приведенный выше код в JBoss5, компонентное сканирование не будет работать. Смотрите эту проблему JIRA на веб-сайте Spring .
Решение
Вам необходимо перенести вашу весеннюю версию с 2.5.6 на 3.0.0.RELEASE. Удалите старую пружинную зависимость для 2.5.6 и добавьте следующее. Добавьте фрагменты для компонентов, которые нужны вашему приложению. Вот список общих компонентов пружин и их maven зависимостей.
Новая зависимость
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-orm</artifactId>
<version>3.0.0.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-web</artifactId>
<version>3.0.0.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-tx</artifactId>
<version>3.0.0.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-test</artifactId>
<version>3.0.0.RELEASE</version>
<scope>test</scope>
</dependency>
Полный список доступен здесь . После внесения этого изменения создайте свой проект с новыми зависимостями. Ваш старый код должен работать с Spring 3 на JBoss 5.1.0.GA.
С http://www.vineetmanohar.com/2010/04/08/spring-classpath-scan-issue-jboss5