`

Spring初始化创建JMS工厂出错

阅读更多
       前段时间公司新启动一个项目,在前期的架构搭建的时候不是怎么理想。于是,本人决定进行项目重构。花了一周时间,独立完成了。在此分享一下在这整个重构过程中遇到的问题以及解决方案。

        在重构接近尾声的时候,发现spring在初始化创建jms工厂的时候,bean工厂始终创建失败;困扰我一下午时间。
Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'jmsFactory' defined in class path resource [conf/spring.xml]: Initialization of bean failed; nested exception is java.lang.reflect.MalformedParameterizedTypeException
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:553)
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:482)
	at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:305)
	at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:230)
	at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:301)
	at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:196)
	at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveReference(BeanDefinitionValueResolver.java:351)
	... 37 more
Caused by: java.lang.reflect.MalformedParameterizedTypeException
	at sun.reflect.generics.reflectiveObjects.ParameterizedTypeImpl.validateConstructorArguments(ParameterizedTypeImpl.java:60)
	at sun.reflect.generics.reflectiveObjects.ParameterizedTypeImpl.<init>(ParameterizedTypeImpl.java:53)
	at sun.reflect.generics.reflectiveObjects.ParameterizedTypeImpl.make(ParameterizedTypeImpl.java:95)
	at sun.reflect.generics.factory.CoreReflectionFactory.makeParameterizedType(CoreReflectionFactory.java:105)
	at sun.reflect.generics.visitor.Reifier.visitClassTypeSignature(Reifier.java:140)
	at sun.reflect.generics.tree.ClassTypeSignature.accept(ClassTypeSignature.java:49)
	at sun.reflect.generics.repository.ConstructorRepository.getParameterTypes(ConstructorRepository.java:94)
	at java.lang.reflect.Method.getGenericParameterTypes(Method.java:292)
	at java.beans.FeatureDescriptor.getParameterTypes(FeatureDescriptor.java:387)
	at java.beans.MethodDescriptor.setMethod(MethodDescriptor.java:114)
	at java.beans.MethodDescriptor.<init>(MethodDescriptor.java:72)
	at java.beans.MethodDescriptor.<init>(MethodDescriptor.java:56)
	at java.beans.Introspector.getTargetMethodInfo(Introspector.java:1149)
	at java.beans.Introspector.getBeanInfo(Introspector.java:416)
	at java.beans.Introspector.getBeanInfo(Introspector.java:163)
	at org.springframework.beans.CachedIntrospectionResults.<init>(CachedIntrospectionResults.java:279)
	at org.springframework.beans.CachedIntrospectionResults.forClass(CachedIntrospectionResults.java:189)
	at org.springframework.beans.BeanWrapperImpl.getCachedIntrospectionResults(BeanWrapperImpl.java:177)
	at org.springframework.beans.BeanWrapperImpl.getPropertyDescriptors(BeanWrapperImpl.java:236)
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.filterPropertyDescriptorsForDependencyCheck(AbstractAutowireCapableBeanFactory.java:1368)
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.filterPropertyDescriptorsForDependencyCheck(AbstractAutowireCapableBeanFactory.java:1347)
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1209)
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:543)
	... 43 more

最终在进行代码跟踪的时候,发现activemq-pool 的版本号是5.7.0,它依赖的commons-pool的版本号是1.6;而当前工程的commons-dbcp依赖的commons-pool的版本号是1.5.4;openjpa-kernelok依赖的commons-pool的版本号是1.3;ok,问题原因找到了。接下来,就是去解决问题。
        解决方案:
               在maven依赖中排除不需要的版本。

          <dependency>
            <groupId>commons-dbcp</groupId>
            <artifactId>commons-dbcp</artifactId>
            <version>1.4</version>
            <!-- 排除不需要的版本  start -->
            <exclusions>
                <exclusion>
                    <groupId>commons-pool</groupId>
                    <artifactId>commons-pool</artifactId>
                </exclusion>
            </exclusions>
            <!-- 排除不需要的版本  end -->
        </dependency>

        <dependency>
            <groupId>org.apache.openjpa</groupId>
            <artifactId>openjpa-kernel</artifactId>
            <version>1.0.4</version>
            <!-- 排除不需要的版本  start -->
            <exclusions>
                <exclusion>
                    <groupId>commons-pool</groupId>
                    <artifactId>commons-pool</artifactId>
                </exclusion>
            </exclusions>
             <!-- 排除不需要的版本  end -->
        </dependency>
分享到:
评论

相关推荐

    spring-framework-3.1.1.jar

    IoC容器(ApplicationContext或BeanFactory)负责创建对象、管理对象之间的关系以及调用初始化和销毁方法。 2. **AOP(Aspect Oriented Programming)**:Spring提供了面向切面编程的支持,允许开发者定义“切面”...

    spring-framework-3.1.0.M2

    8. **性能优化**:Spring 3.1.0.M2在性能上也做了很多工作,比如对Bean的初始化进行了优化,减少了内存占用。 9. **测试支持**:Spring提供了丰富的测试框架,包括单元测试、集成测试和端到端测试。3.1.0.M2版本...

    最新版spring-framework-4.3.12.RELEASE-schema.zip约束

    XML配置文件中的bean定义描述了如何创建、初始化、装配对象,并且可以配置bean之间的依赖关系。Spring 4.3.12.RELEASE在此基础上进一步优化了自动配置和条件注解,使得bean的管理更加灵活。 3. **jdbc**:此模块...

    spring-5.2.9.RELEASE-schema.zip

    在`beans:`命名空间下,你可以定义bean的实例化、初始化、销毁等行为,以及它们之间的依赖关系。通过@Autowired注解,可以自动装配bean的依赖,实现灵活的依赖注入。 3. **Jdbc模块**: 提供了简化数据库操作的...

    spring-reference

    Spring提供了检查依赖关系的功能,可以在Bean初始化时,检查其依赖的其他Bean是否已经正确创建。 #### 3.8 方法注入 除了属性注入和构造函数注入,Spring还支持方法注入,即通过调用Bean的方法来注入依赖关系。 #...

    后台使用Spring框架的质量评估193210111党涛1

    Spring框架对测试提供了很好的支持,例如对JUnit的集成,允许开发者通过注解轻松创建和运行测试,无需复杂的初始化和依赖注入。这使得单元测试变得简单易行,提高了软件质量。 5. **框架集成**: Spring可以方便...

    spring3[1].0中文手册

    - **生命周期管理**:支持初始化方法(`@PostConstruct`)和销毁方法(`@PreDestroy`),以及自定义生命周期回调。 4. **数据访问集成** - **JDBC模板**:提供了一层抽象,简化了JDBC的使用,减少了出错的可能性。 -...

    ajax、spring、ejb试题

    其中,XMLHttpRequest 对象是关键,它有五个返回状态值,分别是 0(未初始化)、1(载入)、2(已载入)、3(交互中)、4(完成)。在JavaScript中,可以通过 XMLHttpRequest 对象的 `status` 属性来检查HTTP协议的...

    xdoclet-plugins-1.0.3.tar.gz

    6. **Spring插件**:虽然Spring提倡的是“零配置”,但在早期版本,XDoclet也可以生成Spring的bean配置文件,简化了Spring应用的初始化过程。 7. **其他插件**:除了上述插件,还有许多针对特定框架或需求的插件,...

    下载myeclipse2018_8902.zip

    1. 快速项目构建:myEclipse提供模板工程,一键创建Web、Java EE项目,节省项目初始化时间。 2. 代码智能提示:通过代码自动补全,减少手动输入,提高开发速度。 3. 调试工具:强大的调试功能,包括断点、单步执行、...

Global site tag (gtag.js) - Google Analytics