Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
B
byit-myth-job
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
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
liyuan
byit-myth-job
Commits
192cfd39
Commit
192cfd39
authored
Apr 03, 2020
by
huangfusuper
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Plugin XML配置解析工具重构
parent
abf792c4
Hide whitespace changes
Inline
Side-by-side
Showing
6 changed files
with
267 additions
and
5 deletions
+267
-5
pom.xml
byit-plugin-core/byit-plugin-rpc-common/pom.xml
+7
-0
ServerConfigurationModel.java
...rc/main/java/com/byit/model/ServerConfigurationModel.java
+26
-0
ServiceConfigModel.java
...mmon/src/main/java/com/byit/model/ServiceConfigModel.java
+23
-0
XmlParseUtil.java
...rpc-common/src/main/java/com/byit/utils/XmlParseUtil.java
+175
-0
plugin.xml
...core/myth-plugin-rpc-server/src/main/resources/plugin.xml
+21
-0
plugin.xml
demo-client/byit-demo-client/src/main/resources/plugin.xml
+15
-5
No files found.
byit-plugin-core/byit-plugin-rpc-common/pom.xml
View file @
192cfd39
...
@@ -45,6 +45,12 @@
...
@@ -45,6 +45,12 @@
<version>
1.0-SNAPSHOT
</version>
<version>
1.0-SNAPSHOT
</version>
</dependency>
</dependency>
<dependency>
<groupId>
org.dom4j
</groupId>
<artifactId>
dom4j
</artifactId>
<version>
2.1.1
</version>
</dependency>
</dependencies>
</dependencies>
</project>
</project>
\ No newline at end of file
byit-plugin-core/byit-plugin-rpc-common/src/main/java/com/byit/model/ServerConfigurationModel.java
0 → 100644
View file @
192cfd39
package
com
.
byit
.
model
;
import
com.byit.registry.PluginServiceRegistry
;
import
lombok.AllArgsConstructor
;
import
lombok.Data
;
import
lombok.NoArgsConstructor
;
import
lombok.ToString
;
/**
* 映射服务器配置
* @author huangfu
*/
@Data
@AllArgsConstructor
@NoArgsConstructor
@ToString
public
class
ServerConfigurationModel
{
private
Integer
port
;
private
String
registryUrl
;
private
String
serverBiz
;
private
String
serverEnv
;
private
Integer
coreSize
;
private
Integer
maxSize
;
private
String
pluginServiceRegistry
;
private
String
pluginServerClass
;
}
byit-plugin-core/byit-plugin-rpc-common/src/main/java/com/byit/model/ServiceConfigModel.java
0 → 100644
View file @
192cfd39
package
com
.
byit
.
model
;
import
lombok.AllArgsConstructor
;
import
lombok.Data
;
import
lombok.NoArgsConstructor
;
import
lombok.ToString
;
import
java.util.List
;
import
java.util.Map
;
/**
* 服务配置文件的实体
* @author huangfu
*/
@Data
@NoArgsConstructor
@AllArgsConstructor
@ToString
public
class
ServiceConfigModel
{
private
Boolean
autoScan
;
private
ServerConfigurationModel
serverConfigurationModel
;
private
Map
<
String
,
String
>
classNames
;
}
byit-plugin-core/byit-plugin-rpc-common/src/main/java/com/byit/utils/XmlParseUtil.java
0 → 100644
View file @
192cfd39
package
com
.
byit
.
utils
;
import
com.byit.enums.LauncherEnum
;
import
com.byit.exptions.LauncherException
;
import
com.byit.model.ServerConfigurationModel
;
import
com.byit.model.ServiceConfigModel
;
import
org.apache.commons.lang3.StringUtils
;
import
org.dom4j.Document
;
import
org.dom4j.DocumentException
;
import
org.dom4j.Element
;
import
org.dom4j.io.SAXReader
;
import
java.net.URL
;
import
java.util.ArrayList
;
import
java.util.Iterator
;
import
java.util.concurrent.ConcurrentHashMap
;
/**
* 配置文件解析工具类
* @author huangfu
*/
public
class
XmlParseUtil
{
/**
* 解析的工具方法
* @param filePath 文件路径 相对
*/
public
static
ServiceConfigModel
parse
(
String
filePath
){
ServiceConfigModel
serviceConfigModel
=
new
ServiceConfigModel
();
serviceConfigModel
.
setServerConfigurationModel
(
new
ServerConfigurationModel
());
URL
resource
=
XmlParseUtil
.
class
.
getResource
(
filePath
);
SAXReader
reader
=
new
SAXReader
();
Document
document
;
try
{
document
=
reader
.
read
(
resource
);
}
catch
(
DocumentException
e
)
{
e
.
printStackTrace
();
throw
new
LauncherException
(
LauncherEnum
.
XML_DATA_ERROR
.
getMsg
());
}
Element
rootElement
=
document
.
getRootElement
();
if
(
rootElement
==
null
){
throw
new
LauncherException
(
LauncherEnum
.
XML_DATA_ERROR
.
getMsg
());
}
//开始解析内部数据 serverConfiguration
Element
autoScanElement
=
rootElement
.
element
(
"autoScan"
);
String
value
=
autoScanElement
.
attributeValue
(
"value"
);
serviceConfigModel
.
setAutoScan
(
Boolean
.
parseBoolean
(
value
));
//开始解析内部数据 serverConfiguration
Element
serverConfigurationElement
=
rootElement
.
element
(
"serverConfiguration"
);
Element
classNamesElement
=
rootElement
.
element
(
"classNames"
);
parseServerConfiguration
(
serverConfigurationElement
,
serviceConfigModel
);
packageScanValueParse
(
classNamesElement
,
serviceConfigModel
);
return
serviceConfigModel
;
}
/**
* 解析 ServerConfiguration
* @param serverConfigurationElement 服务
* @param serviceConfigModel 实体
*/
private
static
void
parseServerConfiguration
(
Element
serverConfigurationElement
,
ServiceConfigModel
serviceConfigModel
){
ServerConfigurationModel
serverConfigurationModel
=
serviceConfigModel
.
getServerConfigurationModel
();
Element
portElement
=
serverConfigurationElement
.
element
(
"port"
);
Element
registryUrlElement
=
serverConfigurationElement
.
element
(
"registryUrl"
);
Element
serverBizElement
=
serverConfigurationElement
.
element
(
"server-biz"
);
Element
serverEnvElement
=
serverConfigurationElement
.
element
(
"server-env"
);
Element
serverThreadElement
=
serverConfigurationElement
.
element
(
"server-thread"
);
Element
pluginServiceRegistryElement
=
serverConfigurationElement
.
element
(
"pluginServiceRegistry"
);
Element
pluginServerClassElement
=
serverConfigurationElement
.
element
(
"pluginServerClass"
);
portParse
(
portElement
,
serverConfigurationModel
);
serverStringParse
(
registryUrlElement
,
value
->
{
serverConfigurationModel
.
setRegistryUrl
(
value
);
});
serverStringParse
(
serverBizElement
,
value
->
{
serverConfigurationModel
.
setServerBiz
(
value
);
});
serverStringParse
(
serverEnvElement
,
value
->
{
serverConfigurationModel
.
setServerEnv
(
value
);
});
serverThreadParse
(
serverThreadElement
,
serverConfigurationModel
);
if
(
pluginServiceRegistryElement
!=
null
)
{
serverStringParse
(
pluginServiceRegistryElement
,
value
->{
if
(
StringUtils
.
isNotBlank
(
value
))
{
serverConfigurationModel
.
setPluginServiceRegistry
(
value
);
}
});
}
if
(
pluginServerClassElement
!=
null
)
{
serverStringParse
(
pluginServerClassElement
,
value
->{
if
(
StringUtils
.
isNotBlank
(
value
))
{
serverConfigurationModel
.
setPluginServerClass
(
value
);
}
});
}
}
/**
* 端口解析
* @param portElement 端口
* @param serverConfigurationModel 配置引用
*/
private
static
void
portParse
(
Element
portElement
,
ServerConfigurationModel
serverConfigurationModel
){
String
portStr
=
portElement
.
attributeValue
(
"value"
);
try
{
int
port
=
Integer
.
parseInt
(
portStr
.
trim
());
serverConfigurationModel
.
setPort
(
port
);
}
catch
(
Exception
e
){
e
.
printStackTrace
();
throw
new
LauncherException
(
LauncherEnum
.
XML_PORT_SET_ERROR
.
getMsg
());
}
}
/**
* 端口解析
* @param element element
*/
private
static
void
serverStringParse
(
Element
element
,
BaseCallback
baseCallback
){
String
bizStr
=
element
.
attributeValue
(
"value"
);
String
biz
=
bizStr
.
trim
();
try
{
baseCallback
.
run
(
biz
);
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
}
}
/**
*
* @param element 节点
* @param serverConfigurationModel 配置
*/
private
static
void
serverThreadParse
(
Element
element
,
ServerConfigurationModel
serverConfigurationModel
){
String
coreSizeStr
=
element
.
attributeValue
(
"core-size"
);
String
maxSizeStr
=
element
.
attributeValue
(
"max-size"
);
if
(
StringUtils
.
isNotBlank
(
coreSizeStr
))
{
serverConfigurationModel
.
setCoreSize
(
Integer
.
parseInt
(
coreSizeStr
.
trim
()));
}
else
{
serverConfigurationModel
.
setCoreSize
(-
1
);
}
if
(
StringUtils
.
isNotBlank
(
maxSizeStr
)){
serverConfigurationModel
.
setMaxSize
(
Integer
.
parseInt
(
maxSizeStr
.
trim
()));
}
else
{
serverConfigurationModel
.
setMaxSize
(-
1
);
}
}
/**
* 解析package
* @param packageRootElement 任务类
* @param serviceConfigModel 配置引用
*/
private
static
void
packageScanValueParse
(
Element
packageRootElement
,
ServiceConfigModel
serviceConfigModel
){
Iterator
<
Element
>
elementIterator
=
packageRootElement
.
elementIterator
();
while
(
elementIterator
.
hasNext
())
{
Element
packageElement
=
elementIterator
.
next
();
String
packageElementText
=
packageElement
.
attributeValue
(
"class"
);
String
jobNameText
=
packageElement
.
attributeValue
(
"jobName"
);
if
(
serviceConfigModel
.
getClassNames
()
==
null
){
serviceConfigModel
.
setClassNames
(
new
ConcurrentHashMap
<>(
8
));
}
serviceConfigModel
.
getClassNames
().
put
(
jobNameText
,
packageElementText
);
}
}
private
interface
BaseCallback
{
void
run
(
String
value
);
}
}
byit-plugin-core/myth-plugin-rpc-server/src/main/resources/plugin.xml
0 → 100644
View file @
192cfd39
<?xml version="1.0" encoding="UTF-8"?>
<executor-plugin>
<autoScan
value=
"false"
/>
<serverConfiguration>
<port
value=
"8989"
/>
<registryUrl
value=
"http://slocalhost:8080"
/>
<server-biz
value=
"myth-job"
/>
<server-env
value=
"dev"
/>
<server-thread
core-size=
""
max-size=
""
/>
<pluginServiceRegistry
value=
"com.byit.Test"
/>
<pluginServerClass
value=
"com.byit.Test"
/>
</serverConfiguration>
<classNames>
<className
jobName=
"demo"
class=
"com.byit.job.DemoJob"
/>
<className
jobName=
"demo1"
class=
"com.byit.job.EndNode"
/>
<className
jobName=
"demo2"
class=
"com.byit.job.StartNode"
/>
</classNames>
</executor-plugin>
\ No newline at end of file
demo-client/byit-demo-client/src/main/resources/plugin.xml
View file @
192cfd39
<?xml version="1.0" encoding="UTF-8"?>
<?xml version="1.0" encoding="UTF-8"?>
<executor-plugin>
<executor-plugin>
<port>
8899
</port>
<autoScan
value=
"false"
/>
<auto-scan
value=
"false"
></auto-scan>
<serverConfiguration>
<port
value=
"8989"
/>
<server-biz
value=
"myth-job"
/>
<server-env
value=
"dev"
/>
<server-thread
core-size=
""
max-size=
""
/>
<pluginServiceRegistry
class=
""
/>
<pluginServerClass
class=
""
/>
</serverConfiguration>
<classNames>
<classNames>
<className
>
com.byit.job.DemoJob
</className
>
<className
class=
"com.byit.job.DemoJob"
/
>
<className
>
com.byit.job.EndNode
</className
>
<className
class=
"com.byit.job.EndNode"
/
>
<className
>
com.byit.job.StartNode
</className
>
<className
class=
"com.byit.job.StartNode"
/
>
</classNames>
</classNames>
</executor-plugin>
</executor-plugin>
\ No newline at end of file
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