【发布时间】:2017-09-06 09:07:02
【问题描述】:
我应该怎么做才能从 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-boot 和 webjars-locator 处于编译级别,其余的类似于 angularjs 在运行时级别。
我错过了什么?在这种情况下我应该怎么做才能让它发挥作用?
更新:
我正在使用webjars-locator-weblogic 从部署中添加stack trace。问题是我是否需要同时输入:webjars-locator 和 webjars-locator-weblogic 还是只需要 weblogic 版本?
我尝试了这两种情况,在这两种情况下我都遇到了同样的错误。我试图通过添加WebConfig 类来解决这个问题,就像它完成的here 一样,甚至在Main 类中添加代码,就像它在同一个链接下但在主题Enhanced support for RequireJS 下完成的一样。不幸的是,它对我不起作用。我仍然无法访问 webjars。
【问题讨论】:
-
为什么是 xml 文件?看起来部署到 tomcat 的应用程序的启动方式与 weblogic 上的应用程序不同,导致配置不同。
-
@M.Deinum 原始应用程序适用于 Tomcat。为了在 Weblogic 上部署它,我提供了一些更改。我已将
servlet和servlet-mapping添加到web.xml以访问资源,由于某些原因,没有它就无法工作。所以它还需要servlet.xml文件。最初它只是带有<beans>的空文件,但我发现了这个<mvc:resouces>,所以我认为应该将它添加到那里以使其工作。问题是我应该怎么做才能在 Weblogic 上正确运行它?我不在乎 Tomcat... -
您不应该需要/拥有带有 Spring Boot 的
xml文件...所以我将还原这些更改并按照此处的 Spring Boot 参考指南中所述进行操作 docs.spring.io/spring-boot/docs/current/reference/htmlsingle/… -
好吧,但它并没有改变任何东西......仍然是 webjars 无法访问的相同问题。
-
你添加了
webjars-locator-weblogic依赖吗?
标签: angularjs spring-boot gradle weblogic12c webjars