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>

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

     

     

  • 相关阅读:
    java反编译工具
    Eclipse反编译插件: Jodeclipse与JadClipse
    Apk修改利器:ApkToolkit v2.1
    新浪微博2.5.1 for Android 去广告
    java
    第K顺序统计量
    身份证号码
    pop3
    google
    Exception
  • 原文地址:https://www.cnblogs.com/zeopean/p/8628521.html
Copyright © 2011-2022 走看看