solr的java代码 solr schema( 四 )


最后,如果Solr的home目录既没有通过Java系统属性指定也没有通过JNDI指定,那么他将默认指向solr/ 。
在产品环境中,我们必须设置Solr的home目录而不是让其默认指向solr/ 。而且应该使用绝对路径,而不是相对路径,因为你有可能从不同的目录下面启动应用服务器 。
注:Jetty 是一个开源的servlet容器 , 它为基于Java的web内容,例如JSP和servlet提供运行环境 。Jetty是使用Java语言编写的,它的API以一组JAR包的形式发布 。开发人员可以将Jetty容器实例化成一个对象,可以迅速为一些独立运行(stand-alone)的Java应用提供网络和web连接 。
我们先从使用者的角度出发,最先看到的当然是servlet,因为Solr本身是个独立的网络应用程序 , 需要在Servlet容器中运行来提供服务,所以servlet是用户接触的最外层 。我们看看org.apache.solr.servlet包 。这个包很简单,只有两个类:SolrServlet和SolrUpdateServlet.我们很容易从类名中猜出这两个类的用途 。
SolrServlet类继承HttpServlet类,只有四个方法:
·init()
·destroy()
·doGet()
·doPost()
SolrServlet类中除了普通的Java类对象(包括Servlet相关的)外 , 有四个Solr本身的类,还有一个Solr本身的异常 。其中两个类和一个异常属于org.apache.solr.core包,两个类属于org.apache.solr.request包 。属于core包的有:
·Config:
·SolrCore:
属于request包的有:
·SolrQueryResponse:
·QueryResponseWriter:
分析一下这个SolrServlet类 。首先servlet会调用init()方法进行初始化:通过Context查找java:comp/env/solr/home来确定Solr的主目录(home),接着调用Config.setInstanceDir(home)方法设置这个实例的目录 。然后通过SolrCore.getSolrCore()来获得一个SolrCore实例 。destroy()方法将会在Servlet对象销毁时调用,仅仅调用core.close()关闭SolrCore实例 。
当用户请求进来时doPost()简单地将任务交给doGet()完成,主要的任务由doGet()完成 。分析一下doGet()方法:
1)使用SolrCore和doGet()参数request生成一个SolrServletRequest对象(注意:这个SolrServletRequest类不是公开类,位于org.apache.solr.servlet包中,继承了SolrQueryRequestBase类,仅仅接受SolrCore和HttpServletRequest对象作为参数)
2)然后SolrCore执行execute()方法(参数为SolrServletRequest和SolrQueryResponse)
由此可见,真正的处理核心是SolrCore的execute方法
solr 使用java jdbc查询空指针,有这么几种情况 , 一般是你进行查询solr的java代码的时候传递solr的java代码的参数有问题或者是查询回来的返回值跟实体映射不对,打断点调试一下,一步一步看总能找到问题
solr的java代码的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于solr schema、solr的java代码的信息别忘了在本站进行查找喔 。

推荐阅读