七、Solr服务部署和安全
来源:互联网 发布:手机缓存数据怎么清除 编辑:程序博客网 时间:2024/06/05 18:06
概念:
我们知道,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服务部署和安全
- 在windows和linux下分别部署Solr服务
- 使用tomcat部署solr服务
- solr安装和部署
- Solr的搭建和部署
- Solr的搭建和部署
- 部署LyncServer2013之七 启动服务和登陆LyncServer控制面板
- 服务事务和安全
- SUS服务自动化部署安全更新
- Windows 证书服务部署安全基础框架
- 学习Solr部署和创建core
- Solr-----1、Solr部署
- solr部署
- solr部署
- solr部署
- solr部署
- solr部署
- 配置solr服务(默认使用jetty部署)
- JSON详解
- NSInvocation简单使用
- 五种 JSP页面跳转方法详解
- 文章标题
- 并发编程之GCD(来自Xcode Dev 亮了的原创开发技术博客)
- 七、Solr服务部署和安全
- linux之return和exit引发的大问题(vfork和fork)
- 2012年5月SAT香港真题解析
- 完美实现Android在listview添加checkbox多选操作问题
- C/C++,从未过时的编程语言之父
- oracle 11g dgbroker搭建dataguard
- 2012年5月SAT香港真题解析
- c prime plus第八章
- linux文件是怎么存储的