2017-09-06 36 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單獨處理。