概念:

我们知道,Solr是以webapp的形式运行的,那么我们只需要把Solr.war文件部署到web容器中,便可以运行了,但是因为需要连接数据库做索引并且提供线上的服务调用query接口,那么Solr的安全性是需要考虑的。因为Solr并没有自带Ip访问限制。那么我们需要自己来实现。

思路是将Solr导入到普通web project中,然后加上相应的类去实现Ip访问限制的功能。

实现

我们将Solr.war解压后得到下列目录结构:

这本来就是一个web project 的目录结构,那么我们可以将这个目录导入到eclipse中,

步骤一:

在eclipse/myeclipse中新建普通web project。

步骤二:

将solr-4.9.0.war解压

步骤三:

将war文件解压后的目录中所有文件复制到eclipse项目中的webroot下:

步骤四:

修改web.xml文件中solrhome的路径。如果是在web容器中设置的话,就不需要执行这一步,具体参见博客:二、Solr安装(Tomcat)

<env-entry>

    <env-entry-name>solr/home</env-entry-name>

    <env-entry-value>D:/SolrIndex</env-entry-value>

    <env-entry-type>java.lang.String</env-entry-type>

</env-entry>

步骤五:

添加jar包,除了Solr自带的jar包外,根据需要添加相应的jar文件,比如我就添加了Mysql的jdbc驱动和Spring

步骤六:

新建config source folder,用来放置相应的配置文件,不一定要建文件夹,只要保证相应的配置文件在部署后的class文件中即可。我新建文件夹是方便以后修改配置。

步骤七(关键):

这一步就是核心的一部,也就是IP限制和一系列功能的实现,在config中配置了允许访问的IP地址:

allows=127.0.0.1

然后新建一个类AccessFilter继承了Spring的filter,接收到一个访问请求后,根据请求的IP和配置文件中允许访问的IP对比,判断是否允许访问。

下面是doFilter方法:

public void doFilter(ServletRequest request, ServletResponse response,

            FilterChain chain) throws IOException, ServletException {

             // 获取request和response

     HttpServletRequest servletRequest = (HttpServletRequest) request;

     HttpServletResponse servletResponse = (HttpServletResponse) response;

     String remoteAddr = servletRequest.getRemoteAddr();

     //判断是否是允许的IP

     if(allow(remoteAddr)){

            //允许访问

          chain.doFilter(request, response);

     }else{

            //不允许访问,返回错误信息

          servletResponse.setStatus(HttpServletResponse.SC_FORBIDDEN);

          servletResponse.getWriter().print("403 Forbidden");

     }

    }

最后附上项目的目录结构:

总结:

我的思路是将Solr转化成一个普通的eclipse web project,然后根据需求,往项目中添加相应的类,实现相应的功能,也就是在Solr外面再加了一层,把Solr集成到了web project中。

七、Solr服务部署和安全的更多相关文章

  1. docker微服务部署之:七、Rancher进行微服务扩容和缩容

    docker微服务部署之:六.Rancher管理部署微服务 Rancher有两个特色用起来很方便,那就是扩容和缩容. 一.扩容前的准备工作 为了能直观的查看效果,需要修改下demo_article项目 ...

  2. solr与.net系列课程(七)solr主从复制

    solr与.net系列课程(七)solr主从复制    既然solr是解决大量数据全文索引的方案,由于高并发的问题,我们就要考虑solr的负载均衡了,solr提供非常简单的主从复制的配置方法,那么下面 ...

  3. JAVAEE——宜立方商城07:Linux上搭建Solr服务、数据库导入索引库、搜索功能的实现

    1. 学习计划 1.Solr服务搭建 2.Solrj使用测试 3.把数据库中的数据导入索引库 4.搜索功能的实现 2. Solr服务搭建 2.1. Solr的环境 Solr是java开发. 需要安装j ...

  4. solr服务中集成IKAnalyzer中文分词器、集成dataimportHandler插件

    昨天已经在Tomcat容器中成功的部署了solr全文检索引擎系统的服务:今天来分享一下solr服务在海量数据的网站中是如何实现数据的检索. 在solr服务中集成IKAnalyzer中文分词器的步骤: ...

  5. sorl6.0+jetty+mysql搭建solr服务

    1.下载solr 官网:http://lucene.apache.org/solr/ 2.目录结构如下 3.启动solr(默认使用jetty部署) 在path路径下将 bin文件夹对应的目录加入,然后 ...

  6. 利用Solr服务建立的站内搜索雏形---solr1

    最近看完nutch后总感觉像好好捯饬下solr,上次看到老大给我展现了下站内搜索我便久久不能忘怀.总觉着之前搭建的nutch配上solr还是有点呆板,在nutch爬取的时候就建立索引到solr服务下, ...

  7. 使用jMeter测试Solr服务接口

    之前一直用ab做简单的服务接口测试,ab功能强悍,使用简单,但是没有生成专题图和表格等功能,因此,我们决定使用jmeter来作为我们测试工具.接下来,我们将详细介绍jmeter使用的步骤,主要包括:j ...

  8. Solr单机部署和集群部署

    用到的相关jar包:http://pan.baidu.com/disk/home#list/path=%2Fsolr Solr目录结构 Solr 目录 Contrib :solr 为了增强自身的功能, ...

  9. solr与.net课程(七)solr主从复制

    既然solr是解决大量数据全文索引的方案,因为高并发的问题,我们就要考虑solr的负载均衡了,solr提供很easy的主从复制的配置方法,那么以下我们就来配置一下solr的主从复制 如果我们在192. ...

随机推荐

  1. 微软分布式缓存 appfabric

    appfabric为微软自家产的分布式缓存解决方案,随dotnet4.0一起发布.目前版本为1.1

  2. iOS 改变UITextField中光标颜色

    第一种: [[UITextField appearance] setTintColor:[UIColor blackColor]]; 这个方法会影响整个app的所有UITextFiled... 第二种 ...

  3. oracle单行函数之类型转换

    oracle数据类型转换:显示转换盒隐式转换 oracle自动完成转换

  4. Menu之选项菜单

    Android有三种形式的菜单:选项菜单(optionMenu).上下文菜单(ContextMenu).子菜单(subMenu).最常用的是选项菜单,该菜单在点击menu按键后会在对应的Activit ...

  5. 三元运算和lambda表达式

      19.三目运算,三元运算:     if else 的简写: name = 'alex' if 1 == 1 else 'SB'   ==> 等价于      if 1 == 1:     ...

  6. Python----Tornado安装

    Tornado安装,环境准备:          1.python安装包及安装 2.Tornado安装包 Python包安装 Linux下安装 如果使用的是 Linux系统 或 Mac OS X ,系 ...

  7. 无效的过程调用或参数: 'Instr'解决方法

    以前我一直使用ASP无组件上传类来上传文件.但是今天又个客户反映说.不能上传.出现错误.,但在我电脑上测试没问题.后来发现客户用的是IE8 于是开始找解决方法 错误如下:Microsoft VBScr ...

  8. 深度围观block:第三集

    深度围观block:第三集 发布于:2013-07-12 10:09阅读数:7804 本文是深度围观block的第三篇文章,也是最后一篇.希望读者阅读了之后,对block有更加深入的理解,同时也希望之 ...

  9. 51单片机C语言学习笔记4:keil C51绝对地址访问

    在利用keil进行8051单片机编程的时,常常需要进行绝对地址进行访问.特别是对硬件操作,如DA AD 采样 ,LCD 液晶操作,打印操作.等等.C51提供了三种访问绝对地址的方法: 1. 绝对宏:  ...

  10. php preg_match 和preg_match_all

    $h3=trim('[我要变强][主流程]整体功能测试点');$matches=array();preg_match_all('/[(.+?)]/', $h3,$matches); print_r($ ...