NetConnection.Call.Failed passiert sporadisch in Flex3 / Tomcat / BlazeDS / Spring

Ich habe ein sehr großes Problem. Ich habe eine große App mit Flex3 / Tomcat / BlazeDS / Spring geschrieben, die bei der Entwicklung vor Ort sehr gut funktioniert hat. Bei der Bereitstellung in einer allgemeinen Entwicklungsumgebung ist dies in Ordnung, bei der Bereitstellung in unserer Testumgebung schlägt sie jedoch häufig fehl.

Die meisten Fehler treten auf, wenn eine Remoting-Anforderung einige Zeit in Anspruch nimmt (mehr als 20 Sekunden). Auf meinem Entwickler-Server treten die Fehler auf, jedoch nur, wenn die Anforderung sehr lange dauert (mehr als 45 Sekunden). Der Fehler tritt jedoch manchmal auch augenscheinlich augenblicklich auf (senden Sie eine Anforderung, und der Fehler tritt sofort auf). Die meisten Fehler haben auch den HTTP-Status: 502 (Bad Gateway), aber einige sagen einfach, HTTP ist fehlgeschlagen.

Ich habe mit BlazeDS nichts Besonderes gemacht, außer die War-Datei in das Webapps-Verzeichnis zu stellen. Der Zugriff auf die Anwendung erfolgt über https. Remoteanrufe beziehen sich auf den Server nur nach "Ziel". Die Tomcat-Server in unseren DEV- und TEST-Instanzen haben identische Java-Argumente (dieselben Xms und Xmx usw.). Unten sind meine relevanten Dateien:

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>

web.xml

<?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>

Ich bin fast am Ende meines Seils. Der Fehler ist ein App-Breaker. Bitte, bitte hilf mir, wenn du kannst.

BEARBEITE Ich habe auf http umgestellt und bekomme trotzdem den Fehler. Tomcat sagt jetzt:

WARNING: Fehler beim Senden des Endpakets

java.net.SocketException: Rohrbruch

Ich suche in meinem Apache-Protokoll nach jk_mod und sehe einige Debug-Informationen, die der von mir gesendeten Anfrage ähneln, und dann die folgenden:

[debug] ajp_send_request :: jk_ajp_common.c (1592): Den Anfragetext erneut senden (432)

[debug] jk_shutdown_socket :: jk_connect.c (681): Über das Herunterfahren von Socket 68

[debug] jk_shutdown_socket :: jk_connect.c (732): Socket 68 herunterfahren und 0 verbleibende Bytes lesen

[info] ajp_connection_tcp_get_message :: jk_ajp_common.c (1150): (myTestServer) kann die Antwortheader-Nachricht von Tomcat, Netzwerkproblemen oder Tomcat (xx.xx.xx.xx: xxxx) nicht empfangen (errno = 11)

[error] ajp_get_reply :: jk_ajp_common.c (1962): (myTestServer) Tomcat ist inaktiv oder die Verbindung wurde abgelehnt. Es wurde (noch) keine Antwort an den Kunden gesendet

[info] ajp_service :: jk_ajp_common.c (2447): (myTestServer) Senden der Anforderung an Tomcat fehlgeschlagen (wiederherstellbar), (attempt = 2)

[Fehler] ajp_service :: jk_ajp_common.c (2466): (myTestServer) Verbindung zu Tomcat fehlgeschlagen.

[debug] ajp_reset_endpoint :: jk_ajp_common.c (743): (myTestServer) Zurücksetzen des Endpunkts mit sd = 4294967295 (Herunterfahren des Sockets)

[debug] ajp_done :: jk_ajp_common.c (2905): Slot für Recycling-Verbindungspool = 0 für Worker myTestServer

[info] jk_handler :: mod_jk.c (2615): Servicefehler = 0 für worker = myTestServer

Antworten auf die Frage(2)

Ihre Antwort auf die Frage