У меня есть экземпляр контейнера (Windows), на котором запущено приложение с загрузочной пружиной, которое обращается к хранилищу таблицы Azure из командной строки с пружинной загрузкой CommandLineRunner.Контейнер работает нормально локально (Docker / Win10 Pro).
При развертывании на экземпляр контейнера выдается исключение StorageException в тот момент, когда делается попытка извлечь DynamicTableEntity из таблицы.Соединение с учетной записью хранения и таблицей кажется успешным, но операция получения завершается неудачно.Сервер Tomcat работает и реагирует (я перехватываю исключение и подготавливаю основную информацию об ошибках, которая будет возвращена сервлетами, управляющими запросами).Мне не удалось найти каких-либо примеров или окончательных утверждений об использовании библиотек хранилища Java Azure в контейнерах, поэтому я хотел бы знать, есть ли какие-либо ограничения или обходные пути, если это необходимо.
Ниже приведены журналы, которыеукажите, где выдается исключение.Записи журнала с "CommandLineRunner" генерируются моим кодом.Строка 397 в моем приложении - это строка, в которой я пытаюсь извлечь DynamicTableEntity из таблицы (14 строк в журнале).До этого строка соединения анализируется без ошибок, а ссылка на таблицу генерируется без ошибок.Хотя это и не показано, я удовлетворен тем, что partitionKey и RowKey верны (и исключение состоит в том, что таблица не существует - но она существует и доступна, когда контейнер запускается локально).Линия 562 - это точка входа в подпружиненный загрузчик CommandLineRunner.
**2019-05-13 00:57:44.632 INFO 3060 --- [ main] a.c.n.sbtest.demo.DemoApplication : CommandLineRunner: Engine Intialization Ready (status: 0)**
2019-05-13 00:57:44.670 INFO 3060 --- [ main] a.c.n.sbtest.demo.DemoApplication : CommandLineRunner: Deployment table <Deployments> accessible
2019-05-13 00:57:44.687 INFO 3060 --- [ main] a.c.n.sbtest.demo.DemoApplication : CommandLineRunner: User <e7c6163e-8c06-4146-b0e4-78fec93e6cce> Container accessible
2019-05-13 01:00:17.755 INFO 3060 --- [nio-8080-exec-7] o.a.c.c.C.[Tomcat].[localhost].[/] : Initializing Spring DispatcherServlet 'dispatcherServlet'
2019-05-13 01:00:17.755 INFO 3060 --- [nio-8080-exec-7] o.s.web.servlet.DispatcherServlet : Initializing Servlet 'dispatcherServlet'
2019-05-13 01:00:17.768 INFO 3060 --- [nio-8080-exec-7] o.s.web.servlet.DispatcherServlet : Completed initialization in 13 ms
com.microsoft.azure.storage.StorageException:
at com.microsoft.azure.storage.StorageException.translateException(StorageException.java:87)
at com.microsoft.azure.storage.core.ExecutionEngine.executeWithRetry(ExecutionEngine.java:209)
at com.microsoft.azure.storage.table.QueryTableOperation.performRetrieve(QueryTableOperation.java:178)
at com.microsoft.azure.storage.table.TableOperation.execute(TableOperation.java:694)
at com.microsoft.azure.storage.table.CloudTable.execute(CloudTable.java:529)
at com.microsoft.azure.storage.table.CloudTable.execute(CloudTable.java:496)
at **ai.com.neuralstudio.sbtest.demo.DemoApplication.lambda$commandLineRunner$0(DemoApplication.java:562)**
at org.springframework.boot.SpringApplication.callRunner(SpringApplication.java:813)
at org.springframework.boot.SpringApplication.callRunners(SpringApplication.java:797)
at org.springframework.boot.SpringApplication.run(SpringApplication.java:324)
at org.springframework.boot.SpringApplication.run(SpringApplication.java:1260)
at org.springframework.boot.SpringApplication.run(SpringApplication.java:1248)
at **ai.com.neuralstudio.sbtest.demo.DemoApplication.main(DemoApplication.java:397)**
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.springframework.boot.loader.MainMethodRunner.run(MainMethodRunner.java:48)
at org.springframework.boot.loader.Launcher.launch(Launcher.java:87)
at org.springframework.boot.loader.Launcher.launch(Launcher.java:50)
at org.springframework.boot.loader.JarLauncher.main(JarLauncher.java:51)
Caused by: java.net.UnknownHostException: neuralstudiotest002.table.core.windows.net
at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:184)
at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:172)
at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392)
at java.net.Socket.connect(Socket.java:589)
at sun.security.ssl.SSLSocketImpl.connect(SSLSocketImpl.java:673)
at sun.net.NetworkClient.doConnect(NetworkClient.java:175)
at sun.net.www.http.HttpClient.openServer(HttpClient.java:463)
at sun.net.www.http.HttpClient.openServer(HttpClient.java:558)
at sun.net.www.protocol.https.HttpsClient.<init>(HttpsClient.java:264)
at sun.net.www.protocol.https.HttpsClient.New(HttpsClient.java:367)
at sun.net.www.protocol.https.AbstractDelegateHttpsURLConnection.getNewHttpClient(AbstractDelegateHttpsURLConnection.java:191)
at sun.net.www.protocol.http.HttpURLConnection.plainConnect0(HttpURLConnection.java:1156)
at sun.net.www.protocol.http.HttpURLConnection.plainConnect(HttpURLConnection.java:1050)
at sun.net.www.protocol.https.AbstractDelegateHttpsURLConnection.connect(AbstractDelegateHttpsURLConnection.java:177)
at sun.net.www.protocol.http.HttpURLConnection.getInputStream0(HttpURLConnection.java:1564)
at sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1492)
at java.net.HttpURLConnection.getResponseCode(HttpURLConnection.java:480)
at sun.net.www.protocol.https.HttpsURLConnectionImpl.getResponseCode(HttpsURLConnectionImpl.java:347)
at com.microsoft.azure.storage.core.ExecutionEngine.executeWithRetry(ExecutionEngine.java:115)
... 19 more
2019-05-13 01:00:29.420 ERROR 3060 --- [ main] a.c.n.sbtest.demo.DemoApplication : CommandLineRunner: StorageException com.microsoft.azure.storage.StorageException: (status: -3)
Я был бы очень признателен за понимание того, что может происходить.Джек
ОБНОВЛЕНИЕ : Хотя основная проблема не решена для последних образов контейнеров Windows, jakaruna-MSFT ответил на другом форуме и указал, что старое изображение
mcr.microsoft.com/windows/servercore:1607-KB4505052-amd64
будет работать, и это делает.Основная проблема, по-видимому, связана со службами DNS и была либо повреждена, либо пропущена при переходе к более поздним изображениям.Предположительно MS найдет способ исправить более поздние изображения с объяснениями или без них.