1

问题:以下问题发生在两种不同的情况下..

情况1:当客户端发出remoteObject 请求即保存一些信息时... 调用Java SAVE_INFO 方法。如果请求失败,即返回到 FaultHandler(我们将信息保存在 arrayCollection 中)。稍后我们为 arrayCollection 中的每个项目再次调用 SAVE_INFO 即(如果 arrayCollection 有 10 个项目..我们调用 10 次相同的方法..我知道这有点愚蠢,但我们无法控制 java 来编写重载方法)。有时我们会看到数据库中有多个相同信息的记录。我不确定在遍历 arraycollection 并拨打电话时或在正常的一次性通话期间是否会发生这种情况。我们找不到可以重现的模式。Java LOG 级别在生产中处于错误级别。无法在生产中设置为 INFO 来监控所有呼叫。我们不知道这个多次保存的记录是arrayCollection 中的记录还是普通记录。

Flex3 RemoteObject --> WAS 6.1 , LCDS 3.0, Java1.5 --> Webservice --> Java (hibernate) --> Oracle 10g

案例2:当应用程序保持打开状态并且用户离开当天并在第二天早上提交信息时,我们在数据库中看到该信息的重复记录。(这里没有arrayCollection。简单的直接调用)

Flex3 RemoteObject --> OC4J Blazeds Java1.5 (JDBC) --> Oracle 10g。

最近,我们的一个测试人员测试案例 2 应用程序发现了这种模式,我开始认为案例 1 也可能是这样。用户可能会离开去吃午饭/休息,回来后重新提交了 arrayCollection。在午餐期间,java 可能已经终止了客户端的会话,并且在同时重新提交 10 个之后.. java 可能已经创建了 10 个重复的会话......我再次假设可能是完全错误的。

我不知道 flex remoteObject amf 批处理调用是否导致错误或 Java 会话重复导致错误或 oracle 正在执行此操作。我不知道问题可能出在哪里。

请帮忙 ???

4

1 回答 1

0

我认为您假设连接已失效是正确的,但这可能是也可能不是由于您的收藏有重复。一个快速测试是重新编写 arrayCollection 代码以不允许重复,并查看是否可以修复它。

奇怪的是,这可能是来自同一客户端的多个会话的问题,其中对服务进行了多个连接。这通常是由于远程主机禁用了会话 cookie。必须启用会话 cookie 才能在 Blaze 中正确管理客户端连接。

如果是这种情况,您将需要编写代码来限制客户端创建的同时连接数。例如,这可以在 JSP 页面中完成。要对此进行测试,您可以编写一些代码来在表中存储一个带有连接计数的额外字段。这样您就可以查看重复数据是否来自同一个会话。

希望这可以帮助。

于 2012-02-12T05:58:35.060 回答