2013-03-13 62 views
4

我在開發我的WebSphere 7應用程序時遇到問題。以下是安裝程序。我有一個基於maven的項目,包含RAD 7.5.5.2開發的多個模塊。WebSphere + RAD + Taglib

其中一個模塊是一個使用JSP並依賴於taglib的普通Web應用程序(war)。

Taglib本身就是另一個模塊 - 只有兩個文件的純java項目,META-INF/tags下的taglib描述符和標記文件。

當我構建taglib jar並手動將其複製到Web應用程序的WEB-INF/lib中時,該標記將被正確拾取並呈現在頁面上。

當我通過RAD部署項目 - taglib沒有拿起。錯誤說:

``` 
com.ibm.ws.jsp.JspCoreException: JSPG0047E: Unable to locate tag library for uri http://juriy.com/myproject/jsp/my-taglib 
``` 

打包爲JAR並添加到WEB-INF/lib中的相同標記庫完美工作。

當我打開WebSphere管理控制檯時,發現taglib項目被WebSphere識別。但是它不是打包成JAR,而是項目的路徑被添加到webapp類路徑中。在

``` 
Troublehooting -> Class Loader Viewer -> Module - com.ibm.ws.classloader.CompoundClassLoader 
``` 

我看到我的taglib的條目:

``` 
file:/D:/Data/MyProject/UIComponents/target/classes 
``` 

在它看起來像WS不小心打包項目作爲在開發週期JAR,然後它不拿起換句話說作爲taglib。

有沒有辦法告訴RAD(或WebSphere)「請將此項目打包爲JAR,然後再將其添加到類路徑中」?任何替代方式來使這個設置工作也表示讚賞。我無法在開發過程中一直手動複製jar - 我們都希望事情能夠自動工作。免責聲明:我不是一位WebSphere專家(僅與這位野獸合作一週),我可能錯過了一些明顯的設置。請提出任何可能解決此問題的建議。

+0

您可以一次創建jar並將其作爲共享庫添加到websphere。由於您無需每次都部署它,現在可以訪問所有應用程序。 – 2013-03-16 19:49:33

+0

感謝您的建議Gregory。我會用它作爲最後的手段 - 如果可能的話,想使它成爲「正確」的方式。 – Juriy 2013-03-17 12:22:23

+0

您是否將您的項目打包在RAD內的EAR項目中? – 2013-03-20 17:00:58

回答

0

就我所知RAD是在eclipse平臺上製作的。我知道用maven你可以創建構建jar文件並放入本地存儲庫的工件。其他模塊可以通過M2_REPO變量引用該罐子。然後你堅持使用maven,並且必須使用maven插件來進行eclipse,這有助於將maven集成到eclipse中。但考慮用project builder and ant配置您的項目的選項。然後,您可以在構建之前輕鬆運行ant目標,以在部署之前製作瓶子。該技術不僅在eclipse IDE中使用,而且在其他IDE中使用。在項目構建之前或之後運行ant目標是非常寶貴的功能。

0

將您的taglib打包爲maven jar並將其安裝到本地.m2存儲庫。然後在您的主項目中引用pom中的依賴項。它將被拉進包裝。如果它是爲了本地開發而重新啓動,那可能是因爲打開了工作區分辨率。

此外,在基於Maven的項目中將JAR添加到WEB-INF/lib中並不是最佳實踐,因爲您已經規避了maven的主要目的,即控制構建項目所需的依賴關係。