Java имеет пул строк, в котором Java управляет распределением памяти для объектов String. См. String Pools в Java
Когда вы проверяете (сравниваете) два объекта с помощью оператора ==
, он сравнивает равенство адресов в пуле строк. Если два объекта String имеют одинаковые адреса, то он возвращает true
, в противном случае false
. Но если вы хотите сравнить содержимое двух объектов String, вы должны переопределить метод equals
.
equals
- фактически метод класса Object, но он переопределяется в класс String и дается новое определение, которое сравнивает содержимое объекта.
Example:
stringObjectOne.equals(stringObjectTwo);
Но помните, что это относится к случаю String. Если вы хотите сравнить регистр без учета регистра, вы должны пойти для метода equalsIgnoreCase класса String.
Давайте посмотрим:
String one = "HELLO";
String two = "HELLO";
String three = new String("HELLO");
String four = "hello";
one == two; // TRUE
one == three; // FALSE
one == four; // FALSE
one.equals(two); // TRUE
one.equals(three); // TRUE
one.equals(four); // FALSE
one.equalsIgnoreCase(four); // TRUE
Вероятно, проблема в update-ca-certificates
. Команда обрабатывает только файлы с расширением .crt
. Из его страницы man:
У сертификатов должно быть расширение .crt, чтобы быть включенным сертификатами update-ca.
blockquote>. Просто добавьте это расширение при копировании сертификата в файл Docker:
COPY Certificates/myCertificate.cer /usr/local/share/ca-certificates/myCertificate.crt
Действия:
1) Убедитесь, что расширение сертификатов: .crt
2) Откройте сертификаты Notepad ++ или аналогичные
3 ) Скопируйте сертификаты в / usr / local / share / ca-certificates /. Команда update-ca-Certific считывает сертификаты из этой папки: http://manpages.ubuntu.com/manpages/trusty/man8/update-ca-certificates.8.html
4) После этих шагов создание файла docker должно приводить к тому, что NOT больше не добавляется 0, 0 удаляется; но 1 добавлено, 0 удалено; или аналогичный, в зависимости от того, сколько сертификатов вы добавили
5) решение, возможно, еще не существует. Сертификаты зависят от иерархии других сертификатов. Я в окнах и, перейдя в диспетчер сертификатов, вижу, что мой сертификат зависит от двух более высоких (это показано в пути сертификации):
Таким образом, вам нужно обязательно поместить в / usr / local / share / ca-certificates / ВСЕ сертификаты в иерархии.
6) Тем не менее, вы можете подумать о том, чтобы передать права сертификаты, но, возможно, нет. В моем случае IdentityServer размещался в IIS, в привязках я мог видеть, что IdentityServer действительно ожидал звонков через https и двойным щелчком по привязке я мог видеть сертификат, который IdentityServer требует для принятия вызова.