Browse Source

@IPU_REQ_2021@升级springboot为2.1.3-RELEASE,代码优化。

weihf 4 years ago
parent
commit
2109be5cb3

+ 1 - 2
ipu-rest-demo/Dockerfile

@ -1,5 +1,4 @@
1 1
FROM openjdk:8-jdk-alpine
2
VOLUME /tmp
3 2
WORKDIR /package
4
ADD  target/ipu-rest-demo.jar /package
3
ADD  target/ipu-rest-demo.jar .
5 4
ENTRYPOINT java -Djava.security.egd=file:/dev/./urandom -jar ./ipu-rest-demo.jar $0 $@

+ 23 - 57
ipu-rest-demo/pom.xml

@ -11,30 +11,28 @@
11 11
	<packaging>jar</packaging>
12 12
	<name>ipu-rest-demo</name>
13 13
14
	<repositories>
15
		<!-- IPU相关仓库 -->
16
		<repository>
17
			<id>ipu</id>
18
			<name>ipu repository</name>
19
			<url>http://114.215.100.48:9090/nexus/content/groups/public/</url>
20
			<releases>
21
				<enabled>true</enabled>
22
			</releases>
23
			<snapshots>
24
				<enabled>true</enabled>
25
				<updatePolicy>always</updatePolicy>
26
			</snapshots>
27
		</repository>
28
	</repositories>
29
14
    <!-- 用于测试deploy需要上传的私人仓库,如不需要deploy,请屏蔽此段配置 -->
15
    <distributionManagement>
16
        <!-- release仓库 -->
17
        <repository>
18
            <id>ipu-private</id>
19
            <url>http://192.168.128.142:8081/nexus/content/repositories/releases/</url>
20
        </repository>
21
        <!-- snapshot仓库 -->
22
        <snapshotRepository>
23
            <id>ipu-private</id>
24
            <url>http://192.168.128.142:8081/nexus/content/repositories/snapshots/</url>
25
        </snapshotRepository>
26
    </distributionManagement>
27
    
30 28
	<properties>
31 29
		<env>dev</env>
32 30
		<skip-test>true</skip-test>
33 31
		<start-class>com.ai.ipu.server.demo.IpuRestDemoStart</start-class>
34 32
		<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
35 33
		<ipu>3.2-SNAPSHOT</ipu>
36
		<ipu-rest>3.2-SNAPSHOT</ipu-rest>
37
		<org.springframework.boot>1.5.9.RELEASE</org.springframework.boot>
34
		<ipu-rest>3.3-SNAPSHOT</ipu-rest>
35
		<org.springframework.boot>2.1.3.RELEASE</org.springframework.boot>
38 36
39 37
		<!-- docker仓库服务器及端口,如果只是docker容器,则为镜像前缀 -->
40 38
		<!-- ipudocker.com对应47.105.130.83  --> 
@ -45,9 +43,8 @@
45 43
		<docker-registry-password>ipuDocker@83</docker-registry-password>
46 44
47 45
		<msgframe>1.9.2</msgframe>
48
		<mongodb.version>3.11.2</mongodb.version>
49 46
		<jms>1.1</jms>
50
		<google.plugin>29.0-jre</google.plugin>
47
		<google.plugin>16.0.1</google.plugin>
51 48
	</properties>
52 49
53 50
	<dependencyManagement>
@ -55,7 +52,7 @@
55 52
			<dependency>
56 53
				<groupId>com.ai.ipu.server</groupId>
57 54
				<artifactId>ipu-dependencies</artifactId>
58
				<version>${ipu}</version>
55
				<version>${ipu-rest}</version>
59 56
				<type>pom</type>
60 57
				<scope>import</scope>
61 58
			</dependency>
@ -72,17 +69,11 @@
72 69
	<dependencies>
73 70
		<!-- dubbo相关依赖 -->
74 71
		<dependency>
75
			<groupId>com.alibaba</groupId>
76
			<artifactId>dubbo</artifactId>
77
		</dependency>
78
		<dependency>
79
		    <groupId>com.github.sgroschupf</groupId>
80
		    <artifactId>zkclient</artifactId>
81
		</dependency>
82
		<dependency>
83
		    <groupId>com.netflix.curator</groupId>
84
		    <artifactId>curator-framework</artifactId>
72
			<groupId>com.ai.ipu.test</groupId>
73
			<artifactId>ipu-dubbo-api</artifactId>
74
			<version>0.0.1-SNAPSHOT</version>
85 75
		</dependency>
76
86 77
		<!-- msgframe相关依赖 -->
87 78
		<dependency>
88 79
			<groupId>com.ai.aif.msgframe</groupId>
@ -101,51 +92,26 @@
101 92
        <dependency>
102 93
			<groupId>com.ai.ipu.server</groupId>
103 94
			<artifactId>ipu-restful</artifactId>
104
			<exclusions>
105
				<exclusion>
106
					<groupId>com.ai.ipu</groupId>
107
					<artifactId>ipu-cache</artifactId>
108
				</exclusion>
109
			</exclusions>
110
111 95
        </dependency>
96
        
112 97
        <!-- 使用ipu-nosql、ipu-cache 3.2-SNAPSHOT是因为配合ipu-spring-nacos自动同步配置所需 -->
113 98
		<dependency>
114 99
            <groupId>com.ai.ipu</groupId>
115 100
            <artifactId>ipu-nosql</artifactId>
116
            <version>${ipu}</version>
117 101
        </dependency>
118 102
		<dependency>
119
			<groupId>com.ai.ipu</groupId>
120
			<artifactId>ipu-cache</artifactId>
121
			<version>${ipu}</version>
122
		</dependency>
123
		<dependency>
124 103
		    <groupId>com.ai.ipu</groupId>
125 104
		    <artifactId>ipu-s3</artifactId>
126
		    <version>${ipu}</version>
127 105
		</dependency>
128 106
		<dependency>
129 107
			<groupId>com.ai.ipu</groupId>
130 108
			<artifactId>ipu-spring-nacos</artifactId>
131
			<version>${ipu}</version>
132 109
		</dependency>
133 110
		<dependency>
134 111
		    <groupId>com.google.guava</groupId>
135 112
		    <artifactId>guava</artifactId>
136 113
		    <version>${google.plugin}</version>
137 114
		</dependency>
138
        <!-- 这里引入mongo-java-driver的原因是springboot1.5.9缺省使用了mongo-java-driver低版本的驱动,
139
                                导致ipu-nosql里MongoCredential.createScramSha256Credential报“方法不存在”。
140
                               由于ipu-rest-libs里引入springboot采用了import方式;
141
                                因此无法通过修改mongodb.version覆盖springboot内的mongodb.version值。
142
                                如果ipu-rest-libs里引入springboot的方式采用parent,可以删除以下引入;
143
                                但要确保在当前pom.xml或ipu-rest-libs里通过重新定义mongodb.version来覆盖springboot的缺省值。 -->
144
        <dependency>
145
            <groupId>org.mongodb</groupId>
146
            <artifactId>mongo-java-driver</artifactId>
147
            <version>${mongodb.version}</version>
148
        </dependency>
149 115
	</dependencies>
150 116
151 117
	<build>

+ 3 - 3
ipu-rest-demo/src/main/java/com/ai/ipu/server/demo/IpuRestDemoStart.java

@ -13,13 +13,13 @@ import com.ai.ipu.restful.spring.SpringManager;
13 13
 * @desc 启动的时候需要指定参数--server.port=8080
14 14
 */
15 15
public class IpuRestDemoStart {
16
    public final static String DUBBO_CONSUMER_CONFIG = "dubbo-consumer-simple.xml";
16
//    public final static String DUBBO_CONSUMER_CONFIG = "dubbo-consumer-simple.xml";
17 17
    public final static String EXCEPTION_MESSAGES_CONFIG = "exception_messages";
18 18
    
19 19
    public static void main(String[] args) {
20 20
        /*在spring中注册dubbo消费者配置*/
21
        SpringManager.registerSpringContext(
22
                new ClassPathXmlApplicationContext(new String[] { DUBBO_CONSUMER_CONFIG }));
21
//        SpringManager.registerSpringContext(
22
//                new ClassPathXmlApplicationContext(new String[] { DUBBO_CONSUMER_CONFIG }));
23 23
        /*注册dubbo异常信息编码配置*/
24 24
        IpuBaseException.registerCode(EXCEPTION_MESSAGES_CONFIG);
25 25
        /*启动SpringBoot服务*/

+ 1 - 1
ipu-rest-demo/src/main/java/com/ai/ipu/server/demo/aspect/MongoTransactionAspect.java

@ -11,7 +11,7 @@ import com.ai.ipu.nosql.mongodb.MongoCacheFactory;
11 11

12 12
@Aspect
13 13
public class MongoTransactionAspect {
14
    transient protected final ILogger log = IpuLoggerFactory.createLogger(MongoTransactionAspect.class);
14
    protected static final transient ILogger log = IpuLoggerFactory.createLogger(MongoTransactionAspect.class);
15 15
    static final String executionService = "execution(* com.ai..control..*(..))";
16 16
    
17 17
    @Pointcut(executionService)

+ 9 - 5
ipu-rest-demo/src/main/java/com/ai/ipu/server/demo/cache/RedisConfig.java

@ -6,6 +6,7 @@ import org.springframework.cache.annotation.EnableCaching;
6 6
import org.springframework.context.annotation.Bean;
7 7
import org.springframework.context.annotation.Configuration;
8 8
import org.springframework.data.redis.cache.RedisCacheManager;
9
import org.springframework.data.redis.connection.RedisConnectionFactory;
9 10
import org.springframework.data.redis.connection.jedis.JedisConnectionFactory;
10 11
import org.springframework.data.redis.core.RedisTemplate;
11 12
import org.springframework.data.redis.serializer.StringRedisSerializer;
@ -56,11 +57,14 @@ public class RedisConfig {
56 57
     * @param redisTemplate
57 58
     * @return
58 59
     */
59
    @Bean
60
    public CacheManager cacheManager(RedisTemplate redisTemplate) {
61
        RedisCacheManager redisCacheManager = new RedisCacheManager(redisTemplate);
62
        return redisCacheManager;
63
    }
60
//    @Bean
61
//    public CacheManager cacheManager(RedisConnectionFactory redisConnectionFactory) {
62
//    	RedisCacheConfiguration redisCacheConfiguration = RedisCacheConfiguration.defaultCacheConfig()
63
//                .entryTtl( Duration.ofHours(1)); // 设置缓存有效期一小时
64
//        return RedisCacheManager
65
//                .builder( RedisCacheWriter.nonLockingRedisCacheWriter(redisConnectionFactory))
66
//                .cacheDefaults(redisCacheConfiguration).build();
67
//    }
64 68

65 69
    /**
66 70
     * 设置连接池属性

+ 6 - 28
ipu-rest-demo/src/main/java/com/ai/ipu/server/demo/control/cache/RedisController.java

@ -1,12 +1,6 @@
1 1
package com.ai.ipu.server.demo.control.cache;
2 2

3
import java.util.HashMap;
4
import java.util.Iterator;
5
import java.util.List;
6
import java.util.Map;
7
import java.util.Map.Entry;
8 3

9
import org.springframework.beans.factory.annotation.Autowired;
10 4
import org.springframework.stereotype.Controller;
11 5
import org.springframework.web.bind.annotation.RequestMapping;
12 6
import org.springframework.web.bind.annotation.ResponseBody;
@ -15,26 +9,10 @@ import com.ai.ipu.basic.log.ILogger;
15 9
import com.ai.ipu.basic.log.IpuLoggerFactory;
16 10
import com.ai.ipu.cache.CacheFactory;
17 11
import com.ai.ipu.cache.ICache;
18
import com.ai.ipu.cache.config.IpuCacheConfig;
19
import com.ai.ipu.common.xml.Dom4jHelper;
12

20 13
import com.ai.ipu.data.JMap;
21 14
import com.ai.ipu.data.impl.JsonMap;
22
import com.ai.ipu.database.dao.IpuDaoManager;
23
import com.ai.ipu.database.dao.impl.SqlDao;
24
import com.ai.ipu.database.datasource.DataSourceEntity;
25
import com.ai.ipu.database.uitl.MybatisUtil;
26
import com.ai.ipu.dfs.s3.IFs;
27
import com.ai.ipu.dfs.s3.IpuDfsFactory;
28
import com.ai.ipu.dfs.s3.conf.IpuDfsConfig;
29
import com.ai.ipu.dfs.s3.entity.BucketEntity;
30
import com.ai.ipu.dfs.s3.entity.DfsEntity;
31
import com.ai.ipu.nacos.config.IpuNacosConfig;
32
import com.ai.ipu.nacos.service.IpuNacosServiceImpl;
33
import com.ai.ipu.nosql.INoSql;
34
import com.ai.ipu.nosql.config.IpuNoSQLConfig;
35
import com.ai.ipu.nosql.mongodb.MongoCacheFactory;
36
import com.ai.ipu.server.demo.config.IpuSpringNacosConfig;
37
import com.github.pagehelper.util.StringUtil;
15

38 16
/**
39 17
 * 基于ipu-cache组件操作范例
40 18
 * @author weihf@asiainfo.com
@ -44,7 +22,7 @@ import com.github.pagehelper.util.StringUtil;
44 22
@Controller
45 23
@RequestMapping("/ipu-cache/")
46 24
public class RedisController {
47
	private static final ILogger LOGGER = IpuLoggerFactory.createLogger(RedisController.class);
25
	private static final transient ILogger LOGGER = IpuLoggerFactory.createLogger(RedisController.class);
48 26
	
49 27
	
50 28
	@ResponseBody
@ -52,7 +30,7 @@ public class RedisController {
52 30
    public JMap get(JMap param) throws Exception {
53 31
		JMap result = new JsonMap();
54 32
		final String CACHE_KEY = "com:ai:ipu:rest-demo:test";
55
		final String DEFAULT_CONN_NAME = "ssn";
33
		final String DEFAULT_CONN_NAME = "test";
56 34
		String connName = param.getString("connName", DEFAULT_CONN_NAME);
57 35
		String key = param.getString("key", CACHE_KEY);
58 36
		ICache cache = null;
@ -62,7 +40,7 @@ public class RedisController {
62 40
			LOGGER.debug(key + " is " + result.getString("result"));			
63 41
		} catch (Exception e)
64 42
		{
65
			String errorMsg = "从redis中获取" + key + "错误:" + e.getMessage();
43
			String errorMsg = "从redis中获取" + key + "错误:" + e.toString();
66 44
			LOGGER.error(errorMsg);
67 45
			result.put("result", errorMsg);
68 46
		}finally {
@ -79,7 +57,7 @@ public class RedisController {
79 57
		JMap result = new JsonMap();
80 58
		final String CACHE_KEY = "com:ai:ipu:rest-demo:test";
81 59
		final String CACHE_VALUE = "123";
82
		final String DEFAULT_CONN_NAME = "ssn";
60
		final String DEFAULT_CONN_NAME = "test";
83 61
		String connName = param.getString("connName", DEFAULT_CONN_NAME);
84 62
		String key = param.getString("key", CACHE_KEY);
85 63
		String value = param.getString("value", CACHE_VALUE);

+ 1 - 1
ipu-rest-demo/src/main/java/com/ai/ipu/server/demo/control/common/ExceptionController.java

@ -25,7 +25,7 @@ public class ExceptionController {
25 25
    @RequestMapping("/default")
26 26
    public JMap defaultException(JMap data) throws Exception {
27 27
        if(true){
28
            IpuUtility.error("抛出默认异常");
28
            IpuUtility.error("300");
29 29
        }
30 30
        return data;
31 31
    }

+ 15 - 13
ipu-rest-demo/src/main/java/com/ai/ipu/server/demo/control/dubbo/DubboControl.java

@ -1,14 +1,14 @@
1 1
package com.ai.ipu.server.demo.control.dubbo;
2 2

3
import org.apache.dubbo.config.annotation.Reference;
3 4
import org.springframework.stereotype.Controller;
4 5
import org.springframework.web.bind.annotation.RequestMapping;
5 6
import org.springframework.web.bind.annotation.ResponseBody;
6 7

7 8
import com.ai.ipu.basic.reflect.ReflectUtil;
8 9
import com.ai.ipu.basic.util.IpuUtility;
9
import com.ai.ipu.restful.spring.SpringManager;
10
import com.ai.ipu.service.demo.IBizService;
11
import com.ailk.common.data.IData;
10
import com.ai.ipu.data.JMap;
11
import com.ai.ipu.test.springboot.service.IBizService;
12 12

13 13
/**
14 14
 * @author huangbo@asiainfo.com
@ -19,7 +19,9 @@ import com.ailk.common.data.IData;
19 19
@Controller
20 20
@RequestMapping("/dubbo")
21 21
public class DubboControl {
22

22
	@Reference
23
	IBizService bizService;
24
	
23 25
    /**
24 26
     * @author huangbo@asiainfo.com
25 27
     * @title: callBizService
@ -27,9 +29,9 @@ public class DubboControl {
27 29
     */
28 30
    @ResponseBody
29 31
    @RequestMapping("/biz")
30
    public IData callBizService(IData params) {
31
        IBizService bizService = (IBizService)SpringManager.takeSpringContext().getBean("bizService"); // 获取远程服务代理
32
        IData result = bizService.queryUserInfo(params); // 执行远程方法
32
    public JMap callBizService(JMap params) {
33
//        IBizService bizService = (IBizService)SpringManager.takeSpringContext().getBean("bizService"); // 获取远程服务代理
34
    	JMap result = bizService.queryUserInfo(params); // 执行远程方法
33 35
        result.put("rest_result", "测试biz类型服务调用");
34 36
        return result;
35 37
    }
@ -41,17 +43,17 @@ public class DubboControl {
41 43
     */
42 44
    @ResponseBody
43 45
    @RequestMapping("/common")
44
    public IData callCommonService(IData params) {
45
        String serviceName = params.getString("service_name");
46
    public JMap callCommonService(JMap params) {
47
//        String serviceName = params.getString("service_name");
46 48
        String methodName = params.getString("method_name");
47
        Object service = SpringManager.takeSpringContext().getBean(serviceName);
48
        IData result = null;
49
//        Object service = SpringManager.takeSpringContext().getBean(serviceName);
50
        JMap result = null;
49 51
        try {
50
            result = (IData)ReflectUtil.invokeMethod(service, methodName, new Object[]{params}, new Class<?>[]{IData.class});
52
            result = (JMap)ReflectUtil.invokeMethod(bizService, methodName, new Object[]{params}, new Class<?>[]{JMap.class});
51 53
            result.put("rest_result", "测试common类型服务调用");
52 54
        }catch (Exception e) {
53 55
            // TODO Auto-generated catch block
54
            IpuUtility.error(serviceName + "服务的" + methodName + "方法调用异常:" + e.getMessage());
56
            IpuUtility.error( methodName + "方法调用异常:" + e.getMessage());
55 57
        }
56 58
        return result;
57 59
    }

+ 15 - 3
ipu-rest-demo/src/main/resources/dev/application.properties

@ -8,10 +8,12 @@ spring.mvc.static-path-pattern=/**
8 8
#spring.resources.static-locations=file:${web.root}
9 9
spring.resources.static-locations=classpath:/${web.root}
10 10

11
#默认/
12
server.context-path=/ipu
11
#1.x默认/
12
#server.context-path=/ipu
13 13
#默认/。注册DispatcherServlet对应path,亦可通过dispatcherRegistration方法配置
14
server.servlet-path=/
14
#server.servlet-path=/
15
#2.x
16
server.servlet.context-path=/ipu
15 17
#使用maven中的变量替换
16 18
logging.file=target/logs/${project.artifactId}.log
17 19
spring.application.name=${project.artifactId}
@ -46,3 +48,13 @@ management.security.enabled=false
46 48
#重启目录
47 49
#spring.devtools.restart.additional-paths=src/main/java
48 50
#spring.devtools.restart.exclude=WEB-INF/**
51

52

53
spring.main.allow-bean-definition-overriding=true
54
dubbo.application.name=dubbo_consumer
55
dubbo.protocol.name=dubbo
56
dubbo.protocol.port=-1
57
dubbo.consumer.check=false
58
dubbo.registry.check=false
59
dubbo.registry.address=zookeeper://47.105.160.21:2108
60
dubbo.registry.client=curator

+ 7 - 6
ipu-rest-demo/src/main/resources/dev/ipu-cache.xml

@ -36,20 +36,21 @@
36 36

37 37
	<cache name="test" type="redis">
38 38
		<servers>
39
			<server ip="192.168.128.132" port="26379" />
40
			<server ip="192.168.128.132" port="26380" />
41
			<server ip="192.168.128.132" port="26381" />
39
			<server ip="192.168.128.143" port="7001" />
40
			<server ip="192.168.128.142" port="7001" />
41
			<server ip="192.168.128.129" port="7001" />
42

42 43
		</servers>
43 44
		<!-- 客户端类型:Jedis,JedisCluster,JedisSentinel -->
44
		<config name="clientType" value="JedisSentinel" />
45
		<config name="clientType" value="JedisCluster" />
45 46
		<!-- 主节点名 -->
46 47
		<config name="masterName" value="mymaster" />
47 48
		<!-- 访问redis的密码,可以为空 -->
48
		<config name="auth" value="" />
49
		<config name="auth" value="ipu@321" />
49 50
		<!-- redis池的可用连接实例的最大数目,缺省为8 -->
50 51
		<config name="poolSize" value="10" />
51 52
		<!-- redis池最多有多少个状态为idle(空闲的)的jedis实例,缺省为8,空闲连接大于这个数会进行回收 -->
52
		<config name="maxIdle" />
53
		<config name="maxIdle"  value="10"/>
53 54
		<!-- 最小空闲数,空闲连接小于这个数会建立新的连接,缺省为0 -->
54 55
		<config name="minIdle" />
55 56
		<!-- 等待Response超时时间,默认5000ms -->

+ 2 - 1
ipu-rest-demo/src/main/resources/exception_messages_zh_CN.properties

@ -1,2 +1,3 @@
1 1
100=条件参数不能为空
2
200=[%v]参数异常
2
200=[%v]参数异常
3
300=自定义异常