2013-09-04 3 views
0

HTTP 서비스 개체를 사용하여 flex에서 메서드 내에서 서블릿 요청을하고 있습니다. 이 메소드는 두 개의 이벤트에 의해 동시에 병렬로 호출됩니다. 두 요청이 모두 서블릿에 도달했음을 알 수 있지만 결과 이벤트에는 하나만 반환됩니다. 또한이 행동은 일관성이 없습니다. httpservice를 병렬로 호출하면 일부 요청이 손실 될 수 있습니까? 두 요청이 모두 서블릿에 도달했으며 데이터가 반환 된 것 같습니다. 결과 이벤트가 트리거되지 않는 경우도 있습니다. 미리 감사드립니다. 병렬 요청에 대해 http 서비스가 작동하지 않습니다.

문제를 더 잘 설명하는 코드가 포함됩니다.

아래의 방법을 찾으십시오. 아래 메소드 "callServlet"은 두 개의 개별 이벤트에 의해 호출됩니다.

private var httpObj : HTTPService = new HTTPService();

전용 기능 callServlet (문자 : 문자열) {공극

 Alert.show(text); 
     httpObj = new HTTPService(); 
     httpObj.url=<servlet URL>; 
     httpObj.method="POST"; 
     httpObj.resultFormat="xml"; 
     httpObj.contentType="application/xml"; 
     var requestString:String=text; 
     httpObj.request=requestString; 
     httpObj.addEventListener(ResultEvent.RESULT,onResultMethods); 
     httpObj.addEventListener(FaultEvent.FAULT,onFaultMethod); 
     httpObj.send(); 

    } 

제가 있어서, 내가 다른 "텍스트"변수 전달을 호출 할 때마다. 경고 메시지가 두 개의 서로 다른 텍스트가 표시된다는 것을 알 수 있습니다. 그리고 앞에서 설명한 것처럼 두 요청 모두 서블릿에 도달하고 응답은 서블릿에서 전송됩니다. 결과 이벤트 "onResultMethod"는 한 번만 호출됩니다. "faultonFaultMethod"를 호출하지 않습니다.

+2

HTTPService.send()는 요청을 추적하기 위해 사용해야하는 AsyncToken을 반환합니다. 'HTTPService'의'lastResult' 속성을 사용한다면 당신은 당신이 묘사하는 행동을 얻을 것입니다. 질문을 편집하고 추가 도움이 필요하면 사용중인 코드를 추가하는 것이 좋습니다. –

답변

0

예, 이전에이 문제를 보았습니다. 플렉스에서 여러 요청을하는 경우 일부는 손실되어 다시 3.0 번 발생합니다. 브라우저는 http 호출의 수를 멈추는 방법을 가지고 있습니다. 한 번에 최대 2 개의 호출을 허용 할 수 있습니다 (브라우저에 따라 다름). 요청을 차례로 연결하거나 호출을 관리하는 싱글 톤을 사용할 수 있습니다.

+0

답장을 보내 주셔서 감사합니다. 하지만 브라우저에서 동시 HTTP 요청에 대해 언급 한 문제를 알고 있습니다. 하지만 제 경우에는 요청이 서블릿에 도달했습니다. 서블릿 로그에서 볼 수 있습니다. 결과 이벤트가 항상 트리거되지 않습니다. – Chinta

0

모두에게 감사드립니다. 내가 옳은 대답을 보장 할 수는 없지만 문제가 있다고 생각합니다. 위의 메서드는 두 번씩 두 번 호출됩니다. httpOject 변수는 callServlet 메서드에 대한 private var 전역입니다. 이 메소드에서 작성된 리스너가 결과 및 결함 핸들러 메소드에서 제거되고 있습니다 (위의 코드에는 표시되지 않음). 그래서 여러 이벤트가 동시에 메서드를 호출 할 때 전역 변수 httpObj가 두 이벤트에 의해 수정되고 따라서 두 이벤트 모두 동일한 httpservice 개체를 사용하는 서블릿 호출이 발생할 것으로 믿습니다. 첫 번째 호출이 resulthandler에 반환 될 때 나는 resulthandler에 대한 리스너를 제거하여 두 번째 결과가 resulthandler 메소드에 도달하지 못하게합니다.

이것은 내 가정이며 지금은 더 나은 해결책이 없습니다. 누구든지 더 나은 설명이 나오면 알려주세요.

관련 문제