web-dev-qa-db-ja.com

WELD-000072非アクティブ化スコープを宣言するマネージドBeanは非アクティブ化可能である必要があります

Java Webフォームで簡単なプログラムを作成しましたが、次のエラーが表示されます。

WELD-000072非アクティブ化スコープを宣言するマネージドBeanは非アクティブ化可能でなければなりません。 Bean:マネージドBean [クラスBeanPakage.DemoBeans]修飾子付き[@Any@Default@Named]

誰もこのエラーの原因を教えてもらえますか?

import javax.enterprise.context.SessionScoped;
import javax.inject.Named;


@Named("DemoBeans")
@SessionScoped
public class DemoBeans {

    private String name;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }
}
76
christina

Serializableインターフェースを実装することにより、Beanパッシベーションを有効にできます。

public class DemoBean implements Serializable { ... }

パッシベーション対応にはさらに多くの要件があることに注意してください。詳細については、溶接のドキュメントを参照してください。

150
Matt Handy

CDI Beanがシリアル化可能であっても、エラーが残る場合があります。

WELD-000072 Managed bean declaring a passivating scope must be passivation capable

クラスの例:

@Named
@ConversationScoped
public class TransactionMatchController implements Serializable {
    ...
}

すべての@ Interceptorsも同様にseializableであることを確認してください。

@Interceptor
@Transactional
public class TransactionInterceptor implements Serializable {
    ...
}
19
Tim

シリアル化可能でなければなりません。

この回答をご覧ください。

https://community.jboss.org/thread/179828

ベスト、アンダース

6
anders.norgaard

DemoBeansを作成シリアル化

@Named("DemoBeans")
@SessionScoped
public class DemoBeans  implements Serializable
{

    private String name;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

}
5
Mohd Kose Avase

アノテーションを使用して、Beanのパッシベーション動作をアクティブにすることもできます。

@Stateful(passivationCapable = true)

この場合、Serializableインターフェイスを実装する必要はありません。

よろしく。ホルヘ

2
Jorge Torres

インポートを確認する

(NetBeansが他のライブラリの他のライブラリを使用する場合がありました)

例。 import javax.faces.view.ViewScoped; import javax.faces.bean.ViewScoped;で変更します。

1
Fabian Pisani

原因:org.jboss.weld.exceptions.DeploymentException:WELD-000072:非アクティブ化スコープを宣言するBeanは非アクティブ化可能でなければなりません。 Bean:マネージドBean [class com.marcos.controller.PersonaBean]と修飾子[@Default @Named @Any]


私はそれを解決しました、明らかにCDI、私は豆を認識しませんでした、私はそれをより明示的にしました

@Named
@ViewScoped
public class PersonaBean  implements Serializable {
@Inject
private IPersonaService service;
public void registrar() {

    try {
        service.registrar(null);

    }catch (Exception e) {
        e.printStackTrace();
    }
  }
}

私のためのソリューション:

@Named ("PersonaBean")
@ViewScoped
public class PersonaBean  implements Serializable {
@Inject
private IPersonaService service;
public void registrar() {

    try {
        service.registrar(null);

    }catch (Exception e) {
        e.printStackTrace();
    }
  }
}