Веб-файлы недоступны на Weblogic Server

Что мне делать, чтобы получить доступ к Webjars из приложения Angular на Weblogic Server?

Я получил базовый временный проект, который работает на Tomcat, но на Weblogic он работает неправильно. После нескольких модификаций мне удалось развернуть приложение, но я не могу запустить его должным образом. Webjar по-прежнему не видны. Более того, я также обнаружил, что для Weblogic 12C я должен использовать эту зависимость в Gradle:

compile 'org.webjars:webjars-locator-weblogic:0.9'

но после этого я не могу развернуть приложение, потому что получаю сообщение об ошибке «URI не является иерархическим». Без этой зависимости я могу развернуть приложение и увидеть index.html, но оно указывает на другой файл js, например:

<script data-main="js/configImport" src="webjars/requirejs/require.min.js"></script>

который содержит что-то вроде этого:

require.config({

    map: {
        '*': {
            'css': 'webjars/require-css/css'
        }
    },

    paths: {
        'angular': 'webjars/angularjs/angular.min',
        'myApp': 'js/app',
        'cssCore': 'js/cssCore'
    },

    shim: {
        'angular': {exports: 'angular'},
    },

    baseUrl: '.'
});

require(['angular', 'myApp', 'cssCore', 'js/controllers/MainCtrl'], function (angular) {
    angular.bootstrap(document, ['myApp']);
});

Я также пытался добавить эту строку в файл servlet.xml:

<mvc:resources mapping="/webjars/**" location="classpath:/META-INF/resources/webjars/"/>

но безуспешно.

Все веб-файлы добавляются Gradle в качестве зависимостей. spring-boot и webjars-locator находятся на уровне компиляции, остальные, как angularjs, на уровне выполнения.

Что мне не хватает? Что мне делать в этом случае, чтобы все заработало?

ОБНОВЛЕНИЕ:

Я добавляю трассировку стека из развертывания с webjars-locator-weblogic. Вопрос в том, нужно ли ставить обе: webjars-locator и webjars-locator-weblogic или только версию weblogic? Я пробовал с обоими, и в обоих случаях я получаю ту же ошибку. Я попытался решить эту проблему, добавив класс WebConfig, как это сделано здесь, и даже добавив код в Main класс вроде по той же ссылке, но в теме Enhanced support for RequireJS. К сожалению, это не сработало для меня. Я все еще не могу получить доступ к webjars.


person Lui    schedule 06.09.2017    source источник
comment
Почему xml-файл? Похоже, что приложение, развернутое на tomcat, запускается иначе, чем на weblogic, что приводит к другим конфигурациям.   -  person M. Deinum    schedule 06.09.2017
comment
Оригинальное приложение @M.Deinum работает на Tomcat. Я внес несколько изменений, чтобы развернуть его на Weblogic. Я добавил servlet и servlet-mapping к web.xml для доступа к ресурсам, которые по некоторым причинам не работали без него. Так что для этого также требовался файл servlet.xml. Первоначально это был просто пустой файл с <beans>, но я нашел этот <mvc:resouces> и подумал, что его нужно добавить туда, чтобы он работал. Вопрос в том, что я должен сделать, чтобы правильно запустить это на Weblogic? Меня не волнует Томкэт...   -  person Lui    schedule 06.09.2017
comment
Вам не нужен/не нужен файл xml с Spring Boot... Поэтому я бы отменил эти изменения и сделал, как указано в справочном руководстве по весенней загрузке здесь docs.spring.io/spring-boot/docs/current/reference/htmlsingle/   -  person M. Deinum    schedule 06.09.2017
comment
Хорошо, но это ничего не меняет... Все те же проблемы, что веб-файлы недоступны.   -  person Lui    schedule 06.09.2017
comment
Вы добавили зависимость webjars-locator-weblogic?   -  person M. Deinum    schedule 06.09.2017
comment
Вы прочитали весь мой пост...? Вот эта часть из сообщения: Более того, я также обнаружил, что для Weblogic 12C я должен использовать эту зависимость в Gradle: compile 'org.webjars:webjars-locator-weblogic:0.9', но после этого я не могу развернуть приложение, потому что получаю сообщение об ошибке "URI is not hierarchical".   -  person Lui    schedule 06.09.2017
comment
Да, я читал это и все еще задавался вопросом, добавили ли вы это... Для Weblogic, который необходим для разрешения ресурсов, иначе он не будет работать (из-за различий в загрузке ресурсов в WebLogic).   -  person M. Deinum    schedule 06.09.2017
comment
Я добавил, но после этого я не могу развернуть приложение, потому что получаю сообщение об ошибке, указанное в сообщении/комментарии.... Так что эта зависимость не очень полезна...   -  person Lui    schedule 06.09.2017
comment
Вы должны где-то использовать URL-адрес, который не удовлетворяет распознаватель веб-логики. Никогда не использовал эту вещь, но если бы это было что-то красиво написанное, это должно было указать путь, на котором она терпит неудачу.   -  person M. Deinum    schedule 06.09.2017
comment
У меня нет полных URL-адресов или что-то в этом роде... В макете Java есть только сопоставления запросов и api.json с частями URL-адресов, которые, кажется, указывают или что-то на эти сопоставления запросов...   -  person Lui    schedule 06.09.2017
comment
Вы получаете только ошибку или получаете трассировку стека?   -  person M. Deinum    schedule 06.09.2017
comment
Взгляните на мой обновленный вопрос.   -  person Lui    schedule 06.09.2017


Ответы (1)


Не знаю, работает ли он у вас уже, но у меня с weblogic 12.2.1.3 работает следующее:

<mvc:resources mapping="/webjars/**" location="classpath:META-INF/resources/webjars/"/>

Все js/css затем разрешаются правильно. Пример: <script type="text/javascript" src="/app-name/webjars/angular/1.6.6/angular.js"></script>

С другой стороны, я использую «стандартную» пружину, а не пыльник. Хотя не должно иметь никакого значения. Веб-файлы упакованы внутри war (в WEB-INF\lib), а остальные зависимости (spring, aspectj, другие модули приложения и т. д.) упакованы внутри пакета ear. Сборка сводится к ушному пакету, содержащему:

  • все зависимости проекта (в папке /lib)
  • war, содержащий только веб-приложение с веб-файлами в (WEB-INF\lib)

Чего я не могу заставить работать с weblogic, так это независимого от версии локатора. Пробовали как со стандартным webjars-locator, так и с webjars-locator-weblogic, но безуспешно.

[EDIT] Кстати, я получил ту же ошибку, что и вы (URI не иерархический), когда по ошибке поместил зависимости webjar в модуль уха вместо военного. Поместив их в войну, я обнаружил, что weblogic довольно «чувствителен» к сопоставлениям сервлетов. У меня был стандартный шаблон сопоставления сервлета с корнем (как обычно на других серверах), и это каким-то образом мешало остальным сопоставлениям (включая веб-файлы). В конце концов мне пришлось указать шаблон URL-адреса, который должен обрабатываться только Spring.

person Sidpao    schedule 11.10.2017