web-dev-qa-db-ja.com

CDI-正しいbean.xml形式は何ですか?

Bean.xmlファイルの正しい形式と使用法について質問があります。私のプロジェクトでは、通常、このコンテンツをbean.xmlファイルに使用しました(explizit bean宣言は使用されていません)。

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://Java.Sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="
      http://Java.Sun.com/xml/ns/javaee 
      http://Java.Sun.com/xml/ns/javaee/beans_1_0.xsd">
</beans>

これはWildFly8および9でうまく機能します。しかし、GlassFish 4でデプロイメントの問題があります。質問: Glassfish 4、CDIの簡単な例はWELD-001408で失敗します。依存関係が満たされていません 別の形式について書きました。

<beans
   xmlns="http://xmlns.jcp.org/xml/ns/javaee"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee 
                  http://xmlns.jcp.org/xml/ns/javaee/beans_1_1.xsd"
          bean-discovery-mode="all">
</beans>

使用される異なる名前空間があります。そして、GlassFish4はそれを気にしているようです。

JEE7に使用される空のbean.xmlファイルの正しい形式は何ですか?

11
Ralph

正しい空のbeans.xml完全に空ファイル、本当に;-)

ただし、コンテンツを追加する場合は、ほとんどのXMLデプロイメント記述子の名前空間がJava EE 7)で更新されていることに注意してください。この 投稿の説明 詳細。 bean-discovery-modeが追加されました。

ところで:私が今使っているサンプルbeans.xmlは次のようになります:

<beans xmlns="http://xmlns.jcp.org/xml/ns/javaee"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/beans_1_1.xsd"
       version="1.2" bean-discovery-mode="annotated">

    <!-- some content -->
</beans>

version="1.2"属性の使用法に気付くかもしれません-それを1.1に自由に設定できます。これは、プロジェクトがCDI 1.2を使用していることを読者に思い出させるものです(実際には、CDI 1.1仕様のメンテナンスリリースです)。

16
G. Demecki