0

In the middle of development process of an application in Oracle APEX I started to get really weird 404 (Not Found) exceptions from APEX engine.

Sometimes APEX responds 404 (Not Found) on different actions. Points where I can get these exceptions may be different:

  • When an AJAX call is made: enter image description here
  • When a modal page is submitted: enter image description here
  • When a page is changed in the App Builder: enter image description here
  • Sometimes even when a developer is logged in to the App Builder: enter image description here

The weirdest thing about all this is that this exception occurs only once in a row. For example, If I press a button to submit a page, I get the exception the first time, when I press the button the second time, everything works.

One of the examples how to reproduce the exeption with the 100% probabilty - I have a page with several interactive reports on it. Each interactive report has a link column to edit the row. When a user clicks the link, a modal window appears with a form, then they should click the button "Save". So the steps to reproduce the error:

  1. Open the page with interactive reports.
  2. Choose a row to edit, click the link column.
  3. Change anything in the modal window, click save.
  4. The error appears.
  5. Click Save again.
  6. Data is saved, modal window is closed and the report refreshed.

In the browser javascript console I see the following:

POST http://<my_ip_address>/apex/wwv_flow.ajax 404 (Not found)
XHR failed loading: POST "http://<my_ip_address>/apex/wwv_flow.ajax".

Also, I opened a discussion on OTN about the topic where I gave some additional information.

4

1 回答 1

0

使用试错法,找到了错误的原因。

看来,该错误与基于LOV(值列表)的项目或报告列有关。并且仅当这些LOV基于返回大量行的流水线函数时(比如说 100 多行)。

这就是发生的事情:

  1. User1 提交一个页面,其中有几个项目基于LOV(这些项目又基于数据库流水线功能)。例如,几个Popup LOV项目。User1 设置了一些值并按下了提交按钮。
  2. APEX accept process收到请求,尝试从 LOV 中获取行,但不需要所有行,据我了解,尝试关闭游标。
  3. 流水线函数引发异常 - ORA-06548: no more rows needed. 这是绝对合法的行为。
  4. APEX 引擎对其反应不充分,并404 (Not Found)作为请求的结果返回。
  5. APEX show process包装此异常并将其返回给 User1。User1 看到我上面显示的一张图片。

因此,解决方案是抑制 LOV 组件中使用的流水线函数生成的任何异常。这样做之后,一切都开始运作良好。

由于三个原因,我认为这是一个 Oracle APEX 错误- 对流水线功能的反应不充分,响应中生成的错误对开发人员和用户来说都是不透明的,甚至在任何地方都没有正确记录。

于 2017-09-04T19:08:56.497 回答