【问题标题】:How to implement a web app with blazeds+java+flex+tomcat?如何使用 blazeds+java+flex+tomcat 实现一个 Web 应用程序?
【发布时间】:2010-03-23 21:13:17
【问题描述】:

我正在用 flex blazeds 和 Java 编写一个 Web 应用程序。我安装了用于使用 WTP 混合项目的 Eclipse 插件。当我运行我的 flex 服务时,我正在使用 flex 的服务器,该服务器使用 tomcat 的仿真,Web 应用程序获取了数据,一切正常。问题是当我在我的 tomcat 或 blazeds 的 tomcat 中使用 flex 生成的所有文件复制项目时,它不起作用,这是因为我想在服务器上实现我的应用程序,错误是:

"(mx.messaging.messages::ErrorMessage)#0
  body = (Object)#1
  clientId = (null)
  correlationId = "B425A2A7-7D12-A982-7779-8CCBF669413C"
  destination = ""
  extendedData = (null)
  faultCode = "Client.Error.MessageSend"
  faultDetail = "Channel.Connect.Failed error NetConnection.Call.Failed: HTTP: Failed: url: 'http://172.16.8.245:8400/IEC-BLAZEDS/messagebroker/amf'"
  faultString = "Send failed"
  headers = (Object)#2
  messageId = "1CBC6020-0ED8-C4CC-3B77-8CCBF6D6621D"
  rootCause = (mx.messaging.events::ChannelFaultEvent)#3
    bubbles = false
    cancelable = false
    channel = (mx.messaging.channels::AMFChannel)#4
      authenticated = false
      channelSets = (Array)#5
        [0] (mx.messaging::ChannelSet)#6
          authenticated = false
          channelIds = (Array)#7
            [0] "my-amf"
          channels = (Array)#8
            [0] (mx.messaging.channels::AMFChannel)#4
          clustered = false
          connected = false
          currentChannel = (mx.messaging.channels::AMFChannel)#4
          initialDestinationId = (null)
          messageAgents = (Array)#9
            [0] (mx.rpc::AsyncRequest)#10
              authenticated = false
              autoConnect = true
              channelSet = (mx.messaging::ChannelSet)#6
              clientId = (null)
              connected = false
              defaultHeaders = (null)
              destination = "ADEscenario"
              id = "7D92EDF2-CF62-9545-BA11-8CCBF6691E6B"
              reconnectAttempts = 0
              reconnectInterval = 0
              requestTimeout = -1
              subtopic = ""
      connected = false
      connectTimeout = -1
      enableSmallMessages = true
      endpoint = "http://172.16.8.245:8400/IEC-BLAZEDS/messagebroker/amf"
      failoverURIs = (Array)#11
      id = "my-amf"
      mpiEnabled = false
      netConnection = (flash.net::NetConnection)#12
        client = (mx.messaging.channels::AMFChannel)#4
        connected = false
        objectEncoding = 3
        proxyType = "none"
        uri = "http://172.16.8.245:8400/IEC-BLAZEDS/messagebroker/amf"
      piggybackingEnabled = false
      polling = false
      pollingEnabled = true
      pollingInterval = 3000
      protocol = "http"
      reconnecting = false
      recordMessageSizes = false
      recordMessageTimes = false
      requestTimeout = -1
      uri = "http://{server.name}:{server.port}/IEC-BLAZEDS/messagebroker/amf"
      url = "http://{server.name}:{server.port}/IEC-BLAZEDS/messagebroker/amf"
      useSmallMessages = false
    channelId = "my-amf"
    connected = false
    currentTarget = (mx.messaging.channels::AMFChannel)#4
    eventPhase = 2
    faultCode = "Channel.Connect.Failed"
    faultDetail = "NetConnection.Call.Failed: HTTP: Failed: url: 'http://172.16.8.245:8400/IEC-BLAZEDS/messagebroker/amf'"
    faultString = "error"
    reconnecting = false
    rejected = false
    rootCause = (Object)#13
      code = "NetConnection.Call.Failed"
      description = "HTTP: Failed"
      details = "http://172.16.8.245:8400/IEC-BLAZEDS/messagebroker/amf"
      level = "error"
    target = (mx.messaging.channels::AMFChannel)#4
    type = "channelFault"
  timestamp = 0
  timeToLive = 0"

我不知道为什么 tomcat 找不到用于 my-amf 'http://172.16.8.245:8400/IEC-BLAZEDS/messagebroker/amf' 的 flex.messaging.endpoints.AMFEndpoint 类。在 flex 拥有的模拟服务器中一切正常。

【问题讨论】:

标签: java apache-flex tomcat implementation blazeds


【解决方案1】:

确保 web.xml 有一个用于消息代理的 servlet,并且 BlazeDS 库位于您的 WEB-INF/lib 文件夹中。

【讨论】:

  • 好的坦克,今天我解决了这个问题,问题是我没有发布并且 WEB-INF,META-INF 没有与 bin-debug 处于同一级别(已发布),另一个问题是我们项目中的 .svn 文件,现在该应用程序在服务器上完美运行,感谢您的时间,感谢您的评论
  • adobe.com/devnet/livecycle/articles/blazeds_testdrive.html 上还可以找到如何完成工作的一个很好的示例
【解决方案2】:

我不知道你是否检查过,但由于 java 版本的原因,我有几次相同的转储。 flex 服务器可能使用与您的 tomcat / blazeDS 不同的 java 版本。

另外,您不应该在 tomcat 服务器中复制您的项目。你为什么不在war文件中发布你的应用程序?

为了使开发更容易,我直接在 Flex Builder 中工作,创建了一个混合的 Flex/Java 项目(我这样做是因为 Java 部分真的很轻),并使应用程序在 Tomcat 服务器中运行。为了让我的应用程序在另一台服务器上运行,我首先确保服务器使用与我在应用程序中使用的相同的 Java 版本(或更高版本),然后部署 war 文件。诀窍就完成了。

【讨论】:

  • 好的坦克,今天我解决了这个问题,问题是我没有发布并且 WEB-INF,META-INF 没有与 bin-debug 处于同一级别(已发布),另一个问题是我们项目中的 .svn 文件,现在该应用程序在服务器上完美运行,感谢您的时间,感谢您的评论
【解决方案3】:

这种类型的问题很常见。最近,我也被这种类型所困扰。经过 48 小时的研究,我知道一个小错误会使这个错误变得很大,就像我们在部署 webapp 时所做的那样。

您的错误信息: http://172.16.8.245:8400/IEC-BLAZEDS/messagebroker/amf'

当您未在服务器 webapp 中完美部署时,会出现此错误消息。 例如,您在机器的tomcat 下的webapps 中创建了“IEC-BLAZEDS”文件夹。 首先,检查它是否在你的机器上正常运行。

现在,如果您要在任何服务器及其相应的 webapps 文件夹中进行部署,请确保必须直接放置“IEC-BLAZEDS”文件夹的副本。

当然,它对你有用。如上修改恢复了我的问题。

希望对你有帮助。

-泰吉·伊琳德拉 即将到来的 Flex Professional...

【讨论】:

    猜你喜欢
    • 2011-01-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-02-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多