2011-12-20 2 views
2

Windows 모바일 장치에서 데스크톱의 CXF 서비스에 연결하는 C#으로 작성된 임시 SOAP 클라이언트가 있습니다. 이 장치는 ActiveSync를 통해 연결될 때 RNDIS 연결을위한 가상 어댑터를 만듭니다. 이 가상 어댑터는 게이트웨이 IP를 호스트에 할당합니다 (169.254.2.2).RNDIS 연결 끊김 문제가 발생했습니다

우리가 호스트 이름 또는 호스트의 IP를 C# 클라이언트의 주소로 설정하여 연결을 시도하면 모든 것이 완벽하게 작동합니다. 그러나 IP를 RNDIS 게이트웨이 (169.254.2.2)로 설정하면 연결이 서버 측에서 주기적으로 손실됩니다. CXF 서비스는 계속 연결을 시도하고 결국 성공하지만이 경우 연결 속도가 크게 느려집니다. 모바일 C# 측의 로그에는 CXF 서버에서만 오류가보고됩니다.

왜 이런 일이 발생했는지에 대한 단서가 있습니까? 169.254.2.2은 유효한 엔드 포인트로 사용할 수 없다고 주장해야합니다.

아, 그리고 도움이 될 경우 ActiveSync 연결 후 DHCP를 통해 C# 클라이언트에 IP 169.254.2.1이 부여됩니다.

답변

0

내가이의 원인을 발견,하지만 난 다른 어떤 식 으로든 누군가가이 문제라고 추측 할 수 있었다 의심 때문에 내가 대답에 대한 나쁜 생각 : 우리 CXF 서버에서

, 우리는 호출이 InetAddress.getHostName() 기본적으로 C# 클라이언트에서 보낸 요청에 대해 역방향 DNS 조회를 수행합니다.

ActiveSync IP 주소를 사용할 때 169.254.2.1 (물론) DNS에 항목이 없었기 때문에 메서드가 시간 초과 될 때까지 Java 클래스가 멈추었습니다 (응답을 작성하기 전에 약 20 초가 걸렸습니다). C# 클라이언트에게). 요청 당 20 초가 지나면 속도가 느려지고 연결 오류가 사라졌습니다.

우리는 호출을 0.5 초 후에 강제 종료되는 executor 스레드로 이동하여이를 수정했습니다. 다른 스레드에 있었으므로 속도가 느려졌습니다. 그걸로 기쁘다!

1

특히 DCHP를 사용하고 있다는 것을 알게 된 첫 번째 문제는 DHCP 서버의 IP 임대 시간이 만료되고 CXF 서버가 DCHP 서버를 기다려야한다는 것입니다. 새리스를 발행합니다.

IP가 변경되지 않으며 가능한 경우 고정 IP를 사용한다는 것을 알고 있으면 DCHP 임대를 길게하십시오. 적어도 그 실패 지점을 제거 할 것입니다.

+0

아이디어를 주셔서 감사합니다 cdeszaq! 불행히도 그것은 문제가 아니었지만, 나는 그것을 모두 고맙게 생각합니다. –

관련 문제