2010-04-16 2 views
1

우리의 앱은 웹 서비스 클라이언트 (1 축)에서 제 3 자 웹 서비스 (1 축)입니다. 우리는 몇 년 동안 그것을 사용합니다.Axis webservice 호출이 실패하는 경우가 있으며 access.log에 내용이 표시됩니다!

몇 주 후 우리는 웹 서비스를 호출 할 때 때로는 HTTP 상태 400 (잘못된 요청) 또는 타임 아웃을 읽습니다.

이상하게도 서비스의 access.log는 URL 대신 요청 또는 응답의 일부를 표시합니다. 이

x.x.x.x -> y.y.y.y:8080 - - [timestamp] "POST /webservice HTTP/1.0" 200 16127 0 
x.x.x.x -> y.y.y.y:8080 - - [timestamp] "POST /webservice HTTP/1.0" 200 22511 1 
x.x.x.x -> y.y.y.y:8080 - - [timestamp] "il=\"true\"/><nsl:text xsi:type=\"xsd:string\" xsi:nil=\"true\"/></SOAPSomeOperation></soapenv:Body></soapenv:Envelope> Axis/1.4" 400 299 0 

또는 (요청 모습의 밖으로 일부 문자열) (요청 문자열의 끝 모양) 것 같습니다

x.x.x.x -> y.y.y.y:8080 - - [timestamp] ":string\">some text</sometag><othertag>moretext" 400 299 0 

또는 다른 경우에는 두 개의처럼 보인다 함께 던진 요청 (... XML 문자열을 버림을 의미) :

응용 프로그램 로그에는 어떤 힌트도 제공되지 않습니다. 이러한 통화의 빈도는 해당 서비스에 대한 모든 통화의 1 %입니다. 지금까지 알고있는 유일한 discriminator는 "서버 마이그레이션"때문에 서비스 URL이 변경되었다는 정보가 운영팀에 알려 졌기 때문입니다.

그런 현상이 발생 했습니까? 누군가가 잘못 생각하고 해결할 방법이 있습니까?

감사합니다,

답변

0

우리는이 정확한 동작을하지 않았다, 그러나 우리는 우리가 많이 고생했다 축 1의 몇 가지 결함에 직면했다. 결함이있는 클래스 중 하나는 Axis의 HttpSender입니다.이 클래스는 스레드로부터 안전하지 않은 것으로 보였고 숫자도 bugs이었습니다.

액세스 로그 오류의 불규칙성은 실제로 스레드 안전성과 관련이 있음을 의미 할 수 있습니다. 어쨌든 축 1을 제거 할 기회가 있다면, 즉시 수행하십시오. 거의 5 년이 지났지 만 실제로 결함이 많은 사체가 고정되어 있지 않습니다.

관련 문제