1

我正在使用 Oracle 的 ORDS 20.2,它嵌入了 jetty/9.4.28.v20200408、APEX 20.1、Database 18c XE、Google Chrome 版本 84.0.4147.135(官方构建)(64 位)、opera 版本:70.0.3728.106 和 Windows 7 Ultimate .

在 APEX 中有一个目录,其中包含 APEX 的静态文件 - CSS 和 Javascript 文件以及图像文件。我需要为该目录​​启用 gzip 并告诉浏览器将其缓存至少 12 小时,以便根据此处的 Oracle 文档https://docs.oracle.com/en提高 APEX 开发环境和我的 APEX 应用程序的性能/database/oracle/application-express/19.2/htmig/performance-optimization-tasks.html#GUID-668ED330-AFDC-4A43-AA11-D67FCCA58DA1

我在 ORDS 配置目录的“独立”文件夹下创建了一个名为“etc”的文件夹。那是我应该放置任何 Jetty 的 Xml 配置文件的文件夹。然后创建了一个名为“jetty.xml”的文件,其内容如下,以实现 Jetty 文档中关于发送 Cache-Control 标头的内容, https://www.eclipse.org/jetty/documentation/current/header-filter.html

    <?xml version="1.0"?>  
    <!DOCTYPE Configure PUBLIC "-//Jetty//Configure//EN"   
    "http://www.eclipse.org/jetty/configure.dtd">  
    <filter>  
       <filter-name>HeaderFilter</filter-name>  
       <filter-class>org.eclipse.jetty.servlets.HeaderFilter</filter-class>  
       <init-param>  
         <param-name>headerConfig</param-name>  
         <param-value>  
          "add Cache-Control: max-age=43200"  
         </param-value>  
       <init-param>  
         <param-name>includedPaths</param-name>  
         <param-value>  
          "D:\ords\images"  
         </param-value>  
       </init-param>  
     </filter>  

但是当我通过一个批处理文件运行 ORDS 时

    cd D:\Original\Oracle_ORDS_Editions\ords-20.2.0.178.1804
    d:
    java -jar ords.war standalone

cmd窗口打开然后自动消失。我需要知道为什么代码失败并且仍然需要为该目录​​启用 gzip。谢谢你。

4

1 回答 1

1

HeaderFilter用于传统上通过 webapp 存档(WAR 文件)部署的 webapps 。

记录的配置HeaderFilter是针对特定于正在部署的 web 应用程序的 war 内部WEB-INF/web.xmlservlet 描述符(通常在 WAR 文件中找到)。

任意创建etc目录和jetty.xml文件从来都不是 Jetty 的相关配置形式。

仅当您使用独立的 Jetty 技术(例如在旧档案中看到的内容)时,该etc目录和概念才相关。更具体地说,存档内的文件是唯一查找和使用目录或文件的文件。jetty.xmljetty-homejetty-distributionstart.jarjetty-homeetcjetty.xml

jetty.xml知道的start.jar,永远不会通过手动创建或编辑来管理。实际上,它通常是存档随附的只读文件jetty-home,并且可以就地使用。该etc目录可以在jetty-home存档中找到,也可以在称为${jetty.base}目录的 Jetty 独立应用程序特定配置中看到。

您提到了“jetty/9.4.28.v20200408 embedded”,这通常意味着它没有使用独立的 Jetty 概念。在嵌入式 Jetty 场景中,Jetty 服务器的配置通常在父项目的配置技术中完成(在您的情况下为 Oracle ORDS)。您需要知道 Jetty 服务器是如何配置的,并在父项目提供给您的任何配置的限制范围内工作。

于 2020-09-03T16:12:59.740 回答