2010-08-12 7 views
2

알 수 있듯이 BlazeDS (LiveCycle Data Services의 오픈 소스 버전)는 서버 측 Java 및 클라이언트 측 Flex 응용 프로그램을 함께 재생할 수있는 좋은 방법입니다. 불행히도 수정해야 할 몇 가지 함정이 있습니다. 나는 그들 중 하나를 여기서 설명하려고 노력할 것이다.BlazeDS를 사용하여 런타임에 채널을 만드는 방법은 무엇입니까?

모든 BlazeDS 구성은 웹 응용 프로그램의 flex/ 폴더에있는 XML 파일을 통해 작성됩니다. 기본 이름은 services-config.xml, remoting-config.xml, messaging-config.xml 등과 같이 명확하게 분리되어 있습니다. 이러한 구성 파일 (특히 services-config.xml)에서 채널이 정의됩니다. 이러한 설정 URI 및 서버와 클라이언트간에 정보를 캡처하고 보내는 데 사용되는 개체. 이러한 설정 파일에서, 그렇게 같은 구문을 사용하는 것은 매우 일반적입니다 : 불행하게도

<channel-definition id="my-secure-amf" class="mx.messaging.channels.SecureAMFChannel"> 
     <endpoint url="https://{server.name}:{server.port}/{context.root}/messagebroker/amfsecure" class="flex.messaging.endpoints.SecureAMFEndpoint"/> 
     <properties> 
      <add-no-cache-headers>false</add-no-cache-headers> 
     </properties> 
    </channel-definition> 

을, 그들이 당신을 말하지 않는 것은 이들 키에 교체의 일부 (예 : {context.root}) 실행시에는 동적으로 대체되지 않지만 배포하려는 WAR 파일을 컴파일하면 대체됩니다. 도메인을 전환 할 때 분명히 좋은 생각이 아닙니다.

대신 이러한 채널을 동적으로 정의하려고합니다. 설명서에 따르면 that's all good and fine이지만 은 웹 응용 프로그램이 시작될 때 채널이 이미 존재하는 경우에만 작동합니다. 나는 그런 종류의 패배를 느낀다.

제 질문은 클라이언트와 서버가 모두 자신의 존재를 인식 할 수 있도록 어떻게 채널을 동적으로 만들 수 있습니까?

답변

0

읽어보기 blog post; 나는 네가 한 일이라고 생각한다.

이 xml 구성 파일은 서버와 전혀 직접적인 관련이 없다고 생각합니다. SWF를 사용하여 서버를 찾는 방법을 알려줍니다.

플렉스 앱의 컴파일 시간 동안; 본질적으로 서비스 구성 정보는 SWF에 하드 코딩됩니다.

+0

음, 그것은 약간의 도움이된다. 그러나 아주 거기에 없다. 이것이 내가 할 수있게 해주는 것은'context.root'를 동적으로 얻는 것이지만, 서버 상에 엔드 포인트를 만드는 방법에 대해서는 전혀 설명하지 않는다. 본질적으로 종점에 대한 URI를'services-config.xml'에 하드 코딩해야하기 때문에 서버가 알고있는 한'context.root'가 어떻게 바뀌 었는지 나는 알 수 없습니다. – duckworthd

관련 문제