Я думаю, что когда вы определяете String
, вы определяете объект. Поэтому вам нужно использовать .equals()
. Когда вы используете примитивные типы данных, вы используете ==
, но с String
(и любым объектом) вы должны использовать .equals()
.
Я просто отслеживал эту проблему. Мои симптомы были такими же, как у вас, и я даже пробовал то, что вы пробовали. В итоге моя проблема возникла только потому, что я использовал tomcat для centos с SELinux.
Некоторые люди помогли мне диагностировать, используя следующие команды, чтобы посмотреть события безопасности и почему некоторые действия не были разрешены:
sudo ausearch -m avc
sudo grep "tcp_socket" /var/log/audit/audit.log | audit2why // translates log into some human readable reasons why the audit record was generated
Я видел записи вроде:
type = AVC msg = audit (1507861264.561: 64750): avc: denied {name_connect} для pid = 1326 comm = "java" dest = 3306 scontext = system_u: system_r: tomcat_t: s0 tcontext = system_u: object_r: mysqld_port_t: s0 tclass = tcp_socket
Был вызван: правило разрешения запрещенного типа (TE).
Вы можете используйте audit2allow для создания загружаемого модуля, чтобы разрешить этот доступ.
blockquote>И затем нашел эту статью о tomcat и SELinux https://noobient.com/post/165972214381/selinux-woes -with-tomcat-on-centos-74
Вы можете запустить следующую команду, чтобы проверить, работает ли tomcat в контексте безопасности tomcat_t.
$ps auxZ | grep tomcat
Для цели по-настоящему определить, была ли моя ошибка SELinux, я отключил SELinux
$ sestatus // shows: SELinux status: enabled $ sudo vim /etc/selinux/config // set "SELINUX=disabled" $ sudo shutdown -r now $ sestatus // shows: SELinux status: disabled
перезапустил мою машину и увидел, что tomcat теперь делает исходящее соединение.
Отлично, теперь я, по крайней мере, знаю, ПОЧЕМУ, что это происходит. Конечно, если вам нужен SELinux, отключить его НЕ является решением. Другим обходным решением, которое, вероятно, не является решением, является установка tomcat без прохождения yum. Yum установит tomcat, используя контекст безопасности.
Я думаю, что теперь мы должны изменить контекст безопасности или набор правил, управляющих tomcat, чтобы он мог выполнять исходящие соединения.