2013-08-12 2 views
1

나는 최근에 Windows Server 2008 R2에 버전 4.7 WSO2 ESB를 업그레이드 단순히 엔드 포인트로 SOAP 요청을 프록시 동안 다음 오류가 발생했습니다 : 핸들러가 일관성이없는 상태에있는 동안 응답을 받기WSO2 ESB 알 수없는 오류 코드 102511

REQUEST_HEAD

ERROR_CODE : 102511 
ERROR_MESSAGE : Error in Sender 
ERROR_DETAIL : Error in Sender 
ERROR_EXCEPTION : null 

이 오류 코드는 설명서에 설명되어 있지 않으며 예외없이 무엇을 만들어야하는지 분명하지 않습니다. 찾을 수있는 가장 가까운 코드는 SND_INVALID_STATE = 102510이고 소스 코드에서 판단 할 때 요청에 잘못된 헤더가있는 것으로 보입니다. 그러나 모든 요청이 실패하는 것은 아닙니다. 동일한 요청이 무작위로 전달되거나 실패 할 수 있습니다. 나는 바이올린으로 모든 요청을 레코딩하고 재생했다. 실패한 사람은 결국 통과 할 수 있고 그 반대도 마찬가지입니다. 그 전에는 로컬 컴퓨터 (Windows 7)에 새 버전의 ESB를 배포 및 테스트했으며 콜드 스타트에서만 이러한 오류가 발생했습니다.

가장 간단한 구성은 Path Through Proxy 서비스와 주소 끝점으로 구성됩니다.

프록시 서비스 설정 :

<?xml version="1.0" encoding="UTF-8"?> 
<proxy xmlns="http://ws.apache.org/ns/synapse" name="TestEP" transports="http" statistics="disable" trace="enable" startOnLoad="true"> 
    <target endpoint="TestEP"> 
     <outSequence> 
     <send/> 
     </outSequence> 
    </target> 
    <description/> 
</proxy> 

주소 엔드 포인트 설명

<endpoint xmlns="http://ws.apache.org/ns/synapse" name="TestEP"> 
    <address uri="http://mydomain.test/SystemServices.asmx"> 
    <syn:suspendOnFailure> 
     <syn:initialDuration>0</syn:initialDuration> 
     <syn:progressionFactor>1.0</syn:progressionFactor> 
     <syn:maximumDuration>0</syn:maximumDuration> 
    </syn:suspendOnFailure> 
    </address> 
</endpoint> 

다른 사람이이 오류가 발생하거나 처리하는 방법을 알고 했습니까? 나는 상황에 대한 통찰력에 감사 할 것이다.

업데이트 :
그것은 요청이 실패하는 이유가 보인다는 요청 HTTP 헤더에

Expect: 100-continue 

옵션입니다. 피들러에서 규칙을 제거하는 규칙을 만들 때 모든 쿼리가 성공적으로 수행되었습니다. 이러한 행동을 처리 할 방법이 있는지 여부는 아직 명확하지 않으며 헤더의이 부분을 제거해야합니다.

+0

WSO2 ESB에서 서비스를 호출하는 중 요청이 실패했습니다. "Expect : 100-continue"를 제거하면 문제가 해결되었습니다. –

답변

1

WSO2 ESB 4.5.1에서 4.7.0으로 업그레이드 할 때이 문제가 발생했습니다. 나는 4.5.1에서 또 다른 문제점을 겪었습니다. 왜냐하면 4.7.0에서이 문제가 발생했을 때 나는 그것을 해결해야했습니다.

얼마 전 생각해 보면 성능 ​​향상을 위해 4.6.0에서 기본 전송이 NHTTP에서 Passthrough로 전환되었다는 것을 기억했습니다. 4.7.0에는 두 가지 구성이 있지만 PT가 기본적으로 사용됩니다.설정 파일은, 축 디렉토리에 있습니다

${carbon.home}/repository/conf/axis2/ 

태평양 표준시 설정 파일이 axis2_pt.xml입니다. NHTTP는 axis2_nhttp.xml입니다. 당신은 그들을 변화 시켜서 어떤 변화에 대한 아이디어를 얻을 수 있습니다; diff는 다행히도 꽤 깨끗합니다. 쉽게 주요 설정 파일을 수정하여 NHTTP에 PT 전환 할 수

는 :

${carbon.home}/repository/conf/carbon.xml 

당신은 <Axis2Config>에서 <ConfigurationFile> 요소를 가지고있다. 기본 파일 인 axis2.xml은 다소 차이가 있습니다 (axis2_pt.xml). NHTTP로 전환하려면 <ConfigurationFile>${carbon.home}/repository/conf/axis2/axis2_nhttp.xml으로 변경하면됩니다.

NHTTP로 전환하면 ESB 4.7.0의 문제가 100 번 처리가 올바르게 처리되지 않습니다. 특히 ESB를 통해 다른 서비스로 컬을 사용하여 PDF를 업로드하려고했습니다. PT를 사용하여 실패했습니다. NHTTP를 사용하여 정상적으로 작동했습니다. 나의 명백한 결론은이 시나리오에서 PT가 단순히 버그가 있다는 것입니다.

PT 대 NHTTP에 대한 읽기에서 한 시나리오에서 다른 시나리오로 전환하는 유일한 "공식적인"부작용은 특정 시나리오에서 PT가 더 빠를 것이라는 것입니다. 그러나 NHTTP는 오랫동안 주변에 있었기 때문에 더 많은 버그 수정 라운드를 거친 덕분에 조금 더 견고 해졌습니다. WSO2 ESB의 개발에 관여하지 않았기 때문에이 사실을 확실히 알지 못합니다. 그러나 그것은 교육적인 추측입니다. :)

또한 Isuru Perera의 대답에 대해 언급하고 싶지만, 필자는 여기에 https://wso2.org/jira/browse/APIMANAGER-1007과 관련하여 내 두 센트를 두어야한다는 점에 대해 충분한 평판이 없다. 이 문제는 실제로 관련이있는 것으로 보입니다 - 특히 현재 컬에 대한 내 자신의 경험에 근거한 것 같습니다 -하지만 유감스럽게도 WSO2의 친절한 사람들은 궁극적으로 컬의 사용을 피하도록 권고 한 많은 의견 이후 "버그가 아님"으로이 문제를 해결했습니다. "예상대로 작동"하여 "말풍선 문제"가됩니다. HTTP 사양을 준수하는 요청으로 인해 작동하지 않는 IMHO는 클라이언트 문제가 아니므로 해결해야합니다. 이로 인해 특정 시나리오에서 PT 전송을 효과적으로 사용할 수 없게됩니다. 즉, 클라이언트가 큰 시체를 POST하는 방법에 대해 좀 더 지능적 인 경우입니다. 요청 시체를 구문 분석 할 필요가없는 시나리오가 PT 전송 장치가 설계된 것이며 정확히 어디에 있어야하는지에 대한 시나리오이기 때문에 이는 정말로 수치스러운 일입니다!

아, 그리고 stackoverflow에 대한 첫 번째 게시물입니다. 그래서 집 규칙을 어겼다면 미안 해요. 나는 잠시 동안 수동적 인 참여자가되었으므로 내가 너무 잘못하지 않았 으면 좋겠다.

+0

고마워, 보얀. Passthru-http 프로토콜은 실제로 이상하게 작동합니다. SOAP 서비스 측에서 'Expect : 100-continue'헤더를 제거했습니다. 그러나 부하 테스트를하는 동안 HTTP 요청을 처리 할 여유있는 SynapseWorker가 없을 때 시냅스 스레드 풀 기아 상태가 발생했습니다. WSO2는 worker_pool_size_core = 400을 다시 기본값 20으로 설정할 것을 권장합니다. 이제 우리는 nhttp로 다시 돌아갈 것입니다. 회신에 늦어서 죄송합니다. 귀하의 답변은 큰 도움이되었습니다. – user2547004