2013-10-21 92 views
0

首先是我的項目結構的一點輸入。NetBeans中的Java EE 6項目部署錯誤7.3.1

這是一個網上商店的項目,由三個模塊組成:

  • EJB
  • 遠程桌面客戶端
  • Web客戶端

總共有六個的NetBeans項目涉及:

  1. 主要的EE項目其中包含所有模塊。
  2. EJB模塊項目
  3. Web客戶端模塊項目
  4. 遠程客戶端模塊項目
  5. 類庫爲EJB遠程接口項目
  6. 包含的實體類的「簡化」形式的類
  7. 類庫項目,它們最初位於EJB模塊項目中。我決定使用這些類而不是原始實體類的原因是因爲我在分發到遠程客戶端應用程序時序列化/反序列化時遇到了一些問題。

現在,我將介紹如何在這些項目相互連接(通過上面指的他們的名單):

  • EJB項目包含#5,#參考6
  • Web客戶端項目包含參考#2
  • 遠程客戶項目包含對#2的引用,#5和#6
  • EJB遠程接口項目包含參考至#6

所以基本上,所有項目(除了Web模塊)都包含對包含簡化或「封裝」形式的實體類的項目的引用。

當我嘗試將此EE應用程序(主EE項目)部署到GlassFish(v 4.0)時,我不斷收到項目#5中未顯示項目#6中定義的類的錯誤。項目#6中定義了這一個「產品」類,該項目用於項目#5的遠程接口。 Durring代碼寫入,我沒有得到關於這個問題的任何錯誤,因爲參考文件被正確放置。此外,主EE項目的清理和構建成功完成,但是在部署的時候,我仍然不斷收到同樣的錯誤:

package musicshop.entity.encapsulated does not exist 
import musicshop.entity.encapsulated.Product; 

注:musicshop.entity.encapsulated是從包含「產品」類項目#6包。另外,這個import musicshop.entity.encapsulated.Product;是來自項目#5的那個遠程接口的線路。

此外,重要的是要提到事實,整個事情工作正常,直到我從GlassFish取消部署應用程序並嘗試重新部署它。

回答

0

我很高興地說,我已經設法找到解決這個問題的辦法。這不太好,但它會起到這個作用,直到我找到另一種方式。

我發現的是,GlassFish上最多隻能部署一個類庫項目。我曾經只有一個這樣的項目,那個持有EJB遠程接口的項目。但是當我創建了另一個類庫項目來保存這些簡化版本的實體類時(爲了將所有這些類保存在一個地方並將它們導入到任何需要使用它們的地方,我這樣做了。這樣,如果我希望做一些編輯,我只能做一次)。

所以,我所要做的就是消除額外的類庫項目,並在需要使用它們的地方簡單地複製這些類。現在,我將它們分散到其他項目中,這些項目現在很難維護它們,但它確實解決了在服務器上部署的問題。

這樣做後,我記得我已經嘗試過一次做類似的事情 - 創建額外的類庫項目,該項目將包含將在需要使用的任何地方導入的東西,並且在GlassFish上部署應用程序時發生同樣的錯誤。當然,我用和這個一樣的方式解決了這個問題。所以我還想知道爲什麼不能部署多個類庫項目?有任何想法嗎?