import io.vertx.core.json.JsonObject; //导入方法依赖的package包/类
/**
* Entry point method which starts the server event loop and initializes
* our current OMERO.web session store.
*/
@Override
public void start(Future future) {
log.info("Starting verticle");
if (config().getBoolean("debug")) {
Logger root = (Logger) LoggerFactory.getLogger(
"com.glencoesoftware.omero.ms");
root.setLevel(Level.DEBUG);
}
// Set OMERO.server configuration options using system properties
JsonObject omeroServer = config().getJsonObject("omero.server");
omeroServer.forEach(entry -> {
System.setProperty(entry.getKey(), (String) entry.getValue());
});
context = new ClassPathXmlApplicationContext(
"classpath:ome/config.xml",
"classpath:ome/services/datalayer.xml",
"classpath*:beanRefContext.xml");
// Deploy our dependency verticles
JsonObject omero = config().getJsonObject("omero");
vertx.deployVerticle(new PixelBufferVerticle(
omero.getString("host"), omero.getInteger("port"), context),
new DeploymentOptions().setWorker(
true).setMultiThreaded(true));
HttpServer server = vertx.createHttpServer();
Router router = Router.router(vertx);
// Cookie handler so we can pick up the OMERO.web session
router.route().handler(CookieHandler.create());
// OMERO session handler which picks up the session key from the
// OMERO.web session and joins it.
JsonObject redis = config().getJsonObject("redis");
sessionStore = new OmeroWebRedisSessionStore(redis.getString("uri"));
router.route().handler(
new OmeroWebSessionRequestHandler(sessionStore));
// Pixel buffer request handlers
router.get(
"/tile/:imageId/:z/:c/:t")
.handler(this::getTile);
int port = config().getInteger("port");
log.info("Starting HTTP server *:{}", port);
server.requestHandler(router::accept).listen(port, result -> {
if (result.succeeded()) {
future.complete();
} else {
future.fail(result.cause());
}
});
}