zoukankan      html  css  js  c++  java
  • spring-mvc 集成 activeMq 常见问题 + 解决方案 (仅供参考)

     最近整合 spring-mvc 和 activeMq ,出现了几个异常,我把他记录下来,具体的原理分析我就不太会写了,只把详细情况和解决方案给出来,希望对各位老铁有所帮助!

    问题1:缺少log4j的配置文件

    异常信息:出现以下的内容时,可能就是你没有配置 log4j 了。

    log4j:WARN No appenders could be found for logger (org.springframework.web.context.ContextLoader).
    log4j:WARN Please initialize the log4j system properly.
    log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for more info.
    

     

    解决方案:

    在你的WEB-INF 目录下面,添加配置文件 log4j.properties 文件, 文件配置参考如下:

    log4j.rootLogger=info, Console, err
    
    log4j.logger.play=DEBUG
    
    # Console
    log4j.appender.Console=org.apache.log4j.ConsoleAppender
    log4j.appender.Console.encoding=UTF-8
    log4j.appender.Console.layout=org.apache.log4j.PatternLayout
    log4j.appender.Console.layout.ConversionPattern={ "time": "%d{yyyy-MM-dd HH:mm:ss}", "level": "%p", %m }%n
    
    log4j.appender.err = org.apache.log4j.DailyRollingFileAppender
    log4j.appender.err.encoding=UTF-8
    log4j.appender.err.File = logs/appName_error.log
    log4j.appender.err.Append = True
    log4j.appender.err.Threshold = ERROR
    log4j.appender.err.layout = org.apache.log4j.PatternLayout
    log4j.appender.err.layout.ConversionPattern = { "time": "%d{yyyy-MM-dd HH:mm:ss}", "level": "%p", %m }%n
    log4j.additivity.err=false
    
    log4j.appender.info = org.apache.log4j.DailyRollingFileAppender
    log4j.appender.info.encoding=UTF-8
    log4j.appender.info.File = logs/appName.log
    log4j.appender.info.Append = True
    log4j.appender.info.Threshold = INFO
    log4j.appender.info.layout = org.apache.log4j.PatternLayout
    log4j.appender.info.layout.ConversionPattern = { "time": "%d{yyyy-MM-dd HH:mm:ss}", "level": "%p", %m }%n 

    然后在你的 web.xml 里面添加 context-param, 代码如下

        <context-param>
            <param-name>log4jConfigLocation</param-name>
            <param-value>/WEB-INF/log4j.properties</param-value>
        </context-param>
    

      

    问题2:缺少对xml 文件的 schemaLocation 设置

    异常内容:

    applicationContext.xml] is invalid; nested exception is org.xml.sax.SAXParseException; lineNumber: 14; 
    columnNumber: 61; cvc-complex-type.2.4.c: 通配符的匹配很全面, 但无法找到元素 'context:component-scan' 的声明。

      

    解决方案:

    保证自己的schemaLocation 中的元素与xmlns 一致,并版本号,如果无法确定版本号是,默认用当前版本spring的。如我的 web.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"
           xsi:schemaLocation="
            http://www.springframework.org/schema/beans
            http://www.springframework.org/schema/beans/spring-beans.xsd
            http://www.springframework.org/schema/context
            http://www.springframework.org/schema/context/spring-context.xsd
    ">
    
    
        <bean class="org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor"/>
        <!-- 配置扫描路径 -->
        <context:component-scan base-package="com.spring.mvc.*">
            <!-- 只扫描Service,也可以添加Repostory,但是要把Controller排除在外,Controller由spring-mvc.xml去加载 -->
            <context:exclude-filter type="annotation" expression="org.springframework.stereotype.Controller"/>
        </context:component-scan>
    
    
    </beans>  

    如果我将 『

    http://www.springframework.org/schema/contex

    http://www.springframework.org/schema/context/spring-context.xsd

    』 

    注释掉,就会出现以上异常!

    问题3:无法注入元素

    异常内容:

    org.springframework.beans.factory.BeanDefinitionStoreException: Unexpected exception parsing XML document from file 
    [/Users/zeopean/IdeaProjects/springJms/target/springJms/WEB-INF/classes/spring/applicationContext-ActiveMQ.xml];
    nested exception is org.springframework.beans.FatalBeanException: NamespaceHandler class
    [org.apache.xbean.spring.context.v2.XBeanNamespaceHandler] for namespace
    [http://activemq.apache.org/schema/core] not found;
    nested exception is java.lang.ClassNotFoundException: org.apache.xbean.spring.context.v2.XBeanNamespaceHandler

      

    解决方案:

    这个问题困扰了我挺长时间的,后面通过谷歌,我发现原来是我的mvn 少了一个库,所以,添加上就好了。具体如下

    <dependency>
          <groupId>org.apache.xbean</groupId>
          <artifactId>xbean-spring</artifactId>
          <version>4.6</version>
        </dependency>
    

      

    问题4:无法加载ApplicationContext-ActiveMq.xml 配置文件

    异常信息:

     org.springframework.beans.factory.BeanCreationException: 
    Error creating bean with name 'consumerService':
    Injection of resource dependencies failed; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException:
    No bean named 'jmsTemplate' available

      

    问题分析:

    我在设置 contextConfigLocation 时,错误的写错了这样子。对!就是  classpath:spring/applicationContext.xml 少了个 * 号

    ,这样子是没办法加载到 ApplicationContext-ActiveMq.xml的,因为总要有地方引入,配置才能注入成功嘛!

        <context-param>
            <param-name>contextConfigLocation</param-name>
            <param-value>
                classpath:spring/applicationContext.xml
            </param-value>
        </context-param>
    

      

    解决方案:

        <context-param>
            <param-name>contextConfigLocation</param-name>
            <param-value>
                classpath:spring/applicationContext*.xml
            </param-value>
        </context-param>

    好了,就到这里,希望能大家不要踩到这些坑!

     

     

  • 相关阅读:
    hdu 4710 Balls Rearrangement()
    hdu 4707 Pet(DFS水过)
    hdu 4706 Children's Day(模拟)
    hdu 4712 Hamming Distance(随机函数暴力)
    csu 1305 Substring (后缀数组)
    csu 1306 Manor(优先队列)
    csu 1312 榜单(模拟题)
    csu 1303 Decimal (数论题)
    网络爬虫
    Python处理微信利器——itchat
  • 原文地址:https://www.cnblogs.com/zeopean/p/8628521.html
Copyright © 2011-2022 走看看