vertx 模块的加载

java项目结构如下图:

vertx 模块的加载_第1张图片

发布模块代码

import java.util.HashMap;

import org.vertx.java.core.AsyncResult;
import org.vertx.java.core.Handler;
import org.vertx.java.core.json.JsonArray;
import org.vertx.java.core.json.JsonObject;
import org.vertx.java.core.logging.Logger;
import org.vertx.java.platform.Verticle;

import com.sun.org.apache.bcel.internal.generic.IF_ACMPEQ;

import frame.MainFrame;

public class ServerBase extends Verticle {
	HashMap<String, String> modules = new HashMap<String, String>();

	public void start() {
		// 发布模块
		deployModules();
		// 显示一个frame
		MainFrame frame = new MainFrame(vertx.eventBus());
		frame.setVisible(true);
	}

	private void deployModules() {
		final Logger logger = container.logger();
		JsonObject appConfig = container.config();
		JsonArray deployModules = appConfig.getArray("deploy_modules");
		// 循环发布模块
		for (int i = 0; i < deployModules.size(); i++) {
			JsonObject module = deployModules.get(i);
			final JsonObject config = module.getObject("config", new JsonObject());
			final String moduleName = (module).getString("moduleName", "");
			int num = (module).getInteger("num", 1);
			if (!moduleName.equals("")) {
				container.deployModule(moduleName, config, num, new Handler<AsyncResult<String>>() {
					@Override
					public void handle(AsyncResult<String> event) {
						if (event.failed()) {
							logger.info(event.cause().getMessage());
							logger.error("加载" + moduleName + "异常" + event.cause().getLocalizedMessage());
						} else {
							logger.info("发布成功:" + moduleName + ", id:" + event.result());
							modules.put(moduleName, event.result());
						}
					}
				});
			}
		}
	}
}

run.bat

@ECHO OFF
FOR %%F IN (lib\*.jar) DO call :addcp %%F
goto extlibe
:addcp
SET CLASSPATH=%CLASSPATH%;%1
goto :eof
:extlibe
SET CLASSPATH=%CLASSPATH%;bin\
SET CLASSPATH
java -classpath %CLASSPATH% org.vertx.java.platform.impl.cli.Starter run http.ServerBase -conf conf/config.json

启动...

vertx 模块的加载_第2张图片

就可以访问你的系统了。

你可能感兴趣的:(vertx 模块的加载)