Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
D
discovery
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
谢捷峰
discovery
Commits
7c195f92
Commit
7c195f92
authored
Jul 09, 2018
by
Nepxion
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
整合Actuator和Swagger
parent
1cfe5dea
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
128 additions
and
14 deletions
+128
-14
discovery-plugin-admin-center/pom.xml
+11
-0
discovery-plugin-admin-center/src/main/java/com/nepxion/discovery/plugin/admincenter/configuration/AdminAutoConfiguration.java
+2
-0
discovery-plugin-admin-center/src/main/java/com/nepxion/discovery/plugin/admincenter/configuration/SwaggerConfiguration.java
+87
-0
discovery-plugin-admin-center/src/main/java/com/nepxion/discovery/plugin/admincenter/endpoint/ConfigEndpoint.java
+13
-6
discovery-plugin-admin-center/src/main/java/com/nepxion/discovery/plugin/admincenter/endpoint/VersionEndpoint.java
+15
-8
No files found.
discovery-plugin-admin-center/pom.xml
View file @
7c195f92
...
@@ -24,5 +24,15 @@
...
@@ -24,5 +24,15 @@
<groupId>
org.springframework.boot
</groupId>
<groupId>
org.springframework.boot
</groupId>
<artifactId>
spring-boot-starter-actuator
</artifactId>
<artifactId>
spring-boot-starter-actuator
</artifactId>
</dependency>
</dependency>
<dependency>
<groupId>
io.springfox
</groupId>
<artifactId>
springfox-swagger2
</artifactId>
</dependency>
<dependency>
<groupId>
io.springfox
</groupId>
<artifactId>
springfox-swagger-ui
</artifactId>
</dependency>
</dependencies>
</dependencies>
</project>
</project>
\ No newline at end of file
discovery-plugin-admin-center/src/main/java/com/nepxion/discovery/plugin/admincenter/configuration/AdminAutoConfiguration.java
View file @
7c195f92
...
@@ -13,11 +13,13 @@ import org.springframework.boot.actuate.endpoint.Endpoint;
...
@@ -13,11 +13,13 @@ import org.springframework.boot.actuate.endpoint.Endpoint;
import
org.springframework.boot.autoconfigure.condition.ConditionalOnClass
;
import
org.springframework.boot.autoconfigure.condition.ConditionalOnClass
;
import
org.springframework.context.annotation.Bean
;
import
org.springframework.context.annotation.Bean
;
import
org.springframework.context.annotation.Configuration
;
import
org.springframework.context.annotation.Configuration
;
import
org.springframework.context.annotation.Import
;
import
com.nepxion.discovery.plugin.admincenter.endpoint.ConfigEndpoint
;
import
com.nepxion.discovery.plugin.admincenter.endpoint.ConfigEndpoint
;
import
com.nepxion.discovery.plugin.admincenter.endpoint.VersionEndpoint
;
import
com.nepxion.discovery.plugin.admincenter.endpoint.VersionEndpoint
;
@Configuration
@Configuration
@Import
(
SwaggerConfiguration
.
class
)
public
class
AdminAutoConfiguration
{
public
class
AdminAutoConfiguration
{
@ConditionalOnClass
(
Endpoint
.
class
)
@ConditionalOnClass
(
Endpoint
.
class
)
protected
static
class
AdminEndpointConfiguration
{
protected
static
class
AdminEndpointConfiguration
{
...
...
discovery-plugin-admin-center/src/main/java/com/nepxion/discovery/plugin/admincenter/configuration/SwaggerConfiguration.java
0 → 100644
View file @
7c195f92
package
com
.
nepxion
.
discovery
.
plugin
.
admincenter
.
configuration
;
/**
* <p>Title: Nepxion Discovery</p>
* <p>Description: Nepxion Discovery</p>
* <p>Copyright: Copyright (c) 2017-2050</p>
* <p>Company: Nepxion</p>
* @author Haojun Ren
* @version 1.0
*/
import
org.springframework.beans.factory.annotation.Value
;
import
org.springframework.context.annotation.Bean
;
import
org.springframework.context.annotation.Configuration
;
import
org.springframework.web.servlet.config.annotation.CorsRegistry
;
import
org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter
;
import
springfox.documentation.builders.ApiInfoBuilder
;
import
springfox.documentation.builders.PathSelectors
;
import
springfox.documentation.builders.RequestHandlerSelectors
;
import
springfox.documentation.service.ApiInfo
;
import
springfox.documentation.service.Contact
;
import
springfox.documentation.spi.DocumentationType
;
import
springfox.documentation.spring.web.plugins.Docket
;
import
springfox.documentation.swagger2.annotations.EnableSwagger2
;
@Configuration
@EnableSwagger2
public
class
SwaggerConfiguration
extends
WebMvcConfigurerAdapter
{
@Value
(
"${spring.application.name}"
)
private
String
serviceName
;
@Value
(
"${swagger.service.base.package}"
)
private
String
basePackage
;
@Value
(
"${swagger.service.description}"
)
private
String
description
;
@Value
(
"${swagger.service.version}"
)
private
String
version
;
@Value
(
"${swagger.service.license}"
)
private
String
license
;
@Value
(
"${swagger.service.license.url}"
)
private
String
licenseUrl
;
@Value
(
"${swagger.service.contact.name}"
)
private
String
contactName
;
@Value
(
"${swagger.service.contact.url}"
)
private
String
contactUrl
;
@Value
(
"${swagger.service.contact.email}"
)
private
String
contactEmail
;
@Bean
public
Docket
createRestApi
()
{
return
new
Docket
(
DocumentationType
.
SWAGGER_2
)
.
apiInfo
(
apiInfo
())
.
select
()
.
apis
(
RequestHandlerSelectors
.
basePackage
(
basePackage
))
// 扫描该包下的所有需要在Swagger中展示的API,@ApiIgnore注解标注的除外
.
paths
(
PathSelectors
.
any
())
.
build
();
}
private
ApiInfo
apiInfo
()
{
return
new
ApiInfoBuilder
()
.
title
(
serviceName
)
.
description
(
description
)
.
version
(
version
)
.
license
(
license
)
.
licenseUrl
(
licenseUrl
)
.
contact
(
new
Contact
(
contactName
,
contactUrl
,
contactEmail
))
.
build
();
}
// 解决跨域问题
@Override
public
void
addCorsMappings
(
CorsRegistry
registry
)
{
registry
.
addMapping
(
"/**"
)
.
allowedHeaders
(
"*"
)
.
allowedMethods
(
"*"
)
.
allowedOrigins
(
"*"
);
}
}
\ No newline at end of file
discovery-plugin-admin-center/src/main/java/com/nepxion/discovery/plugin/admincenter/endpoint/ConfigEndpoint.java
View file @
7c195f92
...
@@ -9,6 +9,10 @@ package com.nepxion.discovery.plugin.admincenter.endpoint;
...
@@ -9,6 +9,10 @@ package com.nepxion.discovery.plugin.admincenter.endpoint;
* @version 1.0
* @version 1.0
*/
*/
import
io.swagger.annotations.Api
;
import
io.swagger.annotations.ApiOperation
;
import
io.swagger.annotations.ApiParam
;
import
java.io.IOException
;
import
java.io.IOException
;
import
java.io.InputStream
;
import
java.io.InputStream
;
import
java.util.Collections
;
import
java.util.Collections
;
...
@@ -27,6 +31,7 @@ import org.springframework.web.bind.annotation.RequestBody;
...
@@ -27,6 +31,7 @@ import org.springframework.web.bind.annotation.RequestBody;
import
org.springframework.web.bind.annotation.RequestMapping
;
import
org.springframework.web.bind.annotation.RequestMapping
;
import
org.springframework.web.bind.annotation.RequestMethod
;
import
org.springframework.web.bind.annotation.RequestMethod
;
import
org.springframework.web.bind.annotation.ResponseBody
;
import
org.springframework.web.bind.annotation.ResponseBody
;
import
org.springframework.web.bind.annotation.RestController
;
import
com.nepxion.discovery.plugin.framework.cache.RuleCache
;
import
com.nepxion.discovery.plugin.framework.cache.RuleCache
;
import
com.nepxion.discovery.plugin.framework.constant.PluginConstant
;
import
com.nepxion.discovery.plugin.framework.constant.PluginConstant
;
...
@@ -35,6 +40,8 @@ import com.nepxion.discovery.plugin.framework.entity.RuleEntity;
...
@@ -35,6 +40,8 @@ import com.nepxion.discovery.plugin.framework.entity.RuleEntity;
import
com.nepxion.discovery.plugin.framework.event.PluginPublisher
;
import
com.nepxion.discovery.plugin.framework.event.PluginPublisher
;
import
com.nepxion.discovery.plugin.framework.event.RuleChangedEvent
;
import
com.nepxion.discovery.plugin.framework.event.RuleChangedEvent
;
@RestController
@Api
(
tags
=
{
"配置接口"
})
// 用法参照ServiceRegistryEndpoint和ServiceRegistryAutoConfiguration
// 用法参照ServiceRegistryEndpoint和ServiceRegistryAutoConfiguration
@ManagedResource
(
description
=
"Config Endpoint"
)
@ManagedResource
(
description
=
"Config Endpoint"
)
public
class
ConfigEndpoint
implements
MvcEndpoint
{
public
class
ConfigEndpoint
implements
MvcEndpoint
{
...
@@ -49,11 +56,11 @@ public class ConfigEndpoint implements MvcEndpoint {
...
@@ -49,11 +56,11 @@ public class ConfigEndpoint implements MvcEndpoint {
@Autowired
@Autowired
private
RuleCache
ruleCache
;
private
RuleCache
ruleCache
;
// 推送规则配置信息
@RequestMapping
(
path
=
"/config/send"
,
method
=
RequestMethod
.
POST
)
@
RequestMapping
(
path
=
"send"
,
method
=
RequestMethod
.
POST
)
@
ApiOperation
(
value
=
"推送规则配置信息"
,
notes
=
""
,
response
=
ResponseEntity
.
class
,
httpMethod
=
"POST"
)
@ResponseBody
@ResponseBody
@ManagedOperation
@ManagedOperation
public
ResponseEntity
<?>
send
(
@RequestBody
String
config
)
{
public
ResponseEntity
<?>
send
(
@RequestBody
@ApiParam
(
value
=
"规则配置内容,XML格式"
,
required
=
true
)
String
config
)
{
Boolean
discoveryControlEnabled
=
pluginContextAware
.
isDiscoveryControlEnabled
();
Boolean
discoveryControlEnabled
=
pluginContextAware
.
isDiscoveryControlEnabled
();
if
(!
discoveryControlEnabled
)
{
if
(!
discoveryControlEnabled
)
{
return
new
ResponseEntity
<>(
Collections
.
singletonMap
(
"Message"
,
"Discovery control is disabled"
),
HttpStatus
.
NOT_FOUND
);
return
new
ResponseEntity
<>(
Collections
.
singletonMap
(
"Message"
,
"Discovery control is disabled"
),
HttpStatus
.
NOT_FOUND
);
...
@@ -73,8 +80,8 @@ public class ConfigEndpoint implements MvcEndpoint {
...
@@ -73,8 +80,8 @@ public class ConfigEndpoint implements MvcEndpoint {
return
ResponseEntity
.
ok
().
body
(
"OK"
);
return
ResponseEntity
.
ok
().
body
(
"OK"
);
}
}
// 查看当前生效的规则配置信息
@RequestMapping
(
path
=
"/config/view"
,
method
=
RequestMethod
.
GET
)
@
RequestMapping
(
path
=
"view"
,
method
=
RequestMethod
.
GET
)
@
ApiOperation
(
value
=
"查看当前生效的规则配置信息"
,
notes
=
""
,
response
=
ResponseEntity
.
class
,
httpMethod
=
"GET"
)
@ResponseBody
@ResponseBody
@ManagedOperation
@ManagedOperation
public
ResponseEntity
<?>
view
()
{
public
ResponseEntity
<?>
view
()
{
...
@@ -90,7 +97,7 @@ public class ConfigEndpoint implements MvcEndpoint {
...
@@ -90,7 +97,7 @@ public class ConfigEndpoint implements MvcEndpoint {
@Override
@Override
public
String
getPath
()
{
public
String
getPath
()
{
return
"/
config
"
;
return
"/"
;
}
}
@Override
@Override
...
...
discovery-plugin-admin-center/src/main/java/com/nepxion/discovery/plugin/admincenter/endpoint/VersionEndpoint.java
View file @
7c195f92
...
@@ -9,6 +9,10 @@ package com.nepxion.discovery.plugin.admincenter.endpoint;
...
@@ -9,6 +9,10 @@ package com.nepxion.discovery.plugin.admincenter.endpoint;
* @version 1.0
* @version 1.0
*/
*/
import
io.swagger.annotations.Api
;
import
io.swagger.annotations.ApiOperation
;
import
io.swagger.annotations.ApiParam
;
import
java.util.ArrayList
;
import
java.util.ArrayList
;
import
java.util.Collections
;
import
java.util.Collections
;
import
java.util.List
;
import
java.util.List
;
...
@@ -25,12 +29,15 @@ import org.springframework.web.bind.annotation.RequestBody;
...
@@ -25,12 +29,15 @@ import org.springframework.web.bind.annotation.RequestBody;
import
org.springframework.web.bind.annotation.RequestMapping
;
import
org.springframework.web.bind.annotation.RequestMapping
;
import
org.springframework.web.bind.annotation.RequestMethod
;
import
org.springframework.web.bind.annotation.RequestMethod
;
import
org.springframework.web.bind.annotation.ResponseBody
;
import
org.springframework.web.bind.annotation.ResponseBody
;
import
org.springframework.web.bind.annotation.RestController
;
import
com.nepxion.discovery.plugin.framework.adapter.PluginAdapter
;
import
com.nepxion.discovery.plugin.framework.adapter.PluginAdapter
;
import
com.nepxion.discovery.plugin.framework.context.PluginContextAware
;
import
com.nepxion.discovery.plugin.framework.context.PluginContextAware
;
import
com.nepxion.discovery.plugin.framework.event.PluginPublisher
;
import
com.nepxion.discovery.plugin.framework.event.PluginPublisher
;
import
com.nepxion.discovery.plugin.framework.event.VersionChangedEvent
;
import
com.nepxion.discovery.plugin.framework.event.VersionChangedEvent
;
@RestController
@Api
(
tags
=
{
"版本接口"
})
@ManagedResource
(
description
=
"Version Endpoint"
)
@ManagedResource
(
description
=
"Version Endpoint"
)
public
class
VersionEndpoint
implements
MvcEndpoint
{
public
class
VersionEndpoint
implements
MvcEndpoint
{
@Autowired
@Autowired
...
@@ -42,11 +49,11 @@ public class VersionEndpoint implements MvcEndpoint {
...
@@ -42,11 +49,11 @@ public class VersionEndpoint implements MvcEndpoint {
@Autowired
@Autowired
private
PluginPublisher
pluginPublisher
;
private
PluginPublisher
pluginPublisher
;
// 设置服务的动态版本
@RequestMapping
(
path
=
"/version/send"
,
method
=
RequestMethod
.
POST
)
@
RequestMapping
(
path
=
"send"
,
method
=
RequestMethod
.
POST
)
@
ApiOperation
(
value
=
"设置服务的动态版本"
,
notes
=
""
,
response
=
ResponseEntity
.
class
,
httpMethod
=
"POST"
)
@ResponseBody
@ResponseBody
@ManagedOperation
@ManagedOperation
public
ResponseEntity
<?>
send
(
@RequestBody
String
version
)
{
public
ResponseEntity
<?>
send
(
@RequestBody
@ApiParam
(
value
=
"版本号"
,
required
=
true
)
String
version
)
{
Boolean
discoveryControlEnabled
=
pluginContextAware
.
isDiscoveryControlEnabled
();
Boolean
discoveryControlEnabled
=
pluginContextAware
.
isDiscoveryControlEnabled
();
if
(!
discoveryControlEnabled
)
{
if
(!
discoveryControlEnabled
)
{
return
new
ResponseEntity
<>(
Collections
.
singletonMap
(
"Message"
,
"Discovery control is disabled"
),
HttpStatus
.
NOT_FOUND
);
return
new
ResponseEntity
<>(
Collections
.
singletonMap
(
"Message"
,
"Discovery control is disabled"
),
HttpStatus
.
NOT_FOUND
);
...
@@ -59,8 +66,8 @@ public class VersionEndpoint implements MvcEndpoint {
...
@@ -59,8 +66,8 @@ public class VersionEndpoint implements MvcEndpoint {
return
ResponseEntity
.
ok
().
body
(
"OK"
);
return
ResponseEntity
.
ok
().
body
(
"OK"
);
}
}
// 清除服务的动态版本
@RequestMapping
(
path
=
"/version/clear"
,
method
=
RequestMethod
.
GET
)
@
RequestMapping
(
path
=
"clear"
,
method
=
RequestMethod
.
GET
)
@
ApiOperation
(
value
=
"清除服务的动态版本"
,
notes
=
""
,
response
=
ResponseEntity
.
class
,
httpMethod
=
"GET"
)
@ResponseBody
@ResponseBody
@ManagedOperation
@ManagedOperation
public
ResponseEntity
<?>
clear
()
{
public
ResponseEntity
<?>
clear
()
{
...
@@ -76,8 +83,8 @@ public class VersionEndpoint implements MvcEndpoint {
...
@@ -76,8 +83,8 @@ public class VersionEndpoint implements MvcEndpoint {
return
ResponseEntity
.
ok
().
body
(
"OK"
);
return
ResponseEntity
.
ok
().
body
(
"OK"
);
}
}
// 查看服务的本地版本和动态版本
@RequestMapping
(
path
=
"/version/view"
,
method
=
RequestMethod
.
GET
)
@
RequestMapping
(
path
=
"view"
,
method
=
RequestMethod
.
GET
)
@
ApiOperation
(
value
=
"查看服务的本地版本和动态版本"
,
notes
=
""
,
response
=
ResponseEntity
.
class
,
httpMethod
=
"GET"
)
@ResponseBody
@ResponseBody
@ManagedOperation
@ManagedOperation
public
ResponseEntity
<
List
<
String
>>
view
()
{
public
ResponseEntity
<
List
<
String
>>
view
()
{
...
@@ -94,7 +101,7 @@ public class VersionEndpoint implements MvcEndpoint {
...
@@ -94,7 +101,7 @@ public class VersionEndpoint implements MvcEndpoint {
@Override
@Override
public
String
getPath
()
{
public
String
getPath
()
{
return
"/
version
"
;
return
"/"
;
}
}
@Override
@Override
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment