فهرست منبع

增加zheng-cms-rpc-service,实现zheng-cms分布式服务

shuzheng 8 سال پیش
والد
کامیت
7e0e67713c
17فایلهای تغییر یافته به همراه351 افزوده شده و 0 حذف شده
  1. 2 0
      zheng-cms/pom.xml
  2. 106 0
      zheng-cms/zheng-cms-rpc-service/pom.xml
  3. 13 0
      zheng-cms/zheng-cms-rpc-service/src/main/java/com/zheng/cms/dao/mapper/CmsArticleVOMapper.java
  4. 23 0
      zheng-cms/zheng-cms-rpc-service/src/main/java/com/zheng/cms/dao/mapper/CmsArticleVOMapper.xml
  5. 13 0
      zheng-cms/zheng-cms-rpc-service/src/main/java/com/zheng/cms/dao/mapper/CmsCategoryVOMapper.java
  6. 13 0
      zheng-cms/zheng-cms-rpc-service/src/main/java/com/zheng/cms/dao/mapper/CmsTagVOMapper.java
  7. 13 0
      zheng-cms/zheng-cms-rpc-service/src/main/java/com/zheng/cms/dao/mapper/UserVOMapper.java
  8. 39 0
      zheng-cms/zheng-cms-rpc-service/src/main/java/com/zheng/cms/dao/mapper/UserVOMapper.xml
  9. 39 0
      zheng-cms/zheng-cms-rpc-service/src/main/java/com/zheng/cms/rpc/service/listener/ApplicationContextListener.java
  10. 17 0
      zheng-cms/zheng-cms-rpc-service/src/main/resources/applicationContext-dubbo-provider.xml
  11. 11 0
      zheng-cms/zheng-cms-rpc-service/src/main/resources/applicationContext-listener.xml
  12. 1 0
      zheng-cms/zheng-cms-rpc-service/src/main/resources/config.properties
  13. 18 0
      zheng-cms/zheng-cms-rpc-service/src/main/resources/log4j.properties
  14. 1 0
      zheng-cms/zheng-cms-rpc-service/src/main/resources/profiles/dev.properties
  15. 1 0
      zheng-cms/zheng-cms-rpc-service/src/main/resources/profiles/prod.properties
  16. 1 0
      zheng-cms/zheng-cms-rpc-service/src/main/resources/profiles/test.properties
  17. 40 0
      zheng-cms/zheng-cms-rpc-service/src/main/webapp/WEB-INF/web.xml

+ 2 - 0
zheng-cms/pom.xml

@@ -20,6 +20,8 @@
 
     <modules>
         <module>zheng-cms-dao</module>
+        <module>zheng-cms-rpc-api</module>
+        <module>zheng-cms-rpc-service</module>
         <module>zheng-cms-service</module>
         <module>zheng-cms-web</module>
         <module>zheng-cms-job</module>

+ 106 - 0
zheng-cms/zheng-cms-rpc-service/pom.xml

@@ -0,0 +1,106 @@
+<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/maven-v4_0_0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+
+    <parent>
+        <groupId>com.zheng</groupId>
+        <artifactId>zheng-cms</artifactId>
+        <version>1.0.0</version>
+    </parent>
+
+    <artifactId>zheng-cms-rpc-service</artifactId>
+    <packaging>war</packaging>
+
+    <name>zheng-cms-rpc-service Maven Webapp</name>
+    <url>http://www.zhangshuzheng.cn</url>
+
+    <dependencies>
+        <dependency>
+            <groupId>com.zheng</groupId>
+            <artifactId>zheng-cms-rpc-api</artifactId>
+            <version>1.0.0</version>
+        </dependency>
+        <dependency>
+            <groupId>junit</groupId>
+            <artifactId>junit</artifactId>
+            <version>4.12</version>
+            <scope>test</scope>
+        </dependency>
+        <dependency>
+            <groupId>javax.servlet</groupId>
+            <artifactId>servlet-api</artifactId>
+            <version>2.5</version>
+            <scope>provided</scope>
+        </dependency>
+        <dependency>
+            <groupId>javax.servlet</groupId>
+            <artifactId>jstl</artifactId>
+            <version>1.2</version>
+        </dependency>
+    </dependencies>
+
+    <profiles>
+        <profile>
+            <id>dev</id>
+            <properties>
+                <env>dev</env>
+            </properties>
+            <activation>
+                <activeByDefault>true</activeByDefault>
+            </activation>
+        </profile>
+        <profile>
+            <id>test</id>
+            <properties>
+                <env>test</env>
+            </properties>
+        </profile>
+        <profile>
+            <id>prod</id>
+            <properties>
+                <env>prod</env>
+            </properties>
+        </profile>
+    </profiles>
+
+    <build>
+        <finalName>zheng-cms-rpc-service</finalName>
+        <filters>
+            <filter>src/main/resources/profiles/${env}.properties</filter>
+        </filters>
+        <resources>
+            <resource>
+                <directory>src/main/resources</directory>
+                <filtering>true</filtering>
+            </resource>
+        </resources>
+        <plugins>
+            <!-- jetty插件 -->
+            <plugin>
+                <groupId>org.eclipse.jetty</groupId>
+                <artifactId>jetty-maven-plugin</artifactId>
+                <!--<version>9.0.0.v20130308</version>-->
+                <version>9.2.7.v20150116</version>
+                <configuration>
+                    <scanIntervalSeconds>3</scanIntervalSeconds>
+                    <webApp>
+                        <contextPath>/</contextPath>
+                    </webApp>
+                    <httpConnector>
+                        <port>2225</port>
+                    </httpConnector>
+                    <reload>automatic</reload>
+                </configuration>
+            </plugin>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-surefire-plugin</artifactId>
+                <version>2.18.1</version>
+                <configuration>
+                    <skipTests>true</skipTests>
+                    <testFailureIgnore>true</testFailureIgnore>
+                </configuration>
+            </plugin>
+        </plugins>
+    </build>
+</project>

+ 13 - 0
zheng-cms/zheng-cms-rpc-service/src/main/java/com/zheng/cms/dao/mapper/CmsArticleVOMapper.java

@@ -0,0 +1,13 @@
+package com.zheng.cms.dao.mapper;
+
+/**
+ * 文章VOMapper
+ * Created by shuzheng on 2017/01/07.
+ */
+public interface CmsArticleVOMapper {
+
+    int up(Integer articleId);
+
+    int down(Integer articleId);
+
+}

+ 23 - 0
zheng-cms/zheng-cms-rpc-service/src/main/java/com/zheng/cms/dao/mapper/CmsArticleVOMapper.xml

@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.zheng.cms.dao.mapper.CmsArticleVOMapper">
+
+	<!-- 排序上移 -->
+	<select id="up" resultType="int" parameterType="int">
+		select
+			u.id u_id,u.username,u.password,u.nickname,u.sex,u.ctime,u.content,
+			b.id b_id,b.userid,b.name
+		from
+			user u
+		left join
+			book b
+		on
+			u.id=b.userid
+		where
+			u.id=#{id,jdbcType=INTEGER}
+	</select>
+
+	<!-- 缓存 -->
+	<cache type="org.mybatis.caches.ehcache.LoggingEhcache" />
+
+</mapper>

+ 13 - 0
zheng-cms/zheng-cms-rpc-service/src/main/java/com/zheng/cms/dao/mapper/CmsCategoryVOMapper.java

@@ -0,0 +1,13 @@
+package com.zheng.cms.dao.mapper;
+
+/**
+ * 类目VOMapper
+ * Created by shuzheng on 2017/01/07.
+ */
+public interface CmsCategoryVOMapper {
+
+    int up(Integer articleId);
+
+    int down(Integer articleId);
+
+}

+ 13 - 0
zheng-cms/zheng-cms-rpc-service/src/main/java/com/zheng/cms/dao/mapper/CmsTagVOMapper.java

@@ -0,0 +1,13 @@
+package com.zheng.cms.dao.mapper;
+
+/**
+ * 标签VOMapper
+ * Created by shuzheng on 2017/01/07.
+ */
+public interface CmsTagVOMapper {
+
+    int up(Integer articleId);
+
+    int down(Integer articleId);
+
+}

+ 13 - 0
zheng-cms/zheng-cms-rpc-service/src/main/java/com/zheng/cms/dao/mapper/UserVOMapper.java

@@ -0,0 +1,13 @@
+package com.zheng.cms.dao.mapper;
+
+import com.zheng.cms.dao.model.UserVO;
+
+/**
+ * 用户VOMapper
+ * Created by shuzheng on 2017/01/07.
+ */
+public interface UserVOMapper {
+
+	UserVO selectUserWithBook(int id);
+	
+}

+ 39 - 0
zheng-cms/zheng-cms-rpc-service/src/main/java/com/zheng/cms/dao/mapper/UserVOMapper.xml

@@ -0,0 +1,39 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.zheng.cms.dao.mapper.UserVOMapper">
+
+	<!-- 结果映射关系 -->
+	<resultMap id="UserResultMap" type="com.zheng.cms.dao.model.UserVO">
+		<id column="u_id" property="id"/>
+		<result column="username" property="username"/>
+		<result column="password" property="password"/>
+		<result column="nickname" property="nickname"/>
+		<result column="sex" property="sex"/>
+		<result column="ctime" property="ctime"/>
+		<result column="content" property="content" />
+		<collection column="userid" property="books" ofType="com.zheng.cms.dao.model.Book">
+			<id column="b_id" property="id"/>
+			<result column="userid" property="userid"/>
+			<result column="name" property="name"/>
+		</collection>
+	</resultMap>
+	
+	<!-- 查询一对多的所有记录 -->
+	<select id="selectUserWithBook" resultMap="UserResultMap" parameterType="int">
+		select
+			u.id u_id,u.username,u.password,u.nickname,u.sex,u.ctime,u.content,
+			b.id b_id,b.userid,b.name
+		from
+			user u
+		left join
+			book b
+		on
+			u.id=b.userid
+		where
+			u.id=#{id,jdbcType=INTEGER}
+	</select>
+
+	<!-- 缓存 -->
+	<cache type="org.mybatis.caches.ehcache.LoggingEhcache" />
+	
+</mapper>

+ 39 - 0
zheng-cms/zheng-cms-rpc-service/src/main/java/com/zheng/cms/rpc/service/listener/ApplicationContextListener.java

@@ -0,0 +1,39 @@
+package com.zheng.cms.rpc.service.listener;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.context.ApplicationListener;
+import org.springframework.context.event.ContextRefreshedEvent;
+import org.springframework.stereotype.Service;
+
+import java.lang.reflect.Method;
+import java.util.Map;
+
+/**
+ * spring容器初始化完成事件
+ * Created by shuzheng on 2017/1/7.
+ */
+public class ApplicationContextListener implements ApplicationListener<ContextRefreshedEvent> {
+
+    private static Logger _log = LoggerFactory.getLogger(ApplicationContextListener.class);
+
+    @Override
+    public void onApplicationEvent(ContextRefreshedEvent contextRefreshedEvent) {
+        // root application context
+        if(null == contextRefreshedEvent.getApplicationContext().getParent()) {
+            _log.info(">>>>> spring初始化完毕");
+            // spring初始化完毕后,通过反射调用所有service的initMapper方法
+            Map<String, Object> services = contextRefreshedEvent.getApplicationContext().getBeansWithAnnotation(Service.class);
+            for(Object service : services.values()) {
+                try {
+                    Method initMapper = service.getClass().getDeclaredMethod("initMapper");
+                    initMapper.invoke(service);
+                } catch (Exception e) {
+                    e.printStackTrace();
+                }
+            }
+            _log.info(">>>>> 初始化完成service的initMapper方法");
+        }
+    }
+
+}

+ 17 - 0
zheng-cms/zheng-cms-rpc-service/src/main/resources/applicationContext-dubbo-provider.xml

@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<beans xmlns="http://www.springframework.org/schema/beans"
+       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+       xmlns:dubbo="http://code.alibabatech.com/schema/dubbo"
+       xsi:schemaLocation="http://www.springframework.org/schema/beans
+        http://www.springframework.org/schema/beans/spring-beans.xsd
+        http://code.alibabatech.com/schema/dubbo
+        http://code.alibabatech.com/schema/dubbo/dubbo.xsd ">
+
+    <dubbo:application name="zheng-cms-rpc-service"/>
+
+    <dubbo:registry protocol="zookeeper" address="127.0.0.1:2181"/>
+
+    <dubbo:protocol name="dubbo" port="20880"/>
+
+
+</beans>

+ 11 - 0
zheng-cms/zheng-cms-rpc-service/src/main/resources/applicationContext-listener.xml

@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<beans xmlns="http://www.springframework.org/schema/beans"
+       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.xsd">
+
+    <!-- Spring容器初始化完成监听器 -->
+    <bean class="com.zheng.cms.rpc.service.listener.ApplicationContextListener"></bean>
+
+</beans>

+ 1 - 0
zheng-cms/zheng-cms-rpc-service/src/main/resources/config.properties

@@ -0,0 +1 @@
+env=${profile.env}

+ 18 - 0
zheng-cms/zheng-cms-rpc-service/src/main/resources/log4j.properties

@@ -0,0 +1,18 @@
+#off/fatal/error/warn/info/debug/all
+log4j.debug=false
+log4j.rootLogger=info, stdout
+
+# Console output
+log4j.appender.stdout=org.apache.log4j.ConsoleAppender
+log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
+log4j.appender.stdout.layout.ConversionPattern=%d [%t] %-5p [%c] - %m%n
+
+#Spring logging configuration
+log4j.category.org.springframework = warn
+
+#Druid logging configuration
+log4j.logger.druid.sql=warn,stdout
+log4j.logger.druid.sql.DataSource=warn,stdout
+log4j.logger.druid.sql.Connection=warn,stdout
+log4j.logger.druid.sql.Statement=warn,stdout
+log4j.logger.druid.sql.ResultSet=warn,stdout

+ 1 - 0
zheng-cms/zheng-cms-rpc-service/src/main/resources/profiles/dev.properties

@@ -0,0 +1 @@
+profile.env=dev

+ 1 - 0
zheng-cms/zheng-cms-rpc-service/src/main/resources/profiles/prod.properties

@@ -0,0 +1 @@
+profile.env=prod

+ 1 - 0
zheng-cms/zheng-cms-rpc-service/src/main/resources/profiles/test.properties

@@ -0,0 +1 @@
+profile.env=test

+ 40 - 0
zheng-cms/zheng-cms-rpc-service/src/main/webapp/WEB-INF/web.xml

@@ -0,0 +1,40 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
+         xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
+         version="2.5">
+
+    <!-- 强制进行转码 -->
+    <filter>
+        <filter-name>CharacterEncodingFilter</filter-name>
+        <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
+        <init-param>
+            <param-name>encoding</param-name>
+            <param-value>UTF-8</param-value>
+        </init-param>
+    </filter>
+    <filter-mapping>
+        <filter-name>CharacterEncodingFilter</filter-name>
+        <url-pattern>/*</url-pattern>
+        <dispatcher>REQUEST</dispatcher>
+        <dispatcher>FORWARD</dispatcher>
+    </filter-mapping>
+
+    <!-- 默认的spring配置文件是在WEB-INF下的applicationContext.xml -->
+    <listener>
+        <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
+    </listener>
+    <context-param>
+        <param-name>contextConfigLocation</param-name>
+        <param-value>
+            classpath*:applicationContext*.xml
+        </param-value>
+    </context-param>
+
+    <!-- 日志配置文件 -->
+    <context-param>
+        <param-name>log4jConfigLocation</param-name>
+        <param-value>classpath:log4j.properties</param-value>
+    </context-param>
+
+</web-app>