Derby Network Server - принимать подключения от нескольких хостов - derby.drda.host
В документации по дерби написано
derby.drda.host= имя хоста
Свойство прослушивает хост для сетевых подключений, т.е. принимает соединения от них. Если указано 0.0.0.0, соединения с любого хоста принимаются.
Теперь у меня есть три удаленных компьютера, hostA
, hostB
, hostC
,
- Мой сервер дерби работает на
hostA
, - Я хочу, чтобы сервер derby прослушивал соединения от
hostA
,hostB
,hostC
Итак, я написал
props.setProperty("derby.drda.host", "hostA hostB hostC");
Однако это не работает. Есть ли другой способ?
Редактировать:
Когда я устанавливаю свойство как
props.setProperty("derby.drda.host" , "hostA");
затем hostB
а также hostC
не могут подключиться к серверу. Они получают ниже исключения
java.sql.SQLNonTransientConnectionException: java.net.ConnectException: Ошибка соединения с сервером hostA через порт 8888 с сообщением Отказ в соединении: соединение.
Тем не менее, когда я устанавливаю свойство как
props.setProperty("derby.drda.host" , "0.0.0.0");
тогда все хосты (hostA
, hostB
, hostC
) умеют подключаться к серверу.
1 ответ
Я полагаю, вы неправильно поняли, для чего используется это свойство. Это сделано для того, чтобы вы могли указать Derby, по какому IP-адресу сервера принимать соединения, если у вас несколько сетевых интерфейсов. (Многие серверы имеют более одной сетевой карты или подключены к нескольким сетям одновременно и, таким образом, имеют несколько IP-адресов).
Настройка по умолчанию 0.0.0.0
означает, что он должен принимать любое запрашиваемое соединение на любом из IP-адресов сервера. Если вы установите это значение в нечто иное, чем 0.0.0.0
, он будет прослушивать только соединения, ориентированные только на этот IP.
Это не ограничивает клиентские соединения на основе их IP.
Я считаю, что вам нужно иметь следующий набор:
System.setProperty("derby.drda.startNetworkServer", "true");
Чтобы запустить Derby в качестве сетевого сервера (а не просто запустить его в JVM, как я полагаю, было поведение по умолчанию).