Oracle数据库可以向Servlet发送请求吗?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Oracle数据库可以向Servlet发送请求吗?相关的知识,希望对你有一定的参考价值。

通常我们是从浏览器发送请求,但是我想知道数据库是否也可以做同样的事情。假设我的服务器上有一个servlet和一个Oracle数据库。

是否有可能通过使用Schedule选项,数据库将能够向servlet发送请求?

答案

Using UTL_HTTP

是的,您可以从Oracle数据库发送HTTP请求。这是一篇很好的博客文章,总结了如何使用UTL_HTTP package来做到这一点:https://oracle-base.com/articles/misc/utl_http-and-ssl

An example from the Oracle manual

SET SERVEROUTPUT ON SIZE 40000

DECLARE
  req   UTL_HTTP.REQ;
  resp  UTL_HTTP.RESP;
  value VARCHAR2(1024);
BEGIN
  UTL_HTTP.SET_PROXY('proxy.my-company.com', 'corp.my-company.com');
  req := UTL_HTTP.BEGIN_REQUEST('http://www-hr.corp.my-company.com');
  UTL_HTTP.SET_HEADER(req, 'User-Agent', 'Mozilla/4.0');
  resp := UTL_HTTP.GET_RESPONSE(req);
  LOOP
    UTL_HTTP.READ_LINE(resp, value, TRUE);
    DBMS_OUTPUT.PUT_LINE(value);
  END LOOP;
  UTL_HTTP.END_RESPONSE(resp);
EXCEPTION
  WHEN UTL_HTTP.END_OF_BODY THEN
    UTL_HTTP.END_RESPONSE(resp);
END;

Alternative using Oracle AQ

如果你想要一些中间层,你也可以使用Oracle AQ,我个人觉得它更强大:https://docs.oracle.com/database/121/ADQUE/aq_intro.htm

使用Oracle AQ,您可以绕过HTTP层并直接访问Servlet内部调用的任何内容。

以上是关于Oracle数据库可以向Servlet发送请求吗?的主要内容,如果未能解决你的问题,请参考以下文章

Servlet

servlet不能向浏览器发送html标签?

向 Oracle APEX 或 PLSQL 过程发送 POST 请求

什么是servlet

会话 cookie 可以用于向网络服务器发送许多请求吗

重定向和servlet生命周期