2011-08-03 4 views
0

런타임에 WSDL을로드하고 내가 정의한 몇 가지 다른 웹 서비스에서 공유하는 Flex 어플리케이션이 있습니다. 불행히도 loadWSDL()을 호출 할 때마다 네트워크 요청이 이루어지며 캐싱으로 인한 문제는 아니지만 모든 요청을 생성하는 것은 여전히 ​​성가신 일입니다. 이 문제를 해결하고 하나의 네트워크 요청 만하는 간단한 방법이 있습니까? 내 코드는 현재Flex WebServices가 공통의 wsdl을 공유하고 있습니다.

좋아 :

var services:Array = ['service1', 'service2', ...] 
for each (var name:String in services) { 
    var s:WebService = ServiceLocator.getInstance().getService(name) as WebService; 
    s.wsdl = wsdl; 
    s.loadWSDL(); 
} 

어떤 도움

이 이해할 수있을 것이다.

+0

우선, * cairngorm2 *를 사용하지 마십시오. 그것은 끔찍한 틀입니다. 두 번째로, 각 호출에 대해 정확히 동일한 WSDL을 가지고 있다면 왜 각 호출에 대해 새로운 '서비스'를 생성해야합니까? WSDL을 한 번로드하면됩니다 (요청시 서비스가 자동으로 수행하지 않습니까?). 당신이 그것을 수동으로하도록 강요하고있는 것처럼 보입니다 ... –

+0

@J_A_X 그래, 나는 cairngorm이 끔찍하다는 데 동의하지만 일반화 된 수업을 해킹 한 후에 거기에 있었던 것이고 나를 위해 일한다. 새 서비스를 만들지 않고 정의한 각 서비스에 대해 wsdl을로드합니다. 그러나 wsdl은 런타임까지 알려지지 않았으므로 loadscript() 호출을 수동으로 수행해야합니다. actionscript에서 wsdl 위치를 정의해야 할 경우 자체적으로 수행하지 않기 때문입니다. 멍청한 기능이라고 생각합니다. – Kevin

+0

그래도 문제가 발생하지 않습니다. 동일한 WSDL을 모두 사용하는 경우 왜 많은 서비스가 있습니까? 똑같은 WSDL에 대해 동일한 WebService를 가지고 명령/위임자를 사용하여 호출하는 작업을 변경하지 않는 이유는 무엇입니까? –

답변

0

로드 된 각 WSDL의 인터페이스가 서로 다른 경우 (즉, 서로 다른 웹 작업이있는 경우) 각 인터페이스/WSDL을 개별적으로로드 할 수밖에 없습니다. 애플리케이션이 클라이언트 측에서 캐싱되어 웹 애플리케이션을 나타내는 속성 및 함수를 입력 할 수 있어야합니다.

wsdl을로드하고 클라이언트 측 코드에서 아무 것도 호출하지 않는 경우 실제로 dis-service를 수행하게됩니다.

관련 문제