下面列出了怎么用org.springframework.boot.web.servlet.context.ServletWebServerInitializedEvent的API类实例代码及写法,或者点击链接到github查看源代码。
@EventListener
public void handleEvent(Object event) {
// do optional life-cycle management
if (event instanceof ServletWebServerInitializedEvent) {
// when deploy as WAR, this event will not happen
log.debug("Loading Spring Boot");
}
if (event instanceof ApplicationReadyEvent) {
/*
* this event will happen in both WAR and JAR deployment mode
* At this point, Spring Boot is ready
*/
if (!started) {
new MainApps().start();
}
}
// in case Spring Boot fails, it does not make sense to keep the rest of the application running.
if (event instanceof ApplicationFailedEvent) {
log.error("{}", ((ApplicationFailedEvent) event).getException().getMessage());
System.exit(-1);
}
}
@Override
public void customize(ConfigurableApplicationContext context) {
if(context instanceof ServletWebServerApplicationContext
&& !AdminEndpointApplicationRunListener.isEmbeddedServletServer(context.getEnvironment())) {
MetaDataProvider metaDataProvider = context.getBean(MetaDataProvider.class);
WebServer webServer = new WebServer() {
@Override
public void start() throws WebServerException {
}
@Override
public void stop() throws WebServerException {
}
@Override
public int getPort() {
return metaDataProvider.getServerPort();
}
};
context.publishEvent(
new ServletWebServerInitializedEvent(
webServer,
new ServletWebServerApplicationContext())
);
}
}
/**
* Initial setup, query master Node for
* - Other Nodes
* - All Addresses
* - Current Blockchain
* - Transactions in pool
* and publish self on all other Nodes
* @param servletWebServerInitializedEvent serverletContainer for port retrieval
*/
@Override
public void onApplicationEvent(ServletWebServerInitializedEvent servletWebServerInitializedEvent) {
Node masterNode = getMasterNode();
// construct self node
String host = retrieveSelfExternalHost(masterNode, restTemplate);
int port = servletWebServerInitializedEvent.getWebServer().getPort();
self = getSelfNode(host, port);
LOG.info("Self address: " + self.getAddress());
// download data if necessary
if (self.equals(masterNode)) {
LOG.info("Running as master node, nothing to init");
} else {
knownNodes.add(masterNode);
// retrieve data
retrieveKnownNodes(masterNode, restTemplate);
addressService.retrieveAddresses(masterNode, restTemplate);
blockService.retrieveBlockchain(masterNode, restTemplate);
transactionService.retrieveTransactions(masterNode, restTemplate);
// publish self
broadcastPut("node", self);
}
}
@EventListener(ServletWebServerInitializedEvent.class)
public void onApplicationEvent(ServletWebServerInitializedEvent event) {
// TODO: take SSL into account
int localPort = event.getWebServer().getPort();
if (this.port.get() == 0) {
log.info("Updating port to " + localPort);
this.port.compareAndSet(0, localPort);
start();
}
}
@Override
public void onApplicationEvent(ServletWebServerInitializedEvent event) {
this.port = event.getSource().getPort();
}
@Override
public void onApplicationEvent(ServletWebServerInitializedEvent event) {
this.port = event.getSource().getPort();
}
@Override
public void onApplicationEvent(ServletWebServerInitializedEvent event) {
this.port = event.getSource().getPort();
}
@Override
public void onApplicationEvent(ServletWebServerInitializedEvent event) {
this.port = event.getSource().getPort();
}
@Override
public void onApplicationEvent(ServletWebServerInitializedEvent event) {
this.port = event.getSource().getPort();
}
@Override
public void onApplicationEvent(ServletWebServerInitializedEvent event) {
this.port = event.getSource().getPort();
}
@Override
public void onApplicationEvent(ServletWebServerInitializedEvent event) {
this.port = event.getSource().getPort();
}