복붙노트

[SPRING] Flex3 / Tomcat / BlazeDS / Spring에서 NetConnection.Call.Failed가 산발적으로 발생했습니다.

SPRING

Flex3 / Tomcat / BlazeDS / Spring에서 NetConnection.Call.Failed가 산발적으로 발생했습니다.

나는 아주 큰 문제가있다. 필자는 Flex 3 / Tomcat / BlazeDS / Spring을 사용하여 커다란 응용 프로그램을 작성했습니다.이 개발 도구는 공용 개발 환경에 배포 할 때 로컬에서 개발할 때 좋았지 만 테스트 환경에 배포 할 때 매우 자주 실패합니다.

원격 요청이 좋은 시간 (20 초 이상)이 소요될 때 대부분의 오류가 발생하는 것 같습니다. 내 dev에 서버에서 오류가 발생하지만 요청이 매우 오랜 시간 (45 초 이상) 걸리는 경우에만. 그러나 오류는 겉으로보기에는 즉시 발생합니다 (요청을 보내면 즉시 실패합니다). 대부분의 오류에는 HTTP Status : 502 (잘못된 게이트웨이)가 있지만 일부는 HTTP Failed라고 말합니다.

나는 webapps 디렉토리에 war 파일을 넣는 것 외에는 BlazeDS에 특별한 것을하지 않았습니다. 애플리케이션은 https를 통해 액세스됩니다. 원격 호출은 서버를 "대상"으로 만 참조합니다. DEV 및 TEST 인스턴스의 Tomcat 서버는 동일한 Java 인수 (동일한 Xms 및 Xmx 등)를가집니다. 아래는 관련 파일입니다.

services-config.xml

<?xml version="1.0" encoding="UTF-8"?>
<services-config>
    <services>
        <default-channels>
           <channel ref="my-secure-amf"/>
        </default-channels>
    </services>
    <channels>
        <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>
    </channels>
<services-config>

을 포함한다.

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">

    ...

    <servlet>
        <servlet-name>spring-flex</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <init-param>
            <param-name>contextConfigLocation</param-name>
            <param-value>/WEB-INF/flexContext.xml</param-value>
        </init-param>
        <load-on-startup>1</load-on-startup>
    </servlet>

    <servlet-mapping>
        <servlet-name>spring-flex</servlet-name>
        <url-pattern>/messagebroker/*</url-pattern>
    </servlet-mapping>
</web-app>

flexContext.xml

<!--
    I have component-scan tags here to scan my class files. The Controller I'm using for flex has an annotation on it to define it as a remote destination. Here it is:
    @Controller
    @RemotingDestination(value = "dest", channels="my-secure-amf")
    public class FlexController {
-->

<bean id="flexExceptionTranslator" class="edu.liberty.zconduct.web.FlexExceptionTranslator" />

<flex:message-broker>
    <flex:exception-translator ref="flexExceptionTranslator"/>
    <!-- <flex:secured /> Had this previously, but it wasn't working then, either -->
</flex:message-broker>

나는 나의 밧줄 끝 부분에있다. 오류는 app-breaker입니다. 가능하다면 제발 도와주세요.

편집하다 나는 http로 전환했지만 여전히 오류가 발생합니다. Tomcat은 이제 다음과 같이 말합니다.

내 아파치 로그에서 jk_mod를보고 내가 보낸 요청과 다음 디버그 정보를 볼 수있다.

해결법

  1. ==============================

    1.Cornel Creanga가이 솔루션에 도달하는 것을 도왔습니다. 내 응용 프로그램을 http로 전환하고 catalina.out 파일에서 메시지를 받기 시작했습니다. 나는 이것이 이것이 왜 영향을 미쳤는지는 모르겠다. 메시지는 모두 소켓에 깨진 파이프가 있음을 나타냅니다. 추가 조사에서 jk_mod가 관련되어 있음이 나타났습니다.

    Cornel Creanga가이 솔루션에 도달하는 것을 도왔습니다. 내 응용 프로그램을 http로 전환하고 catalina.out 파일에서 메시지를 받기 시작했습니다. 나는 이것이 이것이 왜 영향을 미쳤는지는 모르겠다. 메시지는 모두 소켓에 깨진 파이프가 있음을 나타냅니다. 추가 조사에서 jk_mod가 관련되어 있음이 나타났습니다.

    많은 검색을 통해 SysAdmins가 서버의 소켓 시간 제한을 TEST 서버에서 10 초로 설정했으나 DEV 서버에서 5 분으로 설정 했으므로 대량 검색을 수행하면 TEST .

    SysAdmins는 TEST에서 구성을 조정하여 다른 작업자 (5 분의 시간 제한 있음)가이 컨텍스트 경로에 대한 호출을 처리하도록했습니다.

  2. from https://stackoverflow.com/questions/3145065/netconnection-call-failed-happening-sporadically-in-flex3-tomcat-blazeds-spring by cc-by-sa and MIT license