zoukankan      html  css  js  c++  java
  • Received non-all-whitespace CHARACTERS or CDATA event in nextTag(). ,无法整齐打印验证错误。 解析XML文档出现的问题

    在启动keyCloak,想要在standAlone模式下切换数据库,修改standAlone.xml文件时。

    在bin/目录下启动standAlone模式出现错误:

    10:07:24,799 INFO  [org.jboss.as.controller] (Controller Boot Thread) OPVDX002:无法整齐打印验证错误:null
    10:07:24,800 ERROR [org.jboss.as.server] (Controller Boot Thread) WFLYSRV0055: Caught exception during boot: org.jboss.as.controller.persistence.ConfigurationPersistenceException: WFLYCTL0085: Failed to parse configuration
            at org.jboss.as.controller.persistence.XmlConfigurationPersister.load(XmlConfigurationPersister.java:143)
            at org.jboss.as.server.ServerService.boot(ServerService.java:377)
            at org.jboss.as.controller.AbstractControllerService$1.run(AbstractControllerService.java:372)
            at java.lang.Thread.run(Unknown Source)
    Caused by: javax.xml.stream.XMLStreamException: com.ctc.wstx.exc.WstxParsingException: Received non-all-whitespace CHARACTERS or CDATA event in nextTag().
    at [row,col {unknown-source}]: [141,7]
            at org.jboss.as.connector.subsystems.datasources.DataSourcesExtension$DataSourceSubsystemParser.readElement(DataSourcesExtension.java:650)
            at org.jboss.as.connector.subsystems.datasources.DataSourcesExtension$DataSourceSubsystemParser.readElement(DataSourcesExtension.java:204)
            at org.jboss.staxmapper.XMLMapperImpl.processNested(XMLMapperImpl.java:122)
            at org.jboss.staxmapper.XMLExtendedStreamReaderImpl.handleAny(XMLExtendedStreamReaderImpl.java:69)
            at org.jboss.as.server.parsing.StandaloneXml_7.parseServerProfile(StandaloneXml_7.java:607)
            at org.jboss.as.server.parsing.StandaloneXml_7.readServerElement(StandaloneXml_7.java:240)
            at org.jboss.as.server.parsing.StandaloneXml_7.readElement(StandaloneXml_7.java:137)
            at org.jboss.as.server.parsing.StandaloneXml.readElement(StandaloneXml.java:117)
            at org.jboss.as.server.parsing.StandaloneXml.readElement(StandaloneXml.java:52)
            at org.jboss.staxmapper.XMLMapperImpl.processNested(XMLMapperImpl.java:122)
            at org.jboss.staxmapper.XMLMapperImpl.parseDocument(XMLMapperImpl.java:76)
            at org.jboss.as.controller.persistence.XmlConfigurationPersister.load(XmlConfigurationPersister.java:126)
            ... 3 more
    Caused by: com.ctc.wstx.exc.WstxParsingException: Received non-all-whitespace CHARACTERS or CDATA event in nextTag().
    at [row,col {unknown-source}]: [141,7]
            at com.ctc.wstx.sr.StreamScanner.constructWfcException(StreamScanner.java:621)
            at com.ctc.wstx.sr.StreamScanner.throwParseError(StreamScanner.java:491)
            at com.ctc.wstx.sr.StreamScanner.throwParseError(StreamScanner.java:475)
            at com.ctc.wstx.sr.BasicStreamReader.nextTag(BasicStreamReader.java:1224)
            at org.jboss.staxmapper.XMLExtendedStreamReaderImpl.nextTag(XMLExtendedStreamReaderImpl.java:152)
            at org.jboss.as.connector.subsystems.datasources.DsParser.parseDataSource_4_0(DsParser.java:1927)
            at org.jboss.as.connector.subsystems.datasources.DsParser.parseDataSources(DsParser.java:229)
            at org.jboss.as.connector.subsystems.datasources.DsParser.parse(DsParser.java:189)
            at org.jboss.as.connector.subsystems.datasources.DataSourcesExtension$DataSourceSubsystemParser.readElement(DataSourcesExtension.java:643)
            ... 14 more
    
    10:07:24,803 FATAL [org.jboss.as.server] (Controller Boot Thread) WFLYSRV0056: Server boot has failed in an unrecoverable manner; exiting. See previous messages for details.
    10:07:24,820 INFO  [org.jboss.as] (MSC service thread 1-7) WFLYSRV0050: Keycloak 4.4.0.Final (WildFly Core 5.0.0.Final) stopped

      这是standalone.xml的文件配置:

       <datasource jndi-name="java:jboss/datasources/KeycloakDS" pool-name="KeycloakDS" use-java-context="true">
                            <connection-url>jdbc:mysql://localhost:3306/keycloak?useSSL=false&tcpRcvBuf=102400000</connection-url>
                            <driver-class>com.mysql.jdbc.Driver</driver-class>    
                            <driver>mysql</driver>
                            <security>
                                <user-name>root</user-name>
                                <password>root</password>
                            </security>
                            <!--增加验证信息      -->
                    <!--            <validation>
                                   <valid-connection-checker class-name="org.jboss.jca.adapters.jdbc.extensions.mysql.MySQLValidConnectionChecker"/>
                                   <background-validation>true</background-validation>
                                   <exception-sorter class-name="org.jboss.jca.adapters.jdbc.extensions.mysql.MySQLExceptionSorter"/>
                                </validation>
                                -->
                    </datasource>
    
    
                    <drivers>
                        <driver name="h2" module="com.h2database.h2">
                            <xa-datasource-class>org.h2.jdbcx.JdbcDataSource</xa-datasource-class>
                        </driver>
                        <driver name="mysql" module="com.mysql">
                        <!-- <driver-class>com.mysql.jdbc.Driver</driver-class>      -->
                            <xa-datasource-class>com.mysql.jdbc.jdbc2.optional.MysqlXADataSource</xa-datasource-class>
                        </driver>
    发现问题:
    1.认为是我的url-connection 写的有问题,不断地修改。
    2.找到文件夹modulessystemlayersasecommysqlmain    下的module 和mysql-connector-java.5.1.40jar
    不断修改JAR包的版本和modules.xml地配置。
    3.询问同事:一开始以为是字符集编码的问题,但是后面发现了at [row,col {unknown-source}]: [141,7]这个地方出现了问题。
    从此打开了自己的认知大门:发现了自己一开始的问题所在,而我却忽略他了:
     
    在修改standalone.xml时,在edit-plus出现如下页面。
     

    问题原因:

    从下图可以看到,因为不同编码方式的空格占位符不同,比如在ANSI编码里面,空格占用一个字符 ,但是在UTF-8里面,可能占用的是2个字符。
    于是在Edit-plus中编辑的时候,出现以上情况的报错。  从而造成无法解析xml的情况。
     
    解决途径:
    1.手敲代码,
    2.从其他博客中复制过来的代码,单行复制!单行复制!单行复制!
     
    总结:今后从其他博客中复制过来的代码一定要提前检查各种问题,已经有很多次遇到这种情况:复制他人的代码,结果不断报错。   今后复制粘贴的时候要留个心眼。
     
     
  • 相关阅读:
    【Java并发编程】之十一:线程间通信中notify通知的遗漏
    【Java并发编程】之十:使用wait/notify/notifyAll实现线程间通信的几点重要说明
    【Java并发编程】之九:死锁
    【Java并发编程】之八:多线程环境中安全使用集合API
    【Java并发编程】之七:使用synchronized获取互斥锁的几点说明
    多线程开发中遇到的问题
    Linux 设置IP,gate, 以及自动获取IP的方法
    C语言实现http get请求程序
    DHCP(动态主机配置协议)工作流程
    多线程程序中死锁的分析和解决方案
  • 原文地址:https://www.cnblogs.com/patatoforsyj/p/10281721.html
Copyright © 2011-2022 走看看