web-dev-qa-db-ja.com

beans.xmlはどこに配置する必要がありますか?

7.0からNetBeans 7.1にアップグレードしたところです。 JSFマネージドBeanを開くと、「便利に」beans.xmlファイルが見つからなかったので、作成したいのですが。私はWEB-INFの下にbeans.xmlファイルがあることを知っていましたが、何が起こったかを確認するためにとにかく「はい」と答えました。新しいbeans.xmlがMETA-INFの下に作成されました。

間違えたと思って、WEB-INFの下のファイルを削除して、起動時にアプリケーションが失敗するようにしました。 beans.xmlをWEB-INFに戻すと、この問題が修正されました。このページは、両方の場所が有効であると考えているようです: http://seamframework.org/Documentation/WhatIsBeansxmlAndWhyDoINeedIt

では、問題は、beans.xmlがWEB-INFまたはMETA-INFのどちらに存在するかということです。

GlassFish 3.1.1とJava 7を実行しています。

25
wobblycogs

ほとんどの場合BeanはWEB-INFクラスの下にあるため、beans.xmlをWEB-INFディレクトリに配置しても問題ありません。

Beans.xmlの正しい場所は、アーカイブのタイプとBeanクラスの場所によって異なります。

仕様では、次のように説明されています。

有効なBeanのBeanクラスは、Beanアーカイブにデプロイする必要があります。

  • ライブラリjar、EJB jar、アプリケーションクライアントjar、またはrarアーカイブは、META-INFディレクトリにbeans.xmlという名前のファイルがある場合、Beanアーカイブです。
  • 戦争のWEB-INF/classesディレクトリは、戦争のWEB-INFディレクトリにbeans.xmlという名前のファイルがある場合、Beanアーカイブです。
  • META-INFディレクトリにbeans.xmlという名前のファイルがある場合、JVMクラスパスのディレクトリはBeanアーカイブです。
40
Mikko Maunu