2012-01-24 280 views
18

我剛剛從7.0升級到NetBeans 7.1。在打開一個JSF託管bean時,它「有用地」告訴我它找不到我的beans.xml文件,所以我喜歡它爲我創建的。我知道我在WEB-INF下有一個beans.xml文件,但無論如何我都會說是的,看看發生了什麼。 META-INF下爲我創建了一個新的beans.xml。beans.xml應該放在哪裏?

思考我犯了一個錯誤我在WEB-INF下刪除了該文件,只是讓我的應用程序在啓動時失敗。將beans.xml放回到WEB-INF中解決了這個問題。這個頁面似乎認爲這兩個位置都是有效的:http://seamframework.org/Documentation/WhatIsBeansxmlAndWhyDoINeedIt

所以,問題是哪個文件夾beans.xml應該存在於WEB-INF或META-INF中?

我運行的GlassFish 3.1.1和Java 7

回答

35

擁有的beans.xml放置在WEB-INF目錄是在你的情況很好,因爲很有可能豆WEB-INF類下。

beans.xml的正確位置取決於歸檔的類型和bean類的位置。

在說明書中是這樣解釋如下:

啓用豆的豆類必須在豆檔案進行部署。

  • 庫罐子,罐子EJB,應用程序客戶端JAR或RAR壓縮包是一個bean存檔,如果它有一個名爲beans.xml中的META-INF目錄下的文件。
  • 如果在war的WEB-INF目錄中有一個名爲beans.xml的文件,war的WEB-INF/classes目錄就是一個bean存檔。
  • 如果在META-INF目錄中有一個名爲beans.xml的文件,JVM類路徑中的一個目錄就是一個bean歸檔文件。
+0

優秀的答案,謝謝,教了我一些新的東西。我懷疑NetBeans在這種情況下是錯誤的。 – wobblycogs

+0

這個答案幫助我理解了異常'javax.enterprise.inject.UnsatisfiedResolutionException:Api類型...'異常我在一個servlet中使用@Inject。我將beans.xml放置在META-INF中而不是WEB-INF中。 – p1brunne