Java Flex+;JPA/Hibernate+;BlazeDS+;MySQL如何调试这个怪物?

Java Flex+;JPA/Hibernate+;BlazeDS+;MySQL如何调试这个怪物?,java,apache-flex,jakarta-ee,blazeds,Java,Apache Flex,Jakarta Ee,Blazeds,好的,我正在使用本主题中的技术制作一个“简单”的web应用程序,最近我发现,所以我在关注它,并尝试将它应用到我的应用程序中,唯一的区别是我在Mac上工作,我在数据库中使用MAMP(所以我没有命令行) 问题是我在检索/连接数据库时遇到了一些问题 我有remoting-config.xml、persistence.xml、一个News.java类(我的实体)、一个NewsService.java类、一个News.as类——所有这些都与教程中的一样。当然,我的.mxml中有一行: <mx:Rem

好的,我正在使用本主题中的技术制作一个“简单”的web应用程序,最近我发现,所以我在关注它,并尝试将它应用到我的应用程序中,唯一的区别是我在Mac上工作,我在数据库中使用MAMP(所以我没有命令行)

问题是我在检索/连接数据库时遇到了一些问题

我有remoting-config.xml、persistence.xml、一个News.java类(我的实体)、一个NewsService.java类、一个News.as类——所有这些都与教程中的一样。当然,我的.mxml中有一行:

<mx:RemoteObject id="loaderService" destination="newsService" result="handleLoadResult(event)" fault="handleFault(event)" showBusyCursor="true" />
handledLoadResult如下所示:

    private function handleLoadResult(ev:ResultEvent):void {
        newsList = ev.result as ArrayCollection;
        newsRecords = newsList.length;
    }
其中:

[Bindable]
private var newsList:ArrayCollection = new ArrayCollection();
但当我试图触发:

loaderService.getLatestNews();

什么也没发生,新闻列表是空的

我需要指出的几点是: 1) 正如我所说,我没有手动安装mysql,但我使用的是MAMP(是的,服务器正在运行),这会导致一些问题吗? 2) 我已经有了一个“gladm”数据库和一个包含所有字段的“GLT_新闻”表,这是不是很糟糕

基本上,问题是我应该如何调试这个东西,这样我才能发现我犯的错误?我知道loadData()已执行(执行了跟踪()),但我不知道loaderService.getLatestNews()会发生什么

@编辑:好的,我看到“故障处理程序”中有一个错误,它说

"Error: Client.Error.MessageSend - Channel.Connect.Failed error NetConnection.Call.Failed: HTTP: Status 404: url: 'http://localhost:8080/WebContent/messagebroker/amf' - "

@EDIT2:好的,我解决了这个问题,因为原来我的ContextRoot是不正确的,有趣的是我不能通过进入Project properties->Flex Server来编辑它,因为它是不可编辑的!我必须找到.flexProject文件并对其进行编辑(显然,我的Flex Navigator没有显示它,而且我无意中注意到它正在被过滤)。

您的错误意味着您没有以正确的方式调用服务器。这里有问题,url是web.config文件还是其他BlazeDS配置文件。

要回答您的问题,一般来说,调试这个怪物……下面是我要做的

  • 在我的Java代码中设置断点

  • 使用适当的调试JVM属性集启动Java应用程序服务器(例如,transport=dt_socket,address=8000,server=y,suspend=n)

  • 在Eclipse中,我将远程调试器连接到默认端口8000上的应用服务器。当遇到断点时,Java调试器将打开

  • 在我的Flex应用程序(或其中一个模块)中设置断点

  • 我从Eclipse(使用FlashBuilder)为我的Flex应用程序启动调试配置。当遇到断点时,Flex调试器将打开

  • 现在我打开了两个调试器,一切都很好。我还做了两件事:

    a) 延长事务系统超时时间,这样当我坐在那里思考几分钟时,它就不会触发

    b) 在客户端和服务器之间使用Charles Proxy(反向代理模式),以监视AMF流量和查看有效负载等

    希望这有帮助

        private function handleLoadResult(ev:ResultEvent):void {
            newsList = ev.result as ArrayCollection;
            newsRecords = newsList.length;
        }
    
    [Bindable]
    private var newsList:ArrayCollection = new ArrayCollection();
    
    "Error: Client.Error.MessageSend - Channel.Connect.Failed error NetConnection.Call.Failed: HTTP: Status 404: url: 'http://localhost:8080/WebContent/messagebroker/amf' - "