gluu
公開メンバ関数 | 静的公開変数類 | 関数 | 非公開メンバ関数 | 非公開変数類 | 静的非公開変数類 | 全メンバ一覧
org.xdi.oxd.server.license.LicenseFileUpdateService クラス
org.xdi.oxd.server.license.LicenseFileUpdateService 連携図
Collaboration graph

公開メンバ関数

void start (Optional< LicenseFile > licenseFile)
 
void updateLicenseFromServer ()
 
boolean isRetryLimitExceeded ()
 

静的公開変数類

static final String LICENSE_SERVER_ENDPOINT = "https://license.gluu.org/oxLicense"
 
static final int RETRY_LIMIT = 3
 

関数

 LicenseFileUpdateService (OxdServerConfiguration conf, HttpService httpService)
 

非公開メンバ関数

boolean lastModifiedLessThan12HoursAgo (long lastModified)
 
void scheduleUpdatePinger ()
 
ScheduledExecutorService newExecutor ()
 

非公開変数類

final OxdServerConfiguration conf
 
final HttpService httpService
 
AtomicInteger retry = new AtomicInteger()
 

静的非公開変数類

static final Logger LOG = LoggerFactory.getLogger(LicenseFileUpdateService.class)
 
static final int ONE_HOUR_AS_MILLIS = 3600000
 
static final int _24_HOURS_AS_MILLIS = 24 * ONE_HOUR_AS_MILLIS
 

詳解

著者
Yuriy Zabrovarnyy
バージョン
0.9, 12/10/2014

構築子と解体子

◆ LicenseFileUpdateService()

org.xdi.oxd.server.license.LicenseFileUpdateService.LicenseFileUpdateService ( OxdServerConfiguration  conf,
HttpService  httpService 
)
inlinepackage
46  {
47  this.conf = conf;
48  this.httpService = httpService;
49  }
final HttpService httpService
Definition: LicenseFileUpdateService.java:43
final OxdServerConfiguration conf
Definition: LicenseFileUpdateService.java:42

関数詳解

◆ isRetryLimitExceeded()

boolean org.xdi.oxd.server.license.LicenseFileUpdateService.isRetryLimitExceeded ( )
inline
122  {
123  return retry.get() > RETRY_LIMIT;
124  }
AtomicInteger retry
Definition: LicenseFileUpdateService.java:44
static final int RETRY_LIMIT
Definition: LicenseFileUpdateService.java:40

◆ lastModifiedLessThan12HoursAgo()

boolean org.xdi.oxd.server.license.LicenseFileUpdateService.lastModifiedLessThan12HoursAgo ( long  lastModified)
inlineprivate
58  {
59  long diff = System.currentTimeMillis() - lastModified;
60  return diff < _24_HOURS_AS_MILLIS;
61  }
static final int _24_HOURS_AS_MILLIS
Definition: LicenseFileUpdateService.java:39

◆ newExecutor()

ScheduledExecutorService org.xdi.oxd.server.license.LicenseFileUpdateService.newExecutor ( )
inlineprivate
72  {
73  return Executors.newSingleThreadScheduledExecutor(CoreUtils.daemonThreadFactory());
74  }

◆ scheduleUpdatePinger()

void org.xdi.oxd.server.license.LicenseFileUpdateService.scheduleUpdatePinger ( )
inlineprivate
63  {
64  newExecutor().scheduleAtFixedRate(new Runnable() {
65  @Override
66  public void run() {
68  }
69  }, 24, 24, TimeUnit.HOURS);
70  }
void updateLicenseFromServer()
Definition: LicenseFileUpdateService.java:76
ScheduledExecutorService newExecutor()
Definition: LicenseFileUpdateService.java:72

◆ start()

void org.xdi.oxd.server.license.LicenseFileUpdateService.start ( Optional< LicenseFile licenseFile)
inline
51  {
52  if (!licenseFile.isPresent() || !lastModifiedLessThan12HoursAgo(licenseFile.get().getLastModified())) {
54  }
56  }
boolean lastModifiedLessThan12HoursAgo(long lastModified)
Definition: LicenseFileUpdateService.java:58
void scheduleUpdatePinger()
Definition: LicenseFileUpdateService.java:63
void updateLicenseFromServer()
Definition: LicenseFileUpdateService.java:76

◆ updateLicenseFromServer()

void org.xdi.oxd.server.license.LicenseFileUpdateService.updateLicenseFromServer ( )
inline
76  {
77  try {
78  final GenerateWS generateWS = LicenseClient.generateWs(LICENSE_SERVER_ENDPOINT, httpService.getClientExecutor());
79 
80  final String macAddress = MacAddressProvider.macAddress();
81  LOG.trace("Updating license, license_id: " + conf.getLicenseId() + ", retry: " + retry + " ... Mac address: " + macAddress);
82 
83  final List<LicenseResponse> generatedLicenses = generateWS.generatePost(conf.getLicenseId(), macAddress);
84  if (generatedLicenses != null && !generatedLicenses.isEmpty() && !Strings.isNullOrEmpty(generatedLicenses.get(0).getEncodedLicense())) {
85  final File file = LicenseFile.getLicenseFile();
86  if (file != null) {
87  final String json = new LicenseFile(generatedLicenses.get(0).getEncodedLicense(), macAddress, conf.getLicenseId()).asJson();
88  FileUtils.write(file, json);
89 
90  retry.set(0);
91  LOG.info("License file updated successfully. Mac address: " + macAddress);
92  return;
93  }
94  } else {
95  retry.set(0);
96  LOG.info("No license update, licenseId: " + conf.getLicenseId());
97  return;
98  }
99  } catch (ClientResponseFailure e) {
100  LOG.error(e.getMessage() + ", " + e.getResponse().getEntity(String.class), e);
101  } catch (Exception e) {
102  LOG.error(e.getMessage(), e);
103  }
104  LOG.trace("Failed to update license file by licenseId: " + conf.getLicenseId());
105 
106  retry.incrementAndGet();
107 
108  if (isRetryLimitExceeded()) {
109  LicenseFile.deleteSilently();
110  LOG.error("Shutdown server after trying to update license. Retry count: " + retry.get());
111  ServerLauncher.shutdownDueToInvalidLicense();
112  }
113 
114  newExecutor().schedule(new Runnable() {
115  @Override
116  public void run() {
118  }
119  }, 3, TimeUnit.HOURS);
120  }
ClientExecutor getClientExecutor()
Definition: HttpService.java:57
AtomicInteger retry
Definition: LicenseFileUpdateService.java:44
static final Logger LOG
Definition: LicenseFileUpdateService.java:34
final HttpService httpService
Definition: LicenseFileUpdateService.java:43
void updateLicenseFromServer()
Definition: LicenseFileUpdateService.java:76
ScheduledExecutorService newExecutor()
Definition: LicenseFileUpdateService.java:72
boolean isRetryLimitExceeded()
Definition: LicenseFileUpdateService.java:122
static final String LICENSE_SERVER_ENDPOINT
Definition: LicenseFileUpdateService.java:36
String getLicenseId()
Definition: OxdServerConfiguration.java:174
final OxdServerConfiguration conf
Definition: LicenseFileUpdateService.java:42

メンバ詳解

◆ _24_HOURS_AS_MILLIS

final int org.xdi.oxd.server.license.LicenseFileUpdateService._24_HOURS_AS_MILLIS = 24 * ONE_HOUR_AS_MILLIS
staticprivate

◆ conf

final OxdServerConfiguration org.xdi.oxd.server.license.LicenseFileUpdateService.conf
private

◆ httpService

final HttpService org.xdi.oxd.server.license.LicenseFileUpdateService.httpService
private

◆ LICENSE_SERVER_ENDPOINT

final String org.xdi.oxd.server.license.LicenseFileUpdateService.LICENSE_SERVER_ENDPOINT = "https://license.gluu.org/oxLicense"
static

◆ LOG

final Logger org.xdi.oxd.server.license.LicenseFileUpdateService.LOG = LoggerFactory.getLogger(LicenseFileUpdateService.class)
staticprivate

◆ ONE_HOUR_AS_MILLIS

final int org.xdi.oxd.server.license.LicenseFileUpdateService.ONE_HOUR_AS_MILLIS = 3600000
staticprivate

◆ retry

AtomicInteger org.xdi.oxd.server.license.LicenseFileUpdateService.retry = new AtomicInteger()
private

◆ RETRY_LIMIT

final int org.xdi.oxd.server.license.LicenseFileUpdateService.RETRY_LIMIT = 3
static

このクラス詳解は次のファイルから抽出されました: