问题描述
我使用的是嵌入式ORTY / 9.4.28.v20200408,APEX 20.1,Database 18c XE,Google Chrome版本84.0.4147.135(官方版本)(64位),Opera版本:70.0.3728.106的Oracle ORDS 20.2 和Windows 7 Ultimate。
在APEX中,有一个目录包含APEX的静态文件-CSS和Javascript文件以及图像文件。根据此处的Oracle文档https://docs.oracle.com/en/database/oracle/application-express/19.2/htmig/performance-optimization-tasks.html#GUID-668ED330-AFDC-4A43-AA11-D67FCCA58DA1
,我需要为该目录启用gzip并告诉浏览器至少缓存12个小时,以便提高APEX开发环境和我的APEX应用程序的性能。我在ORDS配置目录的“ standalone”文件夹下创建了一个名为“ 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>
cd D:\Original\Oracle_ORDS_Editions\ords-20.2.0.178.1804
d:
java -jar ords.war standalone
cmd窗口打开,然后自动消失。 我需要知道代码为什么失败,仍然需要为该目录启用gzip。谢谢。
解决方法
HeaderFilter
与传统上通过Web应用程序存档(WAR文件)部署的Web应用程序一起使用。
已记录的HeaderFilter
配置是针对战争内部WEB-INF/web.xml
servlet描述符的,该描述符特定于所部署的Web应用程序(通常在WAR文件中找到)。
任意创建etc
目录和jetty.xml
文件从来都不是Jetty的相关配置形式。
etc
目录和jetty.xml
概念仅在使用独立Jetty技术(例如在jetty-home
或更旧的jetty-distribution
档案中看到的内容)才有意义。 。更具体地说,start.jar
归档文件中的jetty-home
是查找和使用etc
目录或jetty.xml
文件的唯一文件。
jetty.xml
知道的start.jar
永远不会通过手动创建或编辑来管理。实际上,它是jetty-home
归档文件随附的通常是只读文件,并且就地使用。 etc
目录位于jetty-home
归档文件中,也可以在Jetty独立版本的应用程序特定配置(称为${jetty.base}
目录中看到)。
您提到“ jetty / 9.4.28.v20200408嵌入式”,这通常意味着它没有使用独立的Jetty概念。在嵌入式Jetty场景中,Jetty服务器的配置通常在父项目(在您的情况下为Oracle ORDS)的配置技术内完成。您将需要知道Jetty服务器的配置方式,并在父项目为您提供的任何配置的限制内工作。