上线一个基于solr的基于rest的搜索应用服务的过程中,启动tomcat,后台抛出了两个异常
第一个异常
java.lang.RuntimeException: java.lang.ExceptionInInitializerError
at com.taobao.terminator.manage.common.IndexBuilder.initialize(IndexBuilder.java:111)
at com.taobao.terminator.manage.common.IndexBuilder.(IndexBuilder.java:59)
at com.taobao.terminator.pubhook.servlet.BuildIndexAction$1.run(BuildIndexAction.java:170)
at java.lang.Thread.run(Thread.java:636)
Caused by: java.lang.ExceptionInInitializerError
at com.taobao.terminator.manage.common.IndexBuilder.initialize(IndexBuilder.java:94)
... 3 more
Caused by: java.lang.RuntimeException: XPathFactory#newInstance() failed to create an XPathFactory for the default object model: http://java.sun.com/jaxp/xpath/dom with the XPathFactoryConfigurationException: javax.xml.xpath.XPathFactoryConfigurationException: No XPathFctory implementation found for the object model: http://java.sun.com/jaxp/xpath/dom
at javax.xml.xpath.XPathFactory.newInstance(Unknown Source)
at org.apache.solr.core.Config.(Config.java:42)
... 4 more
|
这个问题以前没有碰见过,并且在自己本地PC机上测试是不会抛出以上异常的,但是,在线上服务上就会抛出这样的异常。解决这个问题的办法是先在google上找果然找到答案,在apache solr的官方网站上找到了,http://wiki.apache.org/solr/SolrTomcat
Troubleshooting Errors
It's possible that you get an error related to the following:
SEVERE: Exception starting filter SolrRequestFilter
java.lang.NoClassDefFoundError: Could not initialize class org.apache.solr.core.SolrConfig
at org.apache.solr.servlet.SolrDispatchFilter.init(SolrDispatchFilter.java:76)
.........
Caused by: java.lang.RuntimeException: XPathFactory#newInstance() failed to create an XPathFactory for the default object model: http://java.sun.com/jaxp/xpath/dom with the XPathFactoryConfigurationException: javax.xml.x
path.XPathFactoryConfigurationException: No XPathFctory implementation found for the object model: http://java.sun.com/jaxp/xpath/dom
at javax.xml.xpath.XPathFactory.newInstance(Unknown Source)
This is due to your tomcat instance not having the xalan jar file in the classpath. It took me some digging to find this, and thought it might be useful for others. The location varies from distribution to distribution, but I essentially just added (via a symlink) the jar file to the shared/lib directory under the tomcat directory.
|
作者的解释是没有在%TOMCAT_HOME%shared/lib 这个文件夹中放xalan 相关的jar包,但是,按照作者的办法,我将xalan.jar从本地拷贝到服务上,重新启动还是不解决问题。
之后又对本地应用程序进行调试跟踪启动代码,最后定位到了
javax.xml.xpath.XPathFactoryFinder 这个类的主要职责就就是为XPathFactory工厂类的工厂方法,通过参数找XPath的解析对象。
XPathFactoryFinder类中找解析对象的流程是这样的:
- 先组装出一个key,这个key是一个类前缀和工厂方法参数的组合,比如:XPathFactoryFinder类的 public XPathFactory newFactory(String uri)方法 传入的参数是http://java.sun.com/jaxp/xpath/dom 那会组装一个key值是“javax.xml.xpath.XPathFactory:http://java.sun.com/jaxp/xpath/dom”
- 相会从系统变量中找 System.getProperty(key) 如果你在项目启动时在命令行中添加了 -Djavax.xml.xpath.XPathFactory:http://java.sun.com/jaxp/xpath/dom=XXXXXX这样的变量,那么就会用这个系统变量的值作为实现类作为方法的返回值
- 如果没有在系统变量中找到,那就到%java_home%jre/lib/jaxp.properties 这个配置为文件中找
javax.xml.xpath.XPathFactory:http://java.sun.com/jaxp/xpath/dom 这个变量,如果找到的话就用这个变量的值作为
.接口XPathFactory的实现类作为方法返回值返回。
- 如果在以上的过程中都没有找到
javax.xml.xpath.XPathFactory:http://java.sun.com/jaxp/xpath/dom 的值,那么XPathFactoryFinder会 返回一个默认对象作为返回结果。如果这个默认类在当前系统中不存在,那就会抛出异常了。
注意:以上在jaxp.properties这个类中的key中“:”前必须要加“\”反斜杠作为转义符,不然java 的Properties类会将“:”转义,例如在jaxp.properties中要这样写:javax.xml.xpath.XPathFactory\:http\://java.sun.com/jaxp/xpath/dom=com.sun.org.apache.xpath.internal.jaxp.XPathFactoryImpl, 千万不能弄错,因为这个问题,让我折腾了好久。
第二个异常
2012-01-07 16:01:59,511 [org.apache.solr.core.Config] - ERROR - Exception
during parsing file:
solrconfig.xml:javax.xml.parsers.ParserConfigurationException: Feature
'http://apache.org/xml/features/xinclude' is not recognized.
at
org.apache.xerces.jaxp.DocumentBuilderFactoryImpl.newDocumentBuilder(Unknown
Source)
at org.apache.solr.core.Config.<init>(Config.java:110)
at
org.apache.solr.core.SolrConfig.<init>(SolrConfig.java:130)
at
org.apache.solr.core.SolrConfig.<init>(SolrConfig.java:108)
at
com.taobao.terminator.manage.common.IndexBuilder.initialize(IndexBuilder.java:94)
at
com.taobao.terminator.manage.common.IndexBuilder.<init>(IndexBuilder.java:59)
at
com.taobao.terminator.pubhook.servlet.BuildIndexAction$1.run(BuildIndexAction.java:174)
at
java.lang.Thread.run(Thread.java:636)
|
处理这个异常只要在tomcat的启动命令JAVA_OPTS参数上,添加一个系统变量:-Djavax.xml.parsers.DocumentBuilderFactory=com.sun.org.apache.xerces.internal.jaxp.DocumentBuilderFactoryImpl 这样就好了。
分享到:
相关推荐
爬虫技术入门视频。另外附带有solor视频教程。我也是爬虫技术的初学者,愿大家能共同进步
SpringBoot以其轻量级、快速启动和丰富的生态系统,成为了许多开发者的选择。在这个项目中,"Springboot_solor_Redis.7z"展示了如何将SpringBoot与Redis和Solr集成,利用它们的优势来处理MySQL数据库中的数据,并在...
【标题】"solor检索war包"涉及到的核心技术是Apache Solr,这是一个开源的企业级全文搜索引擎,被广泛用于构建高效、可扩展的搜索解决方案。在本场景中,"war包"指的是Web应用程序归档文件,它是Java Web应用的标准...
标题中的"0327solor_system.rar"可能是指一个关于太阳系模型的项目,而描述则揭示了这个项目的核心内容。这是一个使用Python编写的可视化程序,能够模拟太阳系中各个行星(包括用户自定义的星体如火星、金星)的运行...
技术选型对比 全文检索 搜索服务 分布式搜索 office文档(word pdf)的全文检索
异向扩散模型最初由Perona和Malik引入到图像处理领域,用于边缘检测和尺度空间描述。自那时起,它作为一种适应性边缘保持平滑技术,在边缘检测、图像恢复、图像平滑、图像分割和纹理分割等领域得到了广泛应用。其...
Solr 是Apache下的一个顶级开源项目,采用Java开发,它是基于Lucene的全文搜索服务器。Solr提供了比Lucene更为丰富的查询语言,同时实现了可配置、可扩展,并对索引、搜索性能进行了优化。
网博垂直搜索引擎完全开源版 1.前台结合Lucene的搜索引擎功能,使得数据搜索更快; 2.新增加采集功能,采集时图片下载,flash下载功能,默认配置的是南海网分类信息的采集规则; 3.该代码简洁,完全开源,可以与...
首先,确保你已经在机器上安装了 Tomcat 6.0、JDK 1.7 和 MySQL 5.0。这些是运行 Solr 所必需的环境。然后,你可以从 Apache 官方网站下载 Solr 3.5 版本。下载完成后,解压缩文件,并将 `apache-solr-3.5.0\example...
Solr 7.5 单机版是一款基于Java的开源全文搜索引擎服务器,它提供了一种高效、可扩展的搜索和分析平台。这个搭建好的版本专为简化安装过程和快速入门而设计,允许用户轻松地在本地环境中配置和使用Solr。 Solr的...
"郑某某-Java-乐驰_嵌入式_java简历_程序员简历模板_计算机相关专业.doc" 根据提供的文件信息,我们可以总结出以下知识点: 1. Java 基础知识:郑某某熟练掌握 Java 基础知识,具备良好的面向对象编程思想,并且...
综上所述,Solr 4.10是强大的全文搜索引擎,尤其适合大规模数据的分布式处理,其丰富的特性和强大的功能使其成为企业级搜索解决方案的理想选择。通过持续的优化和管理,可以进一步提升搜索性能和用户体验。
4. **配置和启动 Solr**: - 在 Solr 的 `example/solr` 目录下,有几个预定义的核心示例。你可以根据需求创建自己的核心(collection)或者使用这些示例。 - 编辑 `solrconfig.xml` 和 `schema.xml` 文件以配置...
此外,模板中的"VULPUTATE LOREM IPSUM SOLOR SIT AMET"同样为占位符,使用者应根据实际情况填写与增长目标、财务数据等相关的内容。"GROWTH OBJECTIVES"和"FINANCIAL OUTCOMES"可能作为独立的幻灯片标题,用于详细...
5G通信技术的特点与原理分析 一、概述 ...3.爬取其它电商网站的同类产品数据:在商品的查询过程中,加入 Solor-Cloud 框架实现效率更高的实时分布式查询,可以考虑爬取其它电商网站的同类产品数据等。
技术选型 前端:angularJS + Bootstrap 后台:SSM( springmvc+spring+mybatis) 数据库:mysql,使用mycat读写分离 开发模式:SOA 服务中间件:dubbox,需要和zookeeper配合使用 注册中心:zookeeper 消息中间件:...
黑马49期全系列,包括品优购,yunpan地址,前端:angularJS + Bootstrap 后台:SSM( springmvc+spring+mybatis) 数据库:mysql 使用mycat读写分离 开发模式:SOA 服务中间件:dubbox,需要和zookeeper配合使用 ...
### Lucene+Solor知识点概述 #### 一、搜索引擎基础理论 **1.1 Google神话** - **起源与发展:** - Google成立于1998年,由Larry Page和Sergey Brin创立。 - 初期以PageRank算法为核心,有效解决了当时互联网...
Word segmentation algorithm based on Tire Tree like IK better than IK Can be used for ES/Solor or Usual Sensitive word filtering easy to expand yourself