angularjs - 在 Weblogic Server 上无法访问 Webjar

标签 angularjs spring-boot gradle weblogic12c webjars

我应该怎么做才能从 Weblogic Server 上的 Angular 应用程序访问 Webjar?

我收到了在 Tomcat 上运行的基本临时项目,但在 Weblogic 上它无法正常工作。经过一些修改,我能够部署应用程序,但我无法正常运行它。 webjars 仍然不可见。更重要的是,我还发现对于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/"/>

但没有成功。

所有的 webjars 都是由 Gradle 添加的作为依赖。 spring-bootwebjars-locator处于编译级别,其余为 angularjs在运行时级别。

我错过了什么?在这种情况下我应该怎么做才能使它工作?

更新:

我正在添加 stack trace来自 webjars-locator-weblogic 的部署.问题是我是否需要同时输入:webjars-locatorwebjars-locator-weblogic还是只有 weblogic 版本?
我尝试了这两种情况,在这两种情况下我都遇到了同样的错误。我试图通过添加 WebConfig 来解决这个问题像它一样完成的类(class)here甚至在 Main 中添加代码就像它在同一个链接下完成的类(class),但在主题 Enhanced support for RequireJS .不幸的是,它对我不起作用。我仍然无法访问 webjars。

最佳答案

不知道你是否已经让它工作了,但对我来说 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>
另一方面,我使用的是“标准” Spring ,而不是引导。不过应该没什么区别。 Webjar 被打包在 war 中(在 WEB-INF\lib 中),而其余的依赖项(spring、aspectj、其他应用程序模块等)被打包在 ear 包中。
构建归结为一个包含:
  • 所有项目依赖项(在/lib 文件夹中)
  • war 文件仅包含 webapp 和 (WEB-INF\lib)
  • 中的 webjars

    我无法使用 weblogic 的是与版本无关的定位器。尝试使用标准的 webjars-locator 和 webjars-locator-weblogic 都没有运气。

    [编辑]
    附带说明一下,当我错误地将 webjar 依赖项放在 ear 模块而不是 war 模块上时,我确实遇到了同样的错误(URI 不是分层的)。
    在将它们置于 war 中之后,我发现 weblogic 对 servlet 映射相当“敏感”。我有标准的servlet映射模式到root(就像我通常在其他服务器上一样),这在某种程度上弄乱了剩余的映射(包括webjars)。最后,我必须指定一个 url 模式,然后由 Spring 单独处理。

    关于angularjs - 在 Weblogic Server 上无法访问 Webjar,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46071076/

    相关文章:

    spring-boot - @Refreshscope 与数据源配置

    java - 为什么要在模型上实现 Serializable?

    java - isValid 抛出异常 - hibernate validator

    gradle - 子build.gradle在afterEvaluate事件中不评估

    javascript - 使用 AngularJS 和 ng-storage 进行 session 存储

    angularjs - 当我使用 ng-map 和 angularjs 缩小时标记会移动

    angularjs - 如何创建只读 ng-repeat?

    angularjs - 什么时候不在 AngularJs 中使用 ng-cloak?

    android - 如何将maven.fabric.io/public添加到artifactory/nexus并下载passthrough io.fabric.tools:gradle?

    java - 使用真实设备在Flutter中调试第一个应用程序时出错