Tôi có một EJB (PersonManager) trong modul ứng dụng doanh nghiệp, trong đó tiêm một EJB (Person):JSF managed-bean EJB tiêm
@Stateful
public class PersonManager implements PersonManagerLocal {
@EJB
private PersonLocal person;
@Override
public void setPersonName(String name) {
person.setName(name);
}
@Override
public String getPersonName() {
return person.getName();
}
}
Tôi muốn sử dụng PersonManager EJB trong một ứng dụng web JSF. Tôi định nghĩa nó trong faces-config.xml:
<managed-bean>
<managed-bean-name>personManager</managed-bean-name>
<managed-bean-class>ejb.PersonManager</managed-bean-class>
<managed-bean-scope>session</managed-bean-scope>
</managed-bean>
Vấn đề ở chỗ, việc tiêm PersonLocal EJB không xảy ra. Thuộc tính person luôn là NULL. Tôi đã làm gì sai?
Nhưng nếu tôi tiêm PersonManager trong một bean JSF được quản lý như thế này:
@ManagedBean
@RequestScoped
public class Index {
@EJB
private PersonManagerLocal personManager;
....
IT WORKS. Tôi cần kịch bản đầu tiên, vui lòng giúp tôi :-D
Tại sao bạn không sử dụng @EJB chú thích thay vì bằng tay khai báo nó trong faces-config.xml ?? Nó giống như cố gắng để trở lại quá khứ khi chú thích không được phát minh: P –
Bạn đúng :-D nó chỉ là lý thuyết, tôi muốn biết câu trả lời. – Forty
@Forty Vậy tại sao nó không hoạt động? Câu trả lời không rõ ràng với tôi. –