2011-12-20 4 views
2

У нас есть временный клиент SOAP, написанный на C#, подключающийся к службе CXF на рабочем столе с мобильного устройства Windows. Когда это устройство подключено через ActiveSync, оно создает виртуальный адаптер для соединения RNDIS. Этот виртуальный адаптер назначает IP-адрес шлюза хосту, 169.254.2.2.RNDIS потерял связь/проблема с задержкой

Когда мы пытаемся пройти через соединение с именем хоста или IP-адресом хоста в качестве адреса в клиенте C#, все работает отлично. Однако, когда мы установили IP-адрес шлюза RNDIS (169.254.2.2), соединение периодически теряется на стороне сервера. Служба CXF продолжает пытаться подключиться и, в конечном счете, преуспевает, но это приводит к значительному замедлению соединения. В наших журналах на стороне мобильного C# нет ошибок, только на сервере CXF.

У кого-нибудь есть подсказки, почему это происходит? Мы должны утверждать, что 169.254.2.2 нельзя использовать как допустимую конечную точку, прежде чем мы ее исключим.

О, и в случае, если это помогает, клиенту C# предоставляется IP 169.254.2.1 через DHCP после подключения ActiveSync.

ответ

0

я узнал причину этого, но я чувствую себя плохо для ответа, потому что я сомневаюсь, есть ли способ, кто-то мог предположить, что это была проблема:

На нашем сервере CXF, у нас есть вызов InetAddress.getHostName(), который в основном выполняет обратный поиск DNS по запросу, отправленному с клиента C#.

При использовании IP-адреса ActiveSync в DNS для записи 169.254.2.1 (конечно) не было никакой записи, поэтому класс java зависает до тех пор, пока метод не истечет (это заняло около 20 секунд, прежде чем он напишет ответ к клиенту C#). В 20 секунд за запрос это привело к массовому замедлению и потерям ошибок соединения.

Мы исправили это, переместив вызов на поток исполнителей, который завершил работу через полсекунды. Поскольку это было в другом потоке, замедление стало несуществующим. Рад, что с этим!

1

Первый вопрос, который приходит мне в голову, особенно после того, как я увидел, что вы используете DCHP, заключается в том, что срок аренды IP-адреса с сервера DHCP истекает, и сервер CXF должен ждать, пока сервер DCHP будет выпустить новый договор аренды.

Попробуйте удлинить аренду DCHP, если вы знаете, что IP-адрес не будет меняться и использовать статический IP-адрес, если вы в состоянии. Это, по крайней мере, устранит эту ошибку.

+0

Спасибо за идею cdeszaq! К сожалению, это была не проблема, но я все равно ценю. –

Смежные вопросы