【问题标题】:NetConnection.Call.Failed happening sporadically in Flex3/Tomcat/BlazeDS/SpringNetConnection.Call.Failed 在 Flex3/Tomcat/BlazeDS/Spring 中偶尔发生
【发布时间】:2011-03-09 20:57:19
【问题描述】:

我有一个很大的问题。我使用 Flex3/Tomcat/BlazeDS/Spring 编写了一个大型应用程序,它在本地开发时运行良好,当我部署到通用开发环境时很好,但在部署到我们的测试环境时经常失败。

当远程请求花费大量时间(超过 20 秒)时,故障似乎最常发生。在我的开发服务器上,错误会发生,但只有在请求需要很长时间(超过 45 秒)时才会发生。但是,错误有时也会看似立即发生(发送请求并立即失败)。大多数错误也有 HTTP Status: 502 (Bad Gateway),但有些只是说 HTTP Failed。

除了将战争文件放在 webapps 目录中之外,我没有对 BlazeDS 做任何特别的事情。该应用程序通过 https 访问。远程调用仅通过“目标”引用服务器。我们的 DEV 和 TEST 实例上的 tomcat 服务器具有相同的 java 参数(相同的 Xms 和 Xmx 等)。以下是我的相关文件:

服务配置.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>

我的绳索已经快到头了。该错误是一个应用程序破坏者。请,如果可以的话,请帮助我。

编辑 我切换到http,仍然得到错误。 Tomcat 现在说:

警告:发送结束数据包时出错

java.net.SocketException: 损坏的管道

我在我的 apache 日志中查找 jk_mod 并看到一些调试信息,类似于我发送的请求,然后是以下内容:

[调试] ajp_send_request::jk_ajp_common.c (1592):重新发送请求正文 (432)

[调试] jk_shutdown_socket::jk_connect.c (681): 即将关闭套接字 68

[调试] jk_shutdown_socket::jk_connect.c (732): 关闭套接字 68 并读取 0 挥之不去的字节

[信息] ajp_connection_tcp_get_message::jk_ajp_common.c (1150): (myTestServer) 无法接收 来自的响应头消息 tomcat,网络问题或tomcat (xx.xx.xx.xx:xxxx) 已关闭 (errno=11)

[错误] ajp_get_reply::jk_ajp_common.c (1962): (myTestServer) Tomcat 已关闭 或拒绝连接。没有回应 已发送给客户(尚未)

[信息] ajp_service::jk_ajp_common.c (2447): (myTestServer) 发送请求 to tomcat 失败(可恢复), (尝试=2)

[错误] ajp_service::jk_ajp_common.c (2466): (myTestServer) 连接到 tomcat 失败。

[调试] ajp_reset_endpoint::jk_ajp_common.c (743): (myTestServer) 重置 sd = 4294967295 的端点(套接字 关机)

[调试] ajp_done::jk_ajp_common.c (2905):回收连接池 工人 myTestServer 的 slot=0

[信息] jk_handler::mod_jk.c (2615): 服务错误=0 worker=myTestServer

【问题讨论】:

  • 我没有在日志文件中看到任何消息。如果有帮助,BlazeDS 配置的日志级别设置为“警告”。
  • 如果使用http而不是https,你会得到错误吗?
  • 编辑问题以添加其他信息,因为我无法将其全部放在评论中。

标签: java apache-flex spring tomcat blazeds


【解决方案1】:

Cornel Creanga 帮助我找到了这个解决方案。我将我的应用程序切换到 http 并开始在 catalina.out 文件中接收消息。我不知道为什么这会影响它,但确实如此。消息都说套接字中的管道损坏了。进一步调查表明,jk_mod 参与其中。

通过大量搜索,我发现我们的系统管理员在我们的 TEST 服务器上将服务器上的套接字超时设置为 10 秒,但在我们的 DEV 服务器上设置为 5 分钟,因此正在进行的大量搜索导致它一旦超时就超时去测试了。

系统管理员调整了 TEST 的配置,以便另一个工作人员(超时 5 分钟)处理此上下文路径的调用。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-22
    • 2023-03-17
    • 2020-05-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多