zoukankan      html  css  js  c++  java
  • 七、Solr服务部署和安全

    概念:

    我们知道,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中。

  • 相关阅读:
    win7 配置DNS
    链表效率
    链表用途&&数组效率&&链表效率&&链表优缺点
    java 生成随机数字
    汉诺塔
    利用HTML5开发Android(1)---Android设备多分辨率的问题
    Android读取assets目录下的资源
    Ubuntu 搭建PHP开发环境
    关于heritrix安装配置时出现”必须限制口令文件读取访问权限”的解决方法
    JQuery 的bind和unbind函数
  • 原文地址:https://www.cnblogs.com/edwinchen/p/3988530.html
Copyright © 2011-2022 走看看