Google App Engine не удается подключить Aerospike, установленный в Google Compute Engine
Я пытаюсь подключить свое приложение GAE к Aerospike, установленному в Google Compute Engine. Ниже приведен фрагмент кода, если я использую основную функцию.
public static void main(String[] args) {
AerospikeClient client = new AerospikeClient("xxx.xxx.xx.xx", 3000);
boolean isConnect = client.isConnected();
Key key = new Key("test", "demo", "putgetkey");
Bin bin1 = new Bin("bin1", "value1");
Bin bin2 = new Bin("bin2", "value2");
client.put(null, key, bin1, bin2);
Record record = client.get(null, key);
client.close();
}
Но когда я развернул свое приложение в GAE, я получил эту ошибку.
java.security.AccessControlException: access denied ("java.lang.RuntimePermission" "modifyThreadGroup")
at java.security.AccessControlContext.checkPermission(AccessControlContext.java:372)
at java.security.AccessController.checkPermission(AccessController.java:559)
at java.lang.SecurityManager.checkPermission(SecurityManager.java:549)
at com.google.appengine.tools.development.DevAppServerFactory$CustomSecurityManager.checkPermission(DevAppServerFactory.java:429)
at com.google.appengine.tools.development.DevAppServerFactory$CustomSecurityManager.checkAccess(DevAppServerFactory.java:454)
at java.lang.ThreadGroup.checkAccess(ThreadGroup.java:315)
at java.lang.Thread.init(Thread.java:391)
at java.lang.Thread.init(Thread.java:349)
at java.lang.Thread.<init>(Thread.java:461)
at com.aerospike.client.cluster.Cluster.initTendThread(Cluster.java:163)
at com.aerospike.client.AerospikeClient.<init>(AerospikeClient.java:195)
at com.aerospike.client.AerospikeClient.<init>(AerospikeClient.java:160)
Я использовал внешний и внутренний IP-адрес экземпляра Compute Engine для создания нового AerospikeClient("compute_engine_ip",3000), но с той же ошибкой. Любая идея, чтобы исправить мою проблему? Спасибо.
1 ответ
Решение
GAE не позволяет экземплярам внешнего интерфейса (экземплярам GAE) порождать потоки, и попытка сделать это приводит к AccessControlException.
Вам нужно будет запустить клиент Aerospike на компьютере GCE, а затем использовать приложение GAE для подключения к компьютеру GCE вместо запуска клиента Aerospike в GAE.