Можете ли вы использовать <virtual-directory-mapping>
для ссылки на статический контент внутри развернутого EAR и принесет ли он какую-либо выгоду?Weblogic <virtual-directory-mapping> внутри развернутого EAR
Отказ от ответственности: Идеально статические ресурсы, такие как шрифты, javascript и css, должны обслуживаться веб-сервером, а не контейнером приложения.
Существует ряд статей по SO относительно <virtual-directory-mapping>
в Weblogic. Он также хорошо документирован 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. У меня есть следующие вопросы:
- Действительно ли это действительный подход? Несмотря на то, что статические активы существуют в .war, могу ли я отобразить его как «внешние» статические активы, используя приведенную выше конфигурацию?
- Должно ли
<url-pattern>
включитьcontext-root
? Должны ли<local-path>
включатьcontext-root
? (Я пробовал различные комбинации включения и исключения, но безрезультатно) - Как получить доступ к файлам в папках и подпапках с помощью
<url-pattern>
. Нужно ли указывать каждую подпапку?
Почему вы хотите сделать это выше и не обслуживать их с веб-сервера, как вы указываете? – bated
Вообще-то, потому что CSS, JS, Fonts и некоторые значки (например, favicon) находятся под контролем источника, а те активы, которые обслуживаются Apache, - нет. Я в процессе создания отдельного .war для активов, отличных от JSP (например, CRS в последнее время). Здесь я пытаюсь настроить web.xml, чтобы просто передать запрос в Weblogic и обратно, но по какой-то нечетной причине все еще обрабатывается в ATG. Вероятно, некорректная настройка web.xml с моей стороны. Если бы я работал в инфраструктуре Unix, я бы легко сделал некоторые символические ссылки на всех серверах, и все были бы счастливы. Приоритеты немного изменились, и в ближайшее время мы снова посмотрим на это. – radimpe
Что такое '' filter-mapping> '? Вероятно, вам нужно изменить его для пути к вашим изображениям. – bated