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を実行しています。
ほとんどの場合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アーカイブです。