ওয়েল্ড -000072 পরিচালিত শিম একটি প্যাসিভিটিং স্কোপ ঘোষণা করে অবশ্যই প্যাসিভেশন সক্ষম হতে হবে


90

আমি জাভা ওয়েব ফর্মগুলিতে একটি সাধারণ প্রোগ্রাম লিখেছি তবে আমি নিম্নলিখিত ত্রুটিটি পেয়েছি:

ওয়েল্ড -000072 পরিচালিত শিম একটি প্যাসিভিটিং স্কোপ ঘোষণা করে অবশ্যই প্যাসিভেশন সক্ষম হতে হবে। শিম: 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;
    }
}

উত্তর:


175

সিরিয়ালাইজযোগ্য ইন্টারফেস প্রয়োগ করে আপনি আপনার শিমের প্যাসিভেশনকে সক্ষম করতে পারেন:

public class DemoBean implements Serializable { ... }

দ্রষ্টব্য যে প্যাসিভেশন সক্ষম হওয়ার জন্য আরও প্রয়োজনীয়তা রয়েছে। আরও তথ্যের জন্য ওয়েল্ড ডকুমেন্টেশন দেখুন।


21

ত্রুটিটি সিডিআই সিমটি সিরিয়ালাইজ করার পরেও থাকতে পারে:

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

উদাহরণ শ্রেণি:

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

নিশ্চিত করুন যে সমস্ত @ ইন্টেরসেপ্টরগুলিও সিলেলাইজেবল রয়েছে:

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

ধন্যবাদ, সিরিয়ালাইজযোগ্য @Interceptorsআমার জন্য সমস্যা ছিল!
অ্যান্টনি ও।



2

আপনি টীকা দিয়ে আপনার শিমের প্যাসিভেশন আচরণটি সক্রিয় করতে পারেন:

@ স্ট্যাটফুল (প্যাসিভেশন কেপবেল = সত্য)

এই ক্ষেত্রে আপনার সিরিয়ালাইজযোগ্য ইন্টারফেস প্রয়োগ করার দরকার নেই।

শ্রদ্ধা। জর্জি


1

আমদানি যাচাই করুন

(কিছু সময় নেটবিন অন্যদের লাইব্রেরি থেকে অন্যদের ব্যবহার করে)

উদাহরণ। আমদানি javax.faces.view.ViewScoped; আমদানি করে এটি পরিবর্তন করুন javax.faces.bean.ViewScoped;


প্রকৃতপক্ষে জেএসএফ ২.৩ javax.faces.bean.ViewScopedএর পক্ষে হ্রাস করেছে javax.faces.view.ViewScoped। এর অর্থ কি আমার সমস্ত দৃশ্য স্কোপ করা মটরশুটিগুলি নিয়ে গিয়ে সেগুলি সিরিয়ালযোগ্য করে তুলতে হবে? javax.faces.bean.ViewScopedজাভাডোক থেকে :@deprecated This has been replaced by {@code javax.faces.view.ViewScoped}. The functionality of this corresponding annotation is identical to this one, but it is implemented as a CDI custom scope.
ভাসিল

0

এর দ্বারা ঘটেছে: org.jboss.weld.exception.DeepEEEEcepception: ওয়েল্ড -000072: বিন একটি প্যাসিভিটিং স্কোপ ঘোষণাকারী অবশ্যই প্যাসিভেশন সক্ষম হতে হবে। বিন: পরিচালিত শিম [ক্লাস com.marcos.controller.PersonaBean] সঙ্গে বাছাইপর্ব [[ডেফল্ট @ নামড @ যে কোনও]]


আমি এটি সমাধান করেছি, দৃশ্যত সিডিআই, আমি শিমটি চিনতে পারি নি, আমি এটি আরও স্পষ্ট করে দিয়েছি

@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();
    }
  }
}
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.