2008. 8. 25. 20:05
상황 ------------
닷넷에서 자바 웹서비스를 호출할 경우 Web Connection 이 끊김.
자바측 WebService 는 총 4대의 서버이고 L4 로 로드밸런싱 되고 있음.
자바측 Keep-alive = false 이고
닷넷측 Keep-alive = true 이다.
즉
using(wsjavaweb a = new wsjavaweb()){ <-- 1. 여기서는 연결됨(1번서버 바라봄)
string result = a.methodCall(); <-- 2. 여기서 연결이 끊김.(L4 에서 다른 서버를 할당함)
}
자바측 웹로직 서버의 Keep-alive 가 false 이기 때문에 1번은 연결이 잘 됨.
그러나 2번 호출시 L4 에서 다른 서버로 연결을 보낼 경우 1번에서 연결된
WebRequest 연결을 사용할 수 없음.
해결 ------------
닷넷 측 웹서비스에서 Reference.cs 파일에 메소드를 오버라이드 하여 문제가 해결됨.
protected override WebRequest GetWebRequest(Uri uri)
{
HttpWebRequest webRequest = (HttpWebRequest) base.GetWebRequest(uri);
webRequest.KeepAlive = false;
return webRequest;
}
닷넷에서 자바 웹서비스를 호출할 경우 Web Connection 이 끊김.
자바측 WebService 는 총 4대의 서버이고 L4 로 로드밸런싱 되고 있음.
자바측 Keep-alive = false 이고
닷넷측 Keep-alive = true 이다.
즉
using(wsjavaweb a = new wsjavaweb()){ <-- 1. 여기서는 연결됨(1번서버 바라봄)
string result = a.methodCall(); <-- 2. 여기서 연결이 끊김.(L4 에서 다른 서버를 할당함)
}
자바측 웹로직 서버의 Keep-alive 가 false 이기 때문에 1번은 연결이 잘 됨.
그러나 2번 호출시 L4 에서 다른 서버로 연결을 보낼 경우 1번에서 연결된
WebRequest 연결을 사용할 수 없음.
해결 ------------
닷넷 측 웹서비스에서 Reference.cs 파일에 메소드를 오버라이드 하여 문제가 해결됨.
protected override WebRequest GetWebRequest(Uri uri)
{
HttpWebRequest webRequest = (HttpWebRequest) base.GetWebRequest(uri);
webRequest.KeepAlive = false;
return webRequest;
}