zoukankan      html  css  js  c++  java
  • 大批量推送项目日记(七):验收会议与BeanCreationException

    2020.8.17

    日记

    今天开了验收会议。

    会议持续时间为10:00-11:40,会上,每个小组从功能的角度展示了一遍各自工作的完成情况(之前的会议是从代码角度展示的),也就是打开网页实际操作一下,然后大家一起讨论分析,经理指出不完善的地方并记录。

    会后,各自抓紧时间修改了不完善的地方。

    下午14:00,开始完整流程自测。先将数据库的测试数据清空,然后启动测试服务器上发版的war包,打开网页进行测试。先模拟了数据最少的情况,将整个流程测试了一次。基本没有大问题。

    之后就准备提交给测试人员正式测试了。

    之前遇到的问题

    上周五按照计划是应该将项目部署到测试服务器并开始自测的,然而遇到了一个问题:

    将项目打成war包上传到服务器并启动时,服务器报错:

    org.springframework.beans.factory.BeanCreationException: Error creating bean name 'XXXXXX' defined in VFS resource ["/content/xiangmu.war/WEB-INF/classes/META-INF/app_config/context/context-xxxname.xml"]: Instantiation of bean failed; nested exception is java.lang.ExceptionInInitia   lizerError

    ......

    这个错误的意思是说,在你的【context-xxxname.xml】文件中,有一个bean的名字是【XXXXXX】的,无法创建出来;

    这是一个自己写的一个初始化bean的xml文件,这些bean是定时任务用的(spring框架下的定时任务)。

    出现了问题,就要想办法解决问题,步骤如下:

    1.找到是哪个同事写的,让他解决,其他人帮忙;

    2.找了半天,发现是这个同事在java中直接用注解注入了mapper.java,然后上测试服务器后就找不到bean了;神奇的是在本地没有问题。

    3.由于用到了公司自己封装的spring框架,按照常规,定时任务中应该写构造方法传入service对象(通过service调用mapper),然后在xml中配置service对象(而不是在定时任务java中直接用注解注入mapper对象);因此该同事修改了方法,上测试服务器后就正常了。(至于为什么直接注入mapper.java会找不到bean,还不太清楚。)

    关于该问题的分析

    这个问题导致自测时间延迟了3天(同事周五加班都没找出来,周日来加班才解决);

    这个问题的难点是在本地自测没有问题,只有测试服务器上才报这个错;

    关于这个问题的推测:

    1.公司封装的spring框架不太好,只能按照规则注入service,从service中调mapper;如果直接注入mapper,在不同环境下可能会发生找不到bean的问题(例如不同tomcat版本、不同jdk版本)

    2.本地用的是tomcat,而测试服务器用的是jboss,据说jboss对spring的兼容不是很好,因此当spring中使用xml配置定时任务时,如果配置不得当,可能会出现tomcat下能用、而jboss下不能用的情况。

    3.如果不是定时任务的情况下,直接在java中注入mapper也应该是可以的;但如果是在xml中配置了定时任务的形式,有可能在初始化定时任务的bean时,无法从spring容器中获取用到的mapper(在java中用注解注入,此时spring容器还没有将mapper初始化);如果在xml中配置,spring容器就能根据配置内容找到对应类并初始化了。

    -------------------------------------------------------------------

    后记

    这篇文章连我自己都感觉说的不清不楚(因为感觉确实不太清楚问题与解决方法,只是想办法解决了而已)。

    本地tomcat下没问题,测试服务器jboss下有问题,这个问题也搞不明白。

    得出的结论大致如下:

    jboss有可能出现使用注解注入的bean无法create的情况,这时要改为使用构造方法从xml中配置bean的方式。

  • 相关阅读:
    MvvmTest
    win8 app 相关的几个网站
    autp
    分析WPF代码工具
    mdsn
    线程和委托
    C#guanli
    学习Boost小结(一)
    Boost.test库的配置
    自己真是太没正事了.
  • 原文地址:https://www.cnblogs.com/codeToSuccess/p/13906217.html
Copyright © 2011-2022 走看看