oracle 监听程序的作用

oracle 监听程序的作用,第1张

Oracle Web监听程序是个商业品质级的HTTP服务器,为来自任何Web浏览器的文档请求进行服务。 客户端可以位于使用标准HTTP协议的网络的任何地方。在此协议之下,文档的类型与文档本身一起发往客户端。Web Listener支持多种不同的文档类型。

客户端解释并且显示相应的文件,或者将文件传给处理该文档类型的特定程序。例如,在客户机上MPEG viewer将接收由新闻广播宕下来的视频片段。Oracle Web Listener可以处理大量的模拟请求,并具有比市场上的HTTP服务器更有效利用系统资源的高级特性。

扩展资料

Oracle Web Listener接收到一个来自客户机的请求后,首先判断它请求的是一个静态文件还是动态文件。如果请求的是静态文件,Web Listener将文件和相关的类型信息直接发给客户端。

如果请求的是动态文件,它由一个由Web Listener启动的程序在“飞行中”(on the fly)创建,且与公共网关接口(CGI)兼容。CGI为一个使HTTP服务器能够运行程序并将程序输出作为一个文件发送给用户。

大多数HTTP服务器都支持此接口,Oracle Web Listener 遇到一个数据库存储过程的请求时,使用该接口调用Oracle Web Agent。另外,其他任何可执行的程序均可以通过CGI调用。

特点

1、完整的数据管理功能:数据的大量性;数据的保存的持久性;数据的共享性;数据的可靠性。

2、完备关系的产品:

信息准则-关系型DBMS的所有信息都应在逻辑上用一种方法,即表中的值显式地表示;保证访问的准则;视图更新准则-只要形成视图的表中的数据变化了,相应的视图中的数据同时变化;数据物理性和逻辑性独立准则。

参考资料来源:百度百科-Oracle数据库

参考资料来源:百度百科-Oracle WebServer

如果您的计算机上有太多要被监视的文件夹,可能会影响计算机性能和响应速度。以下是一些可能有帮助的方法:

1. 取消对不必要的文件夹的监视:如果您发现某些文件夹不再需要被监视,可以取消对它们的监视以减轻系统负担。

2. 优化监视程序:一些文件夹监视程序可能会占用过多的系统资源。您可以尝试升级程序或更换更高效的程序。

3. 优化计算机性能:如果您的计算机性能不足,可能需要考虑进行一些优化措施,例如添加更多内存、清理磁盘空间或升级处理器等。

4. 调整监视频率:您可以尝试减少监视程序的扫描频率,以减轻系统负担。但请注意,这可能会降低监视的实时性和准确性。

请注意,以上建议仅供参考。对于特定情况下的问题,需要根据具体情况进行分析和解决。

首先我们在项目中总会使用到一些properties或者xml文件,那么正常情况下当我们修改这些文件的时候,我们需要重启服务器让系统的类重新去加载这些文件。 这样就会导致改动一点点就需要重启服务器,很不方便。

解决的办法: 利用监听器来监听到文件的改变,然后让程序重新加载文件,这样就达到类似热更新的效果.

在此说明,我以下所写内容,大部分都是参考了一篇博客,在此非常谢谢这位博主。

博客:https://blog.csdn.net/u013223806/article/details/85858494

好了 正文开始。

<dependency>

<groupId>commons-io</groupId>

<artifactId>commons-io</artifactId>

<version>2.4</version>

</dependency>

我自己这里只是简单的实现了当文件被修改的时候,我需要做什么。

2.1 新建MyFileListenerAdaptor 继承 FileAlterationListenerAdaptor

2.2 创建自定义文件监视器类MyFileAlterationMonitor,可用来实现热更配置文件/监听文件场景。(由于太长,或者去上面的博客里面看,一样的)

package top.aiprogram.common

import org.apache.commons.io.filefilter.FileFilterUtils

import org.apache.commons.io.monitor.FileAlterationListenerAdaptor

import org.apache.commons.io.monitor.FileAlterationMonitor

import org.apache.commons.io.monitor.FileAlterationObserver

public class MyFileAlterationMonitor{

    /***

    * 自定义文件监视器,可用来实现热更配置文件/监听文件场景

    * @author Zane

    * @Time 2019年1月5日 上午10:41:12

*/

    private Stringpath      // 文件夹目录

    private StringfileSuffix// 需要监听的文件名后缀

    private long interval    // 监听间隔

    private static final long DEFAULT_INTERVAL =10 *1000// 默认监听间隔10s

    private FileAlterationListenerAdaptorlistener    // 事件处理类对象

    public MyFileAlterationMonitor(){

        this.interval =DEFAULT_INTERVAL

    }

    public MyFileAlterationMonitor(String path, String fileSuffix, FileAlterationListenerAdaptor listenerAdaptor){

        this.path = path

        this.fileSuffix = fileSuffix

        this.interval =DEFAULT_INTERVAL

        this.listener = listenerAdaptor

    }

    public MyFileAlterationMonitor(String path, String fileSuffix, long interval, FileAlterationListenerAdaptor listenerAdaptor) {

        this.path = path

        this.fileSuffix = fileSuffix

        this.interval = interval

        this.listener = listenerAdaptor

    }

    /***

    * 开启监听

    */

    public void start() {

        if(path==null) {

            throw new IllegalStateException("Listen path must not be null")

        }

        if(listener==null) {

            throw new IllegalStateException("Listener must not be null")

        }

        // 设定观察者,监听.properties文件

        FileAlterationObserver observer =new FileAlterationObserver(path,

                FileFilterUtils.suffixFileFilter(fileSuffix))

        // 给观察者添加监听事件

        observer.addListener(listener)

        // 开启一个监视器,监听频率是5s一次

        // FileAlterationMonitor本身实现了 Runnable,是单独的一个线程,按照设定的时间间隔运行,默认间隔是10s

        FileAlterationMonitor monitor =new FileAlterationMonitor(interval)

        monitor.addObserver(observer)

        try {

            monitor.start()

        } catch (Exception e) {

            e.printStackTrace()

        }

}

    public void setPath(String path) {

        this.path = path

    }

    public void setFileSuffix(String fileSuffix) {

        this.fileSuffix = fileSuffix

    }

    public void setAdaptor(FileAlterationListenerAdaptor listenerAdaptor) {

        this.listener = listenerAdaptor

    }

}

3.3 弄好这2个类文件开始测试.

main 方法里面直接测试,我这里用的文件目录是db.properties所在的文件目录.检测.properties的文件.

让它跑起来,它会一直处于监听状态。为什么会一直处于监听状态呢,因为monitor这个对象其实是实现了Runnable接口,所以是一个线程来的。

然后等他跑起来,我们修改一下properties文件,就会出发文件修改的效果,如下图。

按照上面,我们只是在main方法玩玩,对项目好像没什么用处。当tomcat启动时候,我们也想让它启动。我自己用的方法就是,创建一个监听器去监听ServletContext(web容器),然后在初始化方法中去启动这个监听就能简单的实现了监听文件的变化了。如下图:

我创建MyListener实现ServletContextListener,别忘记了在web.xml把这个监听器配置上。 或者直接在这个类上打上注解 @WebListener() 就不用在web.xml配置

最后,我这里只是简单的实现监听文件的修改,并作出相对反应,监听文件修改后触发的动作具体还是要看项目上的业务。

对于为什么能监听到文件的变化,我自己思考想了一下,应该是文件会有一个最后修改时间,然后所以可以根据这个就知道文件有没修改。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/11653116.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-17
下一篇 2023-05-17

发表评论

登录后才能评论

评论列表(0条)

保存