(转) 淘淘商城系列——搜索服务搭建

http://blog.csdn.net/yerenyuan_pku/article/details/72886305java

Solr服务配置好以后,接下来咱们就要考虑一个问题,那就是咱们要把商品数据导入到索引库里面才行,不然的话,咱们是没有办法实现搜索这个功能的。接下来咱们势必要搭建搜索工程了。首先,咱们仍是先看下淘淘商城的总体架构图,以下图所示,咱们已经写完了后台管理系统、商品服务、商城门户、内容服务,如今须要搭建的是搜索系统和搜索服务。 

下面咱们便来搭建搜索服务工程。git

搭建taotao-search工程

咱们可参考taotao-manager工程的建立来搭建搜索服务工程,它是后台的服务层工程。这个工程里面须要不少模块,咱们须把这些模块单独拆分,因此它应该是一个聚合工程。 
首先点击【File】菜单选项,并在下拉框中选中【New】,接着点击【Other】,以下: 

在输入框中输入maven,并选择Maven Project,以下: 

点击【Next】,勾选Create a simple project复选框,若是你不打上这个勾,它会让你选择一个骨架,但骨架里面是没有pom这个模板的。 

点击【Next】,出现以下对话框,在该对话框中定义maven工程的坐标,以下: 

最后点击【Finish】,taotao-search工程便可建立完毕。github

搭建taotao-search-interface模块

如今咱们来搭建taotao-search-interface模块,方法是在taotao-search工程上右键→Maven→New Maven Module Project,以下图所示。 

弹出以下对话框,勾选”Create a simple project”,在Module Name中输入taotao-search-interface,而后点击”Next”。 

选择该模块的打包方式,咱们使用默认的jar,直接点击”Finish”。 
web

搭建taotao-search-service模块

搭建taotao-search-service模块,步骤基本上同上,只是打包方式换成war便可,以下图所示。 

至于dao和pojo这两个模块咱们不用在taotao-search工程再新建一遍了,由于咱们在taotao-manager工程当中便建立好了,咱们只须要引用这两个模块就能够了。spring

配置taotao-search工程的pom.xml文件

参考taotao-manager聚合工程,把它的pom.xml文件中的依赖拷过来,只是须要修改下tomcat插件的端口号,修改成8084(前面已经用到8083了)。 

为方便你们复制,现把taotao-search工程的pom.xml文件的内容贴出。sql

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <parent> <groupId>com.taotao</groupId> <artifactId>taotao-parent</artifactId> <version>0.0.1-SNAPSHOT</version> </parent> <groupId>com.taotao</groupId> <artifactId>taotao-search</artifactId> <version>0.0.1-SNAPSHOT</version> <packaging>pom</packaging> <modules> <module>taotao-search-interface</module> <module>taotao-search-service</module> </modules> <dependencies> <dependency> <groupId>com.taotao</groupId> <artifactId>taotao-common</artifactId> <version>0.0.1-SNAPSHOT</version> </dependency> </dependencies> <!-- 配置tomcat插件 --> <build> <plugins> <plugin> <groupId>org.apache.tomcat.maven</groupId> <artifactId>tomcat7-maven-plugin</artifactId> <configuration> <port>8084</port> <path>/</path> </configuration> </plugin> </plugins> </build> </project>

 

配置taotao-search-interface模块的pom.xml文件

咱们可参考taotao-manager-interface工程的pom.xml文件,因为咱们的搜索服务也可能用到pojo,主要添加对taotao-manager-pojo的依赖,以下图所示。 
数据库

配置taotao-search-service模块的pom.xml文件

咱们能够参考taotao-manager-service工程的依赖。因为搜索服务要用到数据库,所以须要有taotao-manager-dao,把依赖的interface改成咱们的taotao-search-interface,taotao-search-service所须要依赖的内容以下所示。apache

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <parent> <groupId>com.taotao</groupId> <artifactId>taotao-search</artifactId> <version>0.0.1-SNAPSHOT</version> </parent> <artifactId>taotao-search-service</artifactId> <packaging>war</packaging> <dependencies> <dependency> <groupId>com.taotao</groupId> <artifactId>taotao-manager-dao</artifactId> <version>0.0.1-SNAPSHOT</version> </dependency> <dependency> <groupId>com.taotao</groupId> <artifactId>taotao-search-interface</artifactId> <version>0.0.1-SNAPSHOT</version> </dependency> <!-- Spring --> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-context</artifactId> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-beans</artifactId> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-webmvc</artifactId> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-jdbc</artifactId> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-aspects</artifactId> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-jms</artifactId> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-context-support</artifactId> </dependency> <!-- dubbo相关 --> <dependency> <groupId>com.alibaba</groupId> <artifactId>dubbo</artifactId> <!-- 排除依赖 --> <exclusions> <exclusion> <groupId>org.springframework</groupId> <artifactId>spring</artifactId> </exclusion> <exclusion> <groupId>org.jboss.netty</groupId> <artifactId>netty</artifactId> </exclusion> </exclusions> </dependency> <!-- zookeeper的客户端,你要链接zookeeper,须要把如下两个jar包加进来 --> <dependency> <groupId>org.apache.zookeeper</groupId> <artifactId>zookeeper</artifactId> </dependency> <dependency> <groupId>com.github.sgroschupf</groupId> <artifactId>zkclient</artifactId> </dependency> </dependencies> </project>

 

框架整合

咱们把taotao-manager-service的src/main/resources目录下的mybatis、properties、spring三个目录粘贴到taotao-search-service的src/main/resources目录中。SqlMapConfig.xml文件不用动,以下图所示。 

properties目录下的db.properties配置文件也不用修改,以下图所示。 

接着咱们再看下spring目录下的文件,首先看applicationContext-dao.xml文件,这个配置文件用来操做数据库的,咱们须要在该配置文件中作一点改动,以下图所示。 

为了你们方便复制,现把该文件的内容黏贴出来。tomcat

<beans xmlns="http://www.springframework.org/schema/beans" xmlns:context="http://www.springframework.org/schema/context" xmlns:p="http://www.springframework.org/schema/p" xmlns:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.2.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.2.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-4.2.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-4.2.xsd http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-4.2.xsd"> <!-- 数据库链接池 --> <!-- 加载配置文件 --> <context:property-placeholder location="classpath:properties/db.properties" /> <!-- 数据库链接池 --> <bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource" destroy-method="close"> <property name="url" value="${jdbc.url}" /> <property name="username" value="${jdbc.username}" /> <property name="password" value="${jdbc.password}" /> <property name="driverClassName" value="${jdbc.driver}" /> <property name="maxActive" value="10" /> <property name="minIdle" value="5" /> </bean> <!-- 让spring管理sqlsessionfactory 使用mybatis和spring整合包中的 --> <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"> <!-- 数据库链接池 --> <property name="dataSource" ref="dataSource" /> <!-- 加载mybatis的全局配置文件 --> <property name="configLocation" value="classpath:mybatis/SqlMapConfig.xml" /> </bean> <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer"> <property name="basePackage" value="com.taotao.mapper,com.taotao.search.mapper" /> </bean> </beans>

 

除此以外,咱们还要到taotao-search-service的src/main/java目录下新建一个com.taotao.search.mapper包,以下图所示。 

下面咱们来看下spring目录下的第二个文件——applicationContext-service.xml,咱们把包扫描器扫描的包修改成”com.taotao.search.service”,将对外发布的dubbo服务的端口改成”20882”,因为还没写服务接口,咱们先把拷过来的暴露的服务接口注释掉(留个模板),而且将提供方应用信息名称改成”taotao-search”。 

为了你们方便复制,现把该文件的内容黏贴出来。markdown

<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:context="http://www.springframework.org/schema/context" xmlns:p="http://www.springframework.org/schema/p" xmlns:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx" xmlns:dubbo="http://code.alibabatech.com/schema/dubbo" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.2.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.2.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-4.2.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-4.2.xsd http://code.alibabatech.com/schema/dubbo http://code.alibabatech.com/schema/dubbo/dubbo.xsd http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-4.2.xsd"> <context:component-scan base-package="com.taotao.search.service"></context:component-scan> <!-- 使用dubbo发布服务 --> <!-- 提供方应用信息,用于计算依赖关系 --> <dubbo:application name="taotao-search" /> <dubbo:registry protocol="zookeeper" address="192.168.25.128:2181" /> <!-- 用dubbo协议在20882端口暴露服务 --> <dubbo:protocol name="dubbo" port="20882" /> <!-- 声明须要暴露的服务接口 --> <!-- <dubbo:service interface="com.taotao.service.ItemService" ref="itemServiceImpl" timeout="300000" /> --> </beans>

 

因为上面配置的要扫描的包尚未建立,所以咱们在taotao-search-interface工程中新建”com.taotao.search.service”包,在taotao-search-service工程中新建”com.taotao.search.service.impl”包,以下图所示。 

咱们再看下一个applicationContext-trans.xml配置文件,这个配置文件是用来配置事务的,因为搜索服务只是查数据库,不涉及到改数据库,所以咱们用不到事务,照理来讲,咱们应该把这个配置文件删除掉,但我这里仍是将其留下来了,并且还修改切面的包为com.taotao.search.service,以下图所示。 

至于该文件删不删,全凭我的意愿。 
最后,咱们把taotao-manager-service下的WEB-INF及web.xml,粘贴到taotao-search-service的webapp目录下,修改web.xml文件中的<display-name>为”taotao-search”。 

至此,咱们的框架就整合好了。但愿你们渡过愉快的一天!

 
0
相关文章
相关标签/搜索