Đây là tình huống.WELD-001408 Các phụ thuộc không hài lòng khi tiêm EJB thực hiện giao diện
Tôi đã nhận được các giao diện sau:
public interface Parent { }
public interface ChildOne extends Parent { }
public interface ChildTwo extends Parent { }
và 2 EJB:
@Stateless
public class FirstBean implements ChildOne { }
@Stateless
public class SecondBean implements ChildTwo { }
Và cũng này CDI Bean:
@Named
@SessionScoped
public class TestController implements Serializable {
@Inject
private FirstBean firstBean;
@Inject
private SecondBean secondBean;
}
Trong khi cố gắng để triển khai này trên Glassfish 3.1 Tôi nhận được ngoại lệ sau:
Exception while loading the app : WELD-001408 Unsatisfied dependencies for type [FirstBean]
with qualifiers [@Default] at injection point [[field] @Inject private com.test.controllers.TestController.firstBean]
org.jboss.weld.exceptions.DeploymentException: WELD-001408 Unsatisfied dependencies for type [FirstBean]
with qualifiers [@Default] at injection point [[field] @Inject private com.test.controllers.TestController.firstBean]
at org.jboss.weld.bootstrap.Validator.validateInjectionPoint(Validator.java:305)
Khi cả hai EJB thực hiện giao diện Parent
, ngoại lệ là như nhau.
Ngoài ra, tôi đã thử thêm vòng loại, nhưng điều đó không thay đổi bất cứ điều gì.
Cảm ơn một tấn! Lời giải thích thực sự tốt! Và tôi đã va vào ngoại lệ đó 'Không thể chuyển đổi ejbRef cho ejb ...', tôi không biết đó là vấn đề đã biết. – jFrenetic
Tôi đã kiểm tra lại một lần nữa. Tôi đã cố gắng tiêm các EJB đó bằng tham chiếu giao diện như bạn đã đề xuất.Và tôi vẫn nhận được điều này "Không phụ thuộc vào sự phụ thuộc ..." ngoại lệ trong quá trình triển khai. Tôi thậm chí còn chú thích các giao diện với @Local. Nó vẫn không hoạt động. – jFrenetic
Tôi đã thử nó ngày hôm qua và nó làm việc cho tôi, hơn nữa nó làm cho khá một chút ý nghĩa. Dù sao, tôi sẽ thử lại khi tôi trở về nhà. –