您可以使用<virtual-directory-mapping>
引用已部署的EAR中的静态内容吗?它会提供任何好处吗?
免责声明:理想情况下,静态资源(如字体,javascript和css)应由网络服务器而非应用程序容器提供。
有关SO的一些关于Weblogic中<virtual-directory-mapping>
的文章。它也有详细记录here和here。
我的应用程序部署在以下位置:
c:\weblogic\deploy\ACME.ear
在ACME.ear
内,CSS
,Fonts
和JS
store.war\include\js\script.js
store.war\include\js\function.js
store.war\include\fonts\font.woff
store.war\include\fonts\font.woff2
store.war\include\css\css-output\ie.css
store.war\include\css\css-output\interactive\large.css
store.war\include\css\css-output\interactive\small.css
我的上下文根被指定为/store
。
在正常操作中,我可以访问网站中的script.js,如下所示:
http://www.acme.com/store/include/js/script.js
然后,此请求将通过我的应用程序请求管道传递。我想要实现的是简单地将/include/
文件夹的内容作为静态文档提供在.war
内,而不必通过整个请求管道(在我的案例中为ATG)。
我已将以下行添加到weblogic.xml
<virtual-directory-mapping>
<local-path>C:/weblogic/deploy/ACME.ear/store.war/include</local-path>
<url-pattern>/include/css/*</url-pattern>
<url-pattern>/include/fonts/*</url-pattern>
<url-pattern>/include/js/*</url-pattern>
<url-pattern>/include/lib/*</url-pattern>
</virtual-directory-mapping>
希望这样做,而不是通过整个管道传递请求,只需将其渲染为静态资源。
根据文档,在尝试从容器文档根目录渲染之前,它将首先尝试通过<virtual-directory-mapping>
进行渲染。
即使使用上述配置,/include/
文件夹中的静态内容仍由容器呈现,而不是通过Weblogic作为静态资源呈现。我有以下问题:
<url-pattern>
是否应包含context-root
? <local-path>
是否应包含context-root
? (我尝试了包括和排除但无效的各种组合)<url-pattern>
访问文件夹和子文件夹中的文件。我是否需要指定每个子文件夹?答案 0 :(得分:0)
上面的<virtual-mapping-directory>
配置不正确。因为它不正确,Weblogic将尝试在该文件夹中找到内容,如果不这样做,请恢复为从默认doc-root
提供内容。正确的配置是:
<virtual-directory-mapping>
<local-path>C:/weblogic/deploy/ACME.ear/store.war</local-path>
<url-pattern>/include/*</url-pattern>
<url-pattern>*.js</url-pattern>
<url-pattern>*.css</url-pattern>
<url-pattern>*.woff</url-pattern>
</virtual-directory-mapping>
重要的是要注意必须存在一个名为:
的文件夹C:/weblogic/deploy/ACME.ear/store.war/include
以便将其作为虚拟目录找到。
如果它能提供任何实际的运行时间好处,那么它仍然没有成功。