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
4f3255ea
Commit
4f3255ea
authored
Nov 29, 2019
by
huangfusuper
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
解决jar包运行下,无法扫描项目的情况
parent
682a0e40
Hide whitespace changes
Inline
Side-by-side
Showing
12 changed files
with
373 additions
and
43 deletions
+373
-43
JavaBeanJobTask.java
...min-core/src/main/java/com/byit/task/JavaBeanJobTask.java
+11
-0
IpUtil.java
...-core-common/src/main/java/com/byit/job/utils/IpUtil.java
+2
-2
RunJobServerHandler.java
...lugin/src/main/java/com/byit/rpc/RunJobServerHandler.java
+3
-1
ServerRunThread.java
...or-plugin/src/main/java/com/byit/rpc/ServerRunThread.java
+19
-4
JarRunScanProject.java
...plugin/src/main/java/com/byit/scan/JarRunScanProject.java
+93
-0
LocalFolderRunScanProject.java
...rc/main/java/com/byit/scan/LocalFolderRunScanProject.java
+24
-30
ScanRootPackage.java
...r-plugin/src/main/java/com/byit/scan/ScanRootPackage.java
+155
-0
IScanProject.java
...plugin/src/main/java/com/byit/scan/base/IScanProject.java
+17
-0
JobUtils.java
...exector-plugin/src/main/java/com/byit/utils/JobUtils.java
+34
-0
LoadBalance.java
...java/com/byit/rpc/remoting/invoker/route/LoadBalance.java
+9
-0
RpcLoadBalanceRoundStrategy.java
...oting/invoker/route/impl/RpcLoadBalanceRoundStrategy.java
+1
-0
Mains.java
...nt/byit-demo-client/src/main/java/com/byit/job/Mains.java
+5
-6
No files found.
byit-myth-core/myth-admin-core/src/main/java/com/byit/task/JavaBeanJobTask.java
View file @
4f3255ea
...
@@ -48,4 +48,15 @@ public class JavaBeanJobTask implements TimerTask {
...
@@ -48,4 +48,15 @@ public class JavaBeanJobTask implements TimerTask {
}
}
public
static
void
main
(
String
[]
args
)
{
JSONObject
jsonObject
=
new
JSONObject
();
jsonObject
.
put
(
"heartbeat"
,
"PENG"
);
//jsonObject.put("jobHandelName","addJob");
//jsonObject.put("param","asd");
long
start
=
System
.
currentTimeMillis
(
);
HttpUtil
.
post
(
"http://10.0.55.200:8888"
,
JSON
.
toJSONString
(
jsonObject
));
System
.
out
.
println
((
System
.
currentTimeMillis
(
)-
start
)
);
}
}
}
byit-myth-core/myth-core-common/src/main/java/com/byit/job/utils/IpUtil.java
View file @
4f3255ea
...
@@ -10,7 +10,6 @@ import com.byit.rpc.remoting.invoker.route.RpcLoadBalance;
...
@@ -10,7 +10,6 @@ import com.byit.rpc.remoting.invoker.route.RpcLoadBalance;
import
lombok.extern.slf4j.Slf4j
;
import
lombok.extern.slf4j.Slf4j
;
import
java.util.Arrays
;
import
java.util.Arrays
;
import
java.util.Collections
;
import
java.util.TreeSet
;
import
java.util.TreeSet
;
/**
/**
...
@@ -58,7 +57,8 @@ public class IpUtil {
...
@@ -58,7 +57,8 @@ public class IpUtil {
if
(
CollectionUtil
.
isEmpty
(
treeSet
))
{
if
(
CollectionUtil
.
isEmpty
(
treeSet
))
{
throw
new
PluginException
(
PluginEnum
.
NO_SERVICE_AVAILABLE
);
throw
new
PluginException
(
PluginEnum
.
NO_SERVICE_AVAILABLE
);
}
}
electiveIp
=
rpcLoadBalance
.
route
(
"PLUGIN-SERVER"
,
treeSet
);
//selectiveKey是对服务的唯一标识 比如轮询时他是轮询这个服务下的所由Url
electiveIp
=
rpcLoadBalance
.
route
(
urlsStr
,
treeSet
);
//删除这个IP
//删除这个IP
treeSet
.
remove
(
electiveIp
);
treeSet
.
remove
(
electiveIp
);
flag
=
survivalTest
(
electiveIp
);
flag
=
survivalTest
(
electiveIp
);
...
...
byit-myth-executor/myth-exector-plugin/src/main/java/com/byit/rpc/RunJobServerHandler.java
View file @
4f3255ea
...
@@ -26,6 +26,7 @@ public class RunJobServerHandler extends SimpleChannelInboundHandler<FullHttpReq
...
@@ -26,6 +26,7 @@ public class RunJobServerHandler extends SimpleChannelInboundHandler<FullHttpReq
private
static
final
String
PONG
=
"PONG"
;
private
static
final
String
PONG
=
"PONG"
;
@Override
@Override
protected
void
channelRead0
(
ChannelHandlerContext
ctx
,
FullHttpRequest
req
)
throws
Exception
{
protected
void
channelRead0
(
ChannelHandlerContext
ctx
,
FullHttpRequest
req
)
throws
Exception
{
log
.
info
(
"----------------------有请求过来了------------------------"
);
String
responseBody
=
""
;
String
responseBody
=
""
;
if
(
req
instanceof
HttpRequest
){
if
(
req
instanceof
HttpRequest
){
...
@@ -59,8 +60,9 @@ public class RunJobServerHandler extends SimpleChannelInboundHandler<FullHttpReq
...
@@ -59,8 +60,9 @@ public class RunJobServerHandler extends SimpleChannelInboundHandler<FullHttpReq
//响应给客户端
//响应给客户端
response
.
headers
().
set
(
HttpHeaderNames
.
CONTENT_LENGTH
,
byteBuf
.
readableBytes
());
response
.
headers
().
set
(
HttpHeaderNames
.
CONTENT_LENGTH
,
byteBuf
.
readableBytes
());
ctx
.
writeAndFlush
(
response
);
ctx
.
writeAndFlush
(
response
);
ctx
.
close
();
}
}
ctx
.
close
();
}
}
...
...
byit-myth-executor/myth-exector-plugin/src/main/java/com/byit/rpc/ServerRunThread.java
View file @
4f3255ea
package
com
.
byit
.
rpc
;
package
com
.
byit
.
rpc
;
import
com.byit.launcher.JobRunServerLauncher
;
import
com.byit.launcher.JobRunServerLauncher
;
import
com.byit.scan.JarRunScanProject
;
import
com.byit.scan.LocalFolderRunScanProject
;
import
com.byit.scan.base.IScanProject
;
import
com.byit.utils.JobUtils
;
import
com.byit.utils.JobUtils
;
import
com.byit.utils.ScanRootPackage
;
import
io.netty.bootstrap.ServerBootstrap
;
import
io.netty.bootstrap.ServerBootstrap
;
import
io.netty.channel.ChannelFuture
;
import
io.netty.channel.ChannelFuture
;
import
io.netty.channel.EventLoopGroup
;
import
io.netty.channel.EventLoopGroup
;
import
io.netty.channel.nio.NioEventLoopGroup
;
import
io.netty.channel.nio.NioEventLoopGroup
;
import
io.netty.channel.socket.nio.NioServerSocketChannel
;
import
io.netty.channel.socket.nio.NioServerSocketChannel
;
import
lombok.extern.slf4j.Slf4j
;
/**
/**
* @program: byit-myth-job->ServerRunThread
* @program: byit-myth-job->ServerRunThread
...
@@ -15,11 +18,22 @@ import io.netty.channel.socket.nio.NioServerSocketChannel;
...
@@ -15,11 +18,22 @@ import io.netty.channel.socket.nio.NioServerSocketChannel;
* @author: huangfu
* @author: huangfu
* @date: 2019/11/18 16:41
* @date: 2019/11/18 16:41
**/
**/
@Slf4j
public
class
ServerRunThread
implements
Runnable
{
public
class
ServerRunThread
implements
Runnable
{
private
Integer
port
;
private
Integer
port
=
8989
;
public
ServerRunThread
(
Integer
port
)
{
public
ServerRunThread
(
Integer
port
)
{
new
ScanRootPackage
();
//获取任务信息
IScanProject
iScanProject
;
if
(
JobUtils
.
isJarRun
()){
log
.
info
(
"-------------------jar包运行--------------------"
);
iScanProject
=
new
JarRunScanProject
(
JobUtils
.
filePath
());
}
else
{
log
.
info
(
"-------------------本地运行---------------------"
);
iScanProject
=
new
LocalFolderRunScanProject
();
}
iScanProject
.
addJobCache
();
JobRunServerLauncher
.
THREAD_RUN_MARK
=
"SUCCESS"
;
JobRunServerLauncher
.
THREAD_RUN_MARK
=
"SUCCESS"
;
this
.
port
=
port
;
this
.
port
=
port
;
}
}
...
@@ -38,7 +52,8 @@ public class ServerRunThread implements Runnable {
...
@@ -38,7 +52,8 @@ public class ServerRunThread implements Runnable {
.
channel
(
NioServerSocketChannel
.
class
)
.
channel
(
NioServerSocketChannel
.
class
)
.
childHandler
(
new
ServerChannelInitializer
());
.
childHandler
(
new
ServerChannelInitializer
());
try
{
try
{
ChannelFuture
sync
=
serverBootstrap
.
bind
(
port
==
null
?
8989
:
port
).
sync
();
ChannelFuture
sync
=
serverBootstrap
.
bind
(
port
).
sync
();
log
.
info
(
"----------------------port:{}--------------------"
,
port
);
sync
.
channel
().
closeFuture
().
sync
();
sync
.
channel
().
closeFuture
().
sync
();
}
catch
(
Exception
e
){
}
catch
(
Exception
e
){
e
.
printStackTrace
();
e
.
printStackTrace
();
...
...
byit-myth-executor/myth-exector-plugin/src/main/java/com/byit/scan/JarRunScanProject.java
0 → 100644
View file @
4f3255ea
package
com
.
byit
.
scan
;
import
com.byit.annotations.JobHandler
;
import
com.byit.job.handler.interfaces.IJobHandler
;
import
com.byit.scan.base.IScanProject
;
import
com.byit.utils.JobUtils
;
import
lombok.extern.slf4j.Slf4j
;
import
java.io.File
;
import
java.io.IOException
;
import
java.net.URL
;
import
java.net.URLClassLoader
;
import
java.util.Enumeration
;
import
java.util.jar.JarEntry
;
import
java.util.jar.JarFile
;
/**
* @program: byit-myth-job->JarRunScanProject
* @description: 这个是jar包运行时的操作
* @author: huangfu
* @date: 2019/11/29 11:16
**/
@Slf4j
public
class
JarRunScanProject
implements
IScanProject
{
/**
* 任务基类
*/
private
static
final
Class
<
IJobHandler
>
JOB_ROOT_CLASS
;
/**
* 任务注解类
*/
private
static
final
Class
<
JobHandler
>
JOB_HANDLER_CLASS
;
private
static
final
String
DOT_CLASS
=
".class"
;
private
static
final
String
DOT_MF
=
".MF"
;
private
static
String
rootPath
;
static
{
JOB_ROOT_CLASS
=
IJobHandler
.
class
;
JOB_HANDLER_CLASS
=
JobHandler
.
class
;
}
public
JarRunScanProject
(
String
rootPath
)
{
JarRunScanProject
.
rootPath
=
rootPath
;
}
public
static
void
classScan
()
throws
IOException
{
JarFile
jarFile
=
new
JarFile
(
rootPath
);
File
file
=
new
File
(
rootPath
);
URL
url
=
file
.
toURI
(
).
toURL
(
);
//获取当前jar的类加载器
URLClassLoader
urlClassLoader
=
new
URLClassLoader
(
new
URL
[]{
url
});
Enumeration
<
JarEntry
>
files
=
jarFile
.
entries
(
);
while
(
files
.
hasMoreElements
()){
process
(
files
.
nextElement
(),
urlClassLoader
);
}
}
private
static
void
process
(
JarEntry
jarEntry
,
ClassLoader
classLoader
)
{
String
name
=
jarEntry
.
getName
(
);
if
(!
name
.
endsWith
(
DOT_MF
)){
if
(
name
.
endsWith
(
DOT_CLASS
))
{
String
classNameEndWithClass
=
name
.
replaceAll
(
"/"
,
"."
);
String
className
=
classNameEndWithClass
.
substring
(
0
,
classNameEndWithClass
.
length
()-
DOT_CLASS
.
length
());
if
(
className
.
contains
(
"$"
)){
className
=
className
.
substring
(
0
,
className
.
lastIndexOf
(
"$"
));
}
try
{
Class
objectiveClass
=
classLoader
.
loadClass
(
className
);
if
(
JOB_ROOT_CLASS
.
isAssignableFrom
(
objectiveClass
)){
if
(
objectiveClass
.
isAnnotationPresent
(
JOB_HANDLER_CLASS
)){
System
.
out
.
println
(
className
);
JobHandler
annotation
=
(
JobHandler
)
objectiveClass
.
getAnnotation
(
JOB_HANDLER_CLASS
);
JobUtils
.
jobCache
.
put
(
annotation
.
value
(),
objectiveClass
);
}
}
}
catch
(
Throwable
ignored
){
}
}
}
}
@Override
public
void
addJobCache
()
{
try
{
classScan
();
}
catch
(
IOException
e
)
{
e
.
printStackTrace
(
);
}
}
}
byit-myth-executor/myth-exector-plugin/src/main/java/com/byit/
utils/ScanRootPackage
.java
→
byit-myth-executor/myth-exector-plugin/src/main/java/com/byit/
scan/LocalFolderRunScanProject
.java
View file @
4f3255ea
package
com
.
byit
.
utils
;
package
com
.
byit
.
scan
;
import
com.byit.annotations.JobHandler
;
import
com.byit.annotations.JobHandler
;
import
com.byit.job.handler.interfaces.IJobHandler
;
import
com.byit.job.handler.interfaces.IJobHandler
;
import
lombok.extern.slf4j.Slf4j
;
import
com.byit.scan.base.IScanProject
;
import
com.byit.utils.JobUtils
;
import
java.io.File
;
import
java.io.File
;
import
java.util.ArrayList
;
import
java.util.ArrayList
;
...
@@ -10,17 +11,12 @@ import java.util.List;
...
@@ -10,17 +11,12 @@ import java.util.List;
import
java.util.stream.Collectors
;
import
java.util.stream.Collectors
;
/**
/**
* @program: byit-myth-job->
ScanRootPackage
* @program: byit-myth-job->
LocalFolderRunScanProject
* @description:
扫描项目
* @description:
项目在本地运行,不是以jar包部署运行
* @author: huangfu
* @author: huangfu
* @date: 2019/11/
19 17:31
* @date: 2019/11/
29 10:42
**/
**/
@Slf4j
public
class
LocalFolderRunScanProject
implements
IScanProject
{
public
class
ScanRootPackage
{
public
ScanRootPackage
()
{
addJobCache
();
}
/**
/**
* 任务基类
* 任务基类
*/
*/
...
@@ -35,14 +31,13 @@ public class ScanRootPackage {
...
@@ -35,14 +31,13 @@ public class ScanRootPackage {
JOB_HANDLER_CLASS
=
JobHandler
.
class
;
JOB_HANDLER_CLASS
=
JobHandler
.
class
;
}
}
/**
/**
* 获取项目的根路径
* 获取项目的根路径
* @return
* @return
*/
*/
private
static
String
getProjectRootPath
(){
private
static
String
getProjectRootPath
(){
return
new
File
(
ScanRootPackage
.
class
.
getResource
(
"/"
).
getPath
()).
getPath
();
String
thisClassPath
=
new
File
(
LocalFolderRunScanProject
.
class
.
getResource
(
"/"
).
getPath
()).
getPath
();
return
thisClassPath
;
}
}
/**
/**
...
@@ -58,7 +53,7 @@ public class ScanRootPackage {
...
@@ -58,7 +53,7 @@ public class ScanRootPackage {
.
map
(
filePth
->
{
.
map
(
filePth
->
{
try
{
try
{
//获取类全限定名
//获取类全限定名
String
replace
=
filePth
.
replace
(
projectRootPath
+
File
.
separator
,
""
)
String
replace
=
filePth
.
replace
(
projectRootPath
+
File
.
separator
,
""
)
.
replace
(
File
.
separator
,
"."
)
.
replace
(
File
.
separator
,
"."
)
.
replace
(
".class"
,
""
);
.
replace
(
".class"
,
""
);
return
Class
.
forName
(
replace
);
return
Class
.
forName
(
replace
);
...
@@ -72,28 +67,18 @@ public class ScanRootPackage {
...
@@ -72,28 +67,18 @@ public class ScanRootPackage {
* 符合条件的类
* 符合条件的类
*/
*/
List
<
Class
>
meetTheCriteria
=
collect
.
stream
(
).
filter
(
objectiveClass
->{
List
<
Class
>
meetTheCriteria
=
collect
.
stream
(
).
filter
(
objectiveClass
->{
if
(
JOB_ROOT_CLASS
.
isAssignableFrom
(
objectiveClass
))
{
if
(
JOB_ROOT_CLASS
.
isAssignableFrom
(
objectiveClass
))
{
if
(
objectiveClass
.
isAnnotationPresent
(
JOB_HANDLER_CLASS
)){
if
(
objectiveClass
.
isAnnotationPresent
(
JOB_HANDLER_CLASS
)){
return
true
;
return
true
;
}
}
}
return
false
;
}
return
false
;
}).
collect
(
Collectors
.
toList
(
));
}).
collect
(
Collectors
.
toList
(
));
return
meetTheCriteria
;
return
meetTheCriteria
;
}
}
/**
/**
* 向缓存添加任务信息
*/
private
static
void
addJobCache
(){
getClassObjective
().
forEach
(
jobClass
->{
JobHandler
jobHandler
=
(
JobHandler
)
jobClass
.
getAnnotation
(
JobHandler
.
class
);
JobUtils
.
jobCache
.
put
(
jobHandler
.
value
(),
jobClass
);
});
}
/**
* 获取项目根路径下所有的类文件
* 获取项目根路径下所有的类文件
* @return
* @return
*/
*/
...
@@ -120,4 +105,13 @@ public class ScanRootPackage {
...
@@ -120,4 +105,13 @@ public class ScanRootPackage {
}
}
}
}
}
}
@Override
public
void
addJobCache
()
{
getClassObjective
().
forEach
(
jobClass
->{
JobHandler
jobHandler
=
(
JobHandler
)
jobClass
.
getAnnotation
(
JobHandler
.
class
);
JobUtils
.
jobCache
.
put
(
jobHandler
.
value
(),
jobClass
);
});
}
}
}
byit-myth-executor/myth-exector-plugin/src/main/java/com/byit/scan/ScanRootPackage.java
0 → 100644
View file @
4f3255ea
/*
package com.byit.scan;
import com.byit.annotations.JobHandler;
import com.byit.job.handler.interfaces.IJobHandler;
import com.byit.utils.JobUtils;
import lombok.extern.slf4j.Slf4j;
import java.io.File;
import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;
*/
/**
* @program: byit-myth-job->ScanRootPackage
* @description: 扫描项目
* @author: huangfu
* @date: 2019/11/19 17:31
**//*
@Slf4j
public class ScanRootPackage {
public ScanRootPackage() {
addJobCache();
}
*/
/**
* 任务基类
*//*
private static final Class<IJobHandler> JOB_ROOT_CLASS;
*/
/**
* 任务注解类
*//*
private static final Class<JobHandler> JOB_HANDLER_CLASS;
static {
JOB_ROOT_CLASS = IJobHandler.class;
JOB_HANDLER_CLASS = JobHandler.class;
}
*/
/**
* 获取项目的根路径
* @return
*//*
private static String getProjectRootPath(){
//String path = System.getProperty("java.class.path");
*/
/*String path1 = ScanRootPackage.class.getProtectionDomain().getCodeSource().getLocation().getPath();
try {
path1 = URLDecoder.decode(path1, "UTF-8");
} catch (UnsupportedEncodingException e) {
e.printStackTrace( );
}
System.out.println(path1 );*//*
String thisClassPath = new File(ScanRootPackage.class.getResource("/").getPath()).getPath();
return thisClassPath;
}
*/
/**
* 获取任务类型的CLASS对象
* 根据是否是{@link IJobHandler}判断
* @return
*//*
private static List<Class> getClassObjective() {
List<String> classFilePath = getClassFilePath( );
String projectRootPath = getProjectRootPath( );
//获取全限定名
List<Class> collect = classFilePath.stream( )
.map(filePth -> {
try {
//获取类全限定名
String replace = filePth.replace(projectRootPath+File.separator, "")
.replace(File.separator, ".")
.replace(".class", "");
return Class.forName(replace);
} catch (ClassNotFoundException e) {
e.printStackTrace( );
}
return null;
}).collect(Collectors.toList( ));
*/
/**
* 符合条件的类
*//*
List<Class> meetTheCriteria = collect.stream( ).filter(objectiveClass ->{
if (JOB_ROOT_CLASS.isAssignableFrom(objectiveClass)) {
if(objectiveClass.isAnnotationPresent(JOB_HANDLER_CLASS)){
return true;
}
}
return false;
}).collect(Collectors.toList( ));
return meetTheCriteria;
}
*/
/**
* 向缓存添加任务信息
*//*
private static void addJobCache(){
getClassObjective().forEach(jobClass ->{
JobHandler jobHandler = (JobHandler)jobClass.getAnnotation(JobHandler.class);
JobUtils.jobCache.put(jobHandler.value(),jobClass);
});
}
*/
/**
* 获取项目根路径下所有的类文件
* @return
*//*
private static List<String> getClassFilePath(){
ArrayList<String> classFileList = new ArrayList<>(10);
scan(getProjectRootPath(), classFileList);
return classFileList;
}
*/
/**
* 递归扫描
* @param rootPath
* @param list
*//*
private static void scan(String rootPath,List<String> list){
File rootFile = new File(rootPath);
File[] files = rootFile.listFiles( );
for (File file : files) {
if(file.isFile() && file.getName().endsWith(".class")){
list.add(file.getPath());
}else if(file.isDirectory()){
scan(file.getAbsolutePath(),list);
}
}
}
}
*/
byit-myth-executor/myth-exector-plugin/src/main/java/com/byit/scan/base/IScanProject.java
0 → 100644
View file @
4f3255ea
package
com
.
byit
.
scan
.
base
;
import
java.io.IOException
;
import
java.util.List
;
/**
* @program: byit-myth-job->IScanProject
* @description: 扫描项目的基类
* @author: huangfu
* @date: 2019/11/29 10:41
**/
public
interface
IScanProject
{
/**
* 将符合条件的任务添加到缓存层
*/
void
addJobCache
();
}
byit-myth-executor/myth-exector-plugin/src/main/java/com/byit/utils/JobUtils.java
View file @
4f3255ea
...
@@ -10,6 +10,8 @@ import lombok.extern.log4j.Log4j;
...
@@ -10,6 +10,8 @@ import lombok.extern.log4j.Log4j;
import
lombok.extern.slf4j.Slf4j
;
import
lombok.extern.slf4j.Slf4j
;
import
org.apache.commons.lang3.StringUtils
;
import
org.apache.commons.lang3.StringUtils
;
import
java.io.UnsupportedEncodingException
;
import
java.net.URLDecoder
;
import
java.util.Map
;
import
java.util.Map
;
import
java.util.concurrent.ConcurrentHashMap
;
import
java.util.concurrent.ConcurrentHashMap
;
...
@@ -24,6 +26,11 @@ public class JobUtils {
...
@@ -24,6 +26,11 @@ public class JobUtils {
private
static
final
String
REQUEST_PREFIX
=
"http://"
;
private
static
final
String
REQUEST_PREFIX
=
"http://"
;
private
static
final
String
REQUEST_ADD_JOB_RESOURCES_SUFFIX
=
"/job/addJob"
;
private
static
final
String
REQUEST_ADD_JOB_RESOURCES_SUFFIX
=
"/job/addJob"
;
/**
/**
* 当前项目运行环境 jar file
*/
private
static
final
String
OPERATING_ENVIRONMENT_JAR
=
"jar"
;
private
static
final
String
OPERATING_ENVIRONMENT_FILE
=
"file"
;
/**
* 任务的缓存
* 任务的缓存
*/
*/
public
static
final
Map
<
String
,
Class
<?
extends
IJobHandler
>>
jobCache
=
new
ConcurrentHashMap
<>();
public
static
final
Map
<
String
,
Class
<?
extends
IJobHandler
>>
jobCache
=
new
ConcurrentHashMap
<>();
...
@@ -49,4 +56,31 @@ public class JobUtils {
...
@@ -49,4 +56,31 @@ public class JobUtils {
return
addRequestResult
;
return
addRequestResult
;
}
}
/**
* 判断当前的运行环境是什么 jar : table of Contents(目录)
* @return jar -->true 目录 -->false
*/
public
static
boolean
isJarRun
(){
boolean
flag
=
false
;
String
protocol
=
JobUtils
.
class
.
getResource
(
""
).
getProtocol
();
if
(
OPERATING_ENVIRONMENT_JAR
.
equals
(
protocol
)){
flag
=
true
;
}
else
if
(
OPERATING_ENVIRONMENT_FILE
.
equals
(
protocol
)){
flag
=
false
;
}
return
flag
;
}
public
static
String
filePath
(){
String
path
=
JobUtils
.
class
.
getProtectionDomain
().
getCodeSource
().
getLocation
().
getFile
();
try
{
path
=
URLDecoder
.
decode
(
path
,
"UTF-8"
);
}
catch
(
UnsupportedEncodingException
e
)
{
e
.
printStackTrace
(
);
}
System
.
out
.
println
(
path
);
return
path
;
}
}
}
byit-myth-rpc/src/main/java/com/byit/rpc/remoting/invoker/route/LoadBalance.java
View file @
4f3255ea
...
@@ -26,4 +26,12 @@ public enum LoadBalance {
...
@@ -26,4 +26,12 @@ public enum LoadBalance {
}
}
return
defaultRouter
;
return
defaultRouter
;
}
}
}
class
test
{
public
static
void
main
(
String
[]
args
)
{
for
(
LoadBalance
value
:
LoadBalance
.
values
(
))
{
System
.
out
.
println
(
value
);
}
}
}
}
\ No newline at end of file
byit-myth-rpc/src/main/java/com/byit/rpc/remoting/invoker/route/impl/RpcLoadBalanceRoundStrategy.java
View file @
4f3255ea
...
@@ -8,6 +8,7 @@ import java.util.concurrent.ConcurrentHashMap;
...
@@ -8,6 +8,7 @@ import java.util.concurrent.ConcurrentHashMap;
import
java.util.concurrent.ConcurrentMap
;
import
java.util.concurrent.ConcurrentMap
;
/**
/**
* 轮循
* round
* round
*
*
*/
*/
...
...
demo-client/byit-demo-client/src/main/java/com/byit/job/Mains.java
View file @
4f3255ea
package
com
.
byit
.
job
;
package
com
.
byit
.
job
;
import
com.alibaba.fastjson.JSON
;
import
com.byit.job.model.JavaBeanJobInfo
;
import
com.byit.job.model.JavaBeanJobInfo
;
import
com.byit.launcher.JobRunServerLauncher
;
import
com.byit.launcher.JobRunServerLauncher
;
import
com.byit.rpc.remoting.invoker.route.LoadBalance
;
import
com.byit.utils.JobUtils
;
import
com.byit.utils.JobUtils
;
import
java.io.IOException
;
import
java.io.IOException
;
...
@@ -15,19 +15,18 @@ import java.io.IOException;
...
@@ -15,19 +15,18 @@ import java.io.IOException;
**/
**/
public
class
Mains
{
public
class
Mains
{
public
static
void
main
(
String
[]
args
)
throws
IOException
{
public
static
void
main
(
String
[]
args
)
throws
IOException
{
String
plServerUrl
=
"http://1
27.0.0.1:9999,http://127.0.0.1
:8888"
;
String
plServerUrl
=
"http://1
0.0.55.237:8888,http://10.0.55.232
:8888"
;
String
mythCron
=
"时间"
;
String
mythCron
=
"时间"
;
String
routingStrategy
=
"路由策略"
;
String
routingStrategy
=
LoadBalance
.
ROUND
.
name
()
;
String
blockingStrategy
=
"阻塞策略"
;
String
blockingStrategy
=
"阻塞策略"
;
String
callbackToken
=
"dsasadsad"
;
String
callbackToken
=
"dsasadsad"
;
String
gatewayToken
=
"asdsadsa"
;
String
gatewayToken
=
"asdsadsa"
;
String
requestIP
=
"1
27.0.0.1
"
;
String
requestIP
=
"1
0.0.55.237
"
;
String
requestPort
=
"8080"
;
String
requestPort
=
"8080"
;
String
param
=
"sadsadsa"
;
String
param
=
"sadsadsa"
;
String
name
=
"addJob"
;
String
name
=
"addJob"
;
JavaBeanJobInfo
javaBeanJobInfo
=
new
JavaBeanJobInfo
(
name
,
plServerUrl
,
mythCron
,
routingStrategy
,
blockingStrategy
,
callbackToken
,
gatewayToken
,
requestIP
,
requestPort
,
param
);
JavaBeanJobInfo
javaBeanJobInfo
=
new
JavaBeanJobInfo
(
name
,
plServerUrl
,
mythCron
,
routingStrategy
,
blockingStrategy
,
callbackToken
,
gatewayToken
,
requestIP
,
requestPort
,
param
);
JobUtils
.
addJob
(
javaBeanJobInfo
);
JobUtils
.
addJob
(
javaBeanJobInfo
);
new
JobRunServerLauncher
(
9999
);
new
JobRunServerLauncher
(
8888
);
}
}
}
}
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