七、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中。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM