5

最近、単純なJava EE 6プロジェクトを に移行しましたJava EE 7。詳細には、これは、依存関係を からjavax:javaee-api:6.0に変更し、ではなく にjavax:javaee-api:7.0デプロイしたことを意味します。Glassfish 4Glassfish 3

その後、CDI注釈付きの依存関係を注入できなかったため、アプリケーションは機能しなくなりました。

4

3 に答える 3

6

deployment descriptor問題は、依存関係を見つけるための およびデフォルトの動作が で変更されたことを知らなかったことですJava EE 7

新しいdeployment descriptor (beans.xml)ものは次のようになります。

<?xml version="1.0" encoding="UTF-8"?>
<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.1" bean-discovery-mode="all" >
</beans>

重要なのは、がすべての依存関係を見つけるbean-discovery-mode方法を構成する属性です。CDIに設定するとbean-discovery-mode="all"、 のようにCDI動作しJava EE 6ます。

于 2013-07-09T15:58:59.927 に答える
2

beans.xml ファイルを削除して Glassfish 4 でインジェクションを機能させるには、スコープのパッケージも変更する必要があります。

javax.faces.bean.ApplicationScoped -> javax.enterprise.context.ApplicationScoped
javax.faces.bean.RequestScoped -> javax.enterprise.context.RequestScoped
javax.faces.bean.SessionScoped -> javax.enterprise.context.SessionScoped
javax.faces.bean.ViewScoped -> javax.faces.view.ViewScoped
于 2013-10-31T09:59:25.877 に答える