Skip to content

Commit a094fdc

Browse files
author
magiclu550
committed
[commit] #1061 rpc zombie thread is killed and the command bug is fixed
1 parent 0855239 commit a094fdc

4 files changed

Lines changed: 22 additions & 4 deletions

File tree

.idea/artifacts/jsmod2.xml

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

JPLS/src/main/java/cn/jsmod2/RPCHandler.java

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -79,9 +79,18 @@ public String start(String sw){
7979
Thread.sleep(1000);
8080
}
8181
}catch (Exception e){
82-
e.printStackTrace();
82+
Utils.printException(e);
8383
}
8484
}).start();
85+
new Thread(()->{
86+
while (Server.getSender()!=null&&!Server.getSender().getServer().isConnected);
87+
try{
88+
if(!Server.getSender().getServer().isConnected)ServerStarter.getInstance().getWebServer().shutdown();
89+
}catch (Exception e){
90+
Utils.printException(e);
91+
}
92+
93+
});
8594
}
8695

8796
return "server has started";

JPLS/src/main/java/cn/jsmod2/ServerStarter.java

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -49,13 +49,17 @@ public class ServerStarter {
4949
*/
5050
public static final String P_KEY = "jsmod";
5151

52+
53+
private WebServer webServer;
5254
/**
5355
* 通过此方法来判断是开启rpc模式还是直接启动,通过args里的-rpc是否存在来
5456
* 知晓,如果有-rpc参数,后面必须空格带着端口号,并且不得有其他的参数
5557
* @param args 启动参数
5658
*/
5759
public void start(String[] args){
5860

61+
62+
5963
//java -jar jsmod2.jar -rpc 20021
6064
//有-rpc就不允许其他命令
6165

@@ -65,7 +69,7 @@ public void start(String[] args){
6569
instance = this;
6670
int port = Integer.parseInt(args[1]);
6771
ServerLogger.getLogger().multiInfo(getClass(),"xmlrpc is started...","","");
68-
WebServer webServer = new WebServer(port);
72+
webServer = new WebServer(port);
6973
PropertyHandlerMapping mapping = new PropertyHandlerMapping();
7074
mapping.addHandler(P_KEY, RPCHandler.class);
7175
webServer.getXmlRpcServer().setHandlerMapping(mapping);
@@ -139,4 +143,8 @@ void startNow(String[] args){
139143
public static ServerStarter getInstance() {
140144
return instance;
141145
}
146+
147+
public WebServer getWebServer() {
148+
return webServer;
149+
}
142150
}

JPLS/src/main/java/cn/jsmod2/core/Console.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -197,10 +197,11 @@ public boolean runConsoleCommand(String commandName,String[] args){
197197
* 允许普通玩家使用的指令权限
198198
* cn.jsmod2.player all
199199
*/
200+
200201
for(INativeCommand cmd:commands){
201202
if(commandName.equals(cmd.getCommandName())){
202203
//如果含有这个权限
203-
if(getPowers().contains(cmd.getPower())){
204+
if(getPowers().contains(cmd.getPower().replace("cn.jsmod2.",""))){
204205
cmd.execute(this,args);
205206
}else{
206207
Utils.getMessageSender().error("you do not have this power");

0 commit comments

Comments
 (0)