2010-01-25 8 views
0

Proxy (Apache)를 통해 Tomcat 5.5에서 BlazeDS와 Flex를 사용하는 데 문제가 있습니다. 나는 이미 그것을 찾았지만 내 문제를 해결하는 해답을 찾지 못했습니다. 너희들이 나를 도울 수 있기를. :-)BlazeDS Servlet이 프록시를 통해 응답하지 않습니다.

우리의 시나리오하면 다음과 같습니다

플렉스 - 앱

는 톰캣 5.5에 우리의 DataService와 통신 할 수 블레이즈 DS를 사용하여. 웹 애플리케이션은 balze 활성화하고 서비스 설정은 다음과 같이 채널 정의를 포함합니다 :

<channel-definition id="my-amf" class="mx.messaging.channels.AMFChannel"> 
    <endpoint url="http://xxx.xxx.xxx.xxx:8180/myDataService/messagebroker/amf" class="flex.messaging.endpoints.AMFEndpoint"> 
</channel-definition> 

내가 http://xxx.xxx.xxx.xxx:8180/myDataService (컨텍스트 루트 :/MyDataService로)로 플렉스 서버 루트 URL을 설정하고이 서비스-설정에 대한 내 플렉스 응용 프로그램을 컴파일합니다.

그 후 나는 플렉스 애플리케이션과 데이터 서비스를 일부 IP 주소 xxx.xxx.xxx.xxx가있는 서버에 배치했다. http://xxx.xxx.xxx.xxx:8180/myDataservice 을 나는 IP와 URL 모든 것이 잘 작동되는 주소를 사용하여 내 플렉스 응용 프로그램을 열 경우 톰캣 포트 8180.

에서 수신 : 그 이 http://xxx.xxx.xxx.xxx:8180/myFlexApp 또는 DataService의 사용 후 두 응용 프로그램을 사용할 수 있습니다. 내 응용 프로그램에서 데이터를 완벽하게 수신하고 있습니다.

확인. 지금까지는 괜찮 았어.

이제 ip를 숨기고 도메인 이름을 사용하기 위해 (아파치 http 서버를 통해) 프록시 서버를 사용하고 싶습니다.

나는 나의 서비스-설정을 다음과 같이 변경하십시오

<channel-definition id="my-amf" class="mx.messaging.channels.AMFChannel"> 
    <endpoint url="http://mydomain.com/data/messagebroker/amf" class="flex.messaging.endpoints.AMFEndpoint">  
</channel-definition> 

나는 http://mydomain.com/data에 (컨텍스트 루트/데이터) 플렉스 서버 루트 URL을 설정하고이 서비스-설정에 대한 내 플렉스 응용 프로그램을 컴파일합니다.

전과 동일한 tomcat에 응용 프로그램을 다시 배포합니다.

이제 mydomain.com이라는 아파치 디렉토리 (etc/apache2/sites-available /)의 sites-available (사이트 사용 가능) 폴더에 항목을 만듭니다. ServerName www.mydomain으로 가상 호스트를 만듭니다. com 및 ServerAlias ​​mydomain.com. 또한 프록시 블록에 필요한 규칙을 추가하고 가상 호스트 정의에 필요한 다른 것들을 추가합니다. 그 후

ProxyPass /flexApp http://xxx.xxx.xxx.xxx:8180/myFlexApp 
ProxyPassReverse /flexApp http://xxx.xxx.xxx.xxx:8180/myFlexApp 

ProxyPass /data http://89.19.229.148:8180/myDataservice 
ProxyPassReverse /data http://89.19.229.148:80/myDataservice 

내가 브라우저에서 http://www.mydomain.com/flexApp와 플렉스 응용 프로그램을 열 수 있으며로드 : 다음 ProxyPass로/ProxyPassReverse 항목이 파일에 포함되어 있습니다. 그러나 blazed를 사용하여 dataservice에 연결하려고하면 오류 메시지가 표시됩니다. 심지어 URL http://mydomain.com/data/messagebroker/amf을 열 수 없습니다. 404 오류가 표시됩니다. 전에 - IP 주소를 사용하여 - 빈 페이지가 표시되었습니다. 이상한 점은 블레이즈가 아닌 서블릿이 잘 작동한다는 것입니다. e.G. http://mydomain.com/data/myServlet을 열면 작동합니다. 블레이즈 만 작동하지 않습니다.

이 문제가 발생하는 이유와 해결 방법에 대한 의견이 있으십니까? 많은 감사드립니다. 너 정말 나를 돕고있어!

헨릭

답변

0

모두 블레이즈 DS와 플렉스 응용 프로그램은 채널 정의의 엔드 포인트의 URL을 사용하고 있습니다. 그러나 URL은 실제로 달라야합니다.Flex 애플리케이션이 data/messagebroker/amf URL을 사용해야하는 동안 BlazeDS는 myDataservice/messagebroker/amf URL을 사용해야합니다. 따라서 두 URL을 동일하게 만들 수 있습니다. 데이터 대신 myDataservice . 또는 채널 정보를 services-config 파일을 읽는 대신 Flex 어플리케이션에서 수동으로 설정할 수 있습니다.

0

내가 요청 리디렉션 AJP을 사용하고 있습니다 :

// enable mod_proxy_ajp 
a2enmod proxy_ajp 

프록시 구성은 다음과 같습니다

ProxyPass /flexApp/messagebroker/ ajp://localhost:8009/flexApp/messagebroker/ 
관련 문제