2017-09-06 34 views
0

如何才能从WebLogic Server上的Angular应用程序访问Webjars?在Weblogic服务器上无法访问Webjars

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

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

UPDATE:

我从部署添加stack tracewebjars-locator-weblogic。问题是如果我需要同时使用:webjars-locatorwebjars-locator-weblogic或只有weblogic版本? 我试过两种情况,在两种情况下,我都得到相同的错误。我试图通过添加WebConfig类来完成here甚至在Main类中添加代码,就像在同一链接下完成的那样,但是在主题Enhanced support for RequireJS处尝试解决此问题。不幸的是,它不适合我。我仍然无法访问webjars。

+0

为什么选择xml文件?看起来像部署到tomcat的应用程序启动的不同,然后是weblogic上的应用程序导致不同的配置。 –

+0

@ M.Deinum原始应用程序在Tomcat上工作。为了将其部署到Weblogic上,我提供了一些更改。为了访问资源,我已经将'servlet'和'servlet-mapping'添加到'web.xml'中,由于某些原因,没有它就无法工作。所以它也需要'servlet.xml'文件。最初它只是''的空文件,但是我发现这个'',所以我认为它应该被添加到那里以使其工作。问题是我应该怎么做才能在Weblogic上正确运行?我不关心Tomcat ... – Lui

+0

你不应该需要/具有Spring Boot的'xml'文件...所以我会恢复这些更改,并按照这里的春季启动参考指南中所述https:// docs.spring.io/spring-boot/docs/current/reference/htmlsingle/#howto-weblogic –

回答

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>

在一侧没有,我使用“标准”弹簧,而不是引导。不应该有任何区别。 Webjars包装在战争中(在WEB-INF \ lib中),而其余的依赖项(spring,aspectj,其他应用程序模块等)则被包装在耳塞包内。 构建归结为含有耳包:

  • 所有项目的依赖关系(在/ lib文件夹)
  • 战争文件只包含在(WEB-INF \ lib中)
的webjars web应用程序

我无法与weblogic一起工作的是版本不可知的定位器。已经尝试使用标准的webjars-locator和webjars-locator-weblogic,但没有运气。我错误地将webjar依赖关系放在耳朵模块而不是战争模块上,但是我得到了同样的错误(URI不分层次)。 将他们放入战争后,我发现weblogic对于servlet映射相当“敏感”。我有标准的servlet映射模式(像我通常在其他服务器上那样),并且与其他映射(包括webjars)有所不同。最后,我不得不指定一个url模式,然后由Spring单独处理。