七、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中。
最新文章
- 绿色版的Linux.NET——“Jws.Mono”(续)
- 初窥Javascript单元测试,附带掌握一门新技能的学习方式。
- jquery版的全选,全不选和反选
- 转:Autodesk 2017软件下载+注册机+破解方法(持续更新)
- java工程师 学习路线图
- AT指令(转)
- webpack学习笔记
- 运行python代码报错UnicodeDecodeError: &#39;ascii&#39; codec can&#39;t decode byte 0xe7 in position 91: ordinal not in range(128)的解决办法
- 查看Msi文件内容
- 一个SQL Server 2008 R2 死锁的问题解决
- php析构函数
- 【转载】awk简介
- Mysql数据库的索引原理
- XML中的五个保留字符及实体引用
- pip install -r requirements.txt 安装mysqldb失败 解决方案
- Python 3从入门到精通01-环境搭建
- 04_Python的数据类型1数值和字符串_Python编程之路
- mysql新特性
- python数据结构与算法第五天【顺序表】
- JS算法练习二