Giả sử tôi có một EJB xác định hai quan điểm:Tìm hiểu những gì nhìn EJB được sử dụng
- doanh nghiệp địa phương,
- kinh doanh từ xa.
Cả hai giao diện chia sẻ chữ ký phương pháp tương tự, vì vậy nó giống như:
public interface MyBusinessCommon {
void myMethod(Object o);
}
@Local
public interface MyBusinessLocal extends MyBusinessCommon { }
@Remote
public interface MyBusinessRemote extends MyBusinessCommon { }
@Stateless
public class MyBusinessBean implements MyBusinessLocal, MyBusinessRemote {
public void myMethod(Object o) {
// ...
}
}
Có cách nào để tìm ra những gì nhìn EJB được gọi từ bên trong EJB tự (hoặc đánh chặn của nó?)
Giả sử tôi muốn thực hiện các quy trình ủy quyền khác nhau tùy thuộc vào chế độ xem được sử dụng. Điều khiển từ xa nên hạn chế hơn và không nên sử dụng cục bộ.
Tôi có thể gọi SessionContext#getInvokedBusinessInterface()
nhưng điều này chỉ cho tôi thông tin về đối tượng lớp - không phải về ngữ nghĩa EJB của nó. Sử dụng sự phản chiếu để kiểm tra sự hiện diện của chú thích trên giao diện hoặc đậu là không đủ (những gì về khung nhìn được xác định trong ejb-jar.xml
?)
Tôi nghi ngờ có thể sử dụng đặc tả EJB thẳng.
Nếu không, bạn có thể nhận thông tin này từ người dùng máy chủ ứng dụng không? (chúng ta hãy xem xét chỉ JBoss AS 7.x, Glassfish 3.x và TomEE 1.5.1).
Cảm giác ruột của tôi nói điều này không thể thực hiện được theo cách di động. Nếu có, tôi đã bỏ lỡ một cái gì đó quá. Một thủ thuật có thể là sử dụng quy ước đặt tên giao diện. Bạn đã làm điều đó; 'MyBusinessLocal' kết thúc bằng' Local' etc. Một chút giòn, nhưng các quy ước làm việc cho ví dụ: JavaBeans. –
Cảm ơn Arjan. Tôi đồng ý - một số quy ước có thể là một giải pháp ở đây. Tôi đoán việc nhận dạng khung nhìn EJB có thể chỉ có thể sử dụng nội bộ máy chủ ... Nếu có thể! –
Bạn được chào đón. Nếu bạn cảm thấy mạnh mẽ về EJB cần khả năng này, thì tại sao không thêm một yêu cầu tính năng cho nó tại http://java.net/jira/browse/EJB_SPEC? –