2009-10-13 8 views
7

Tôi có 2 phiên bean, OrderBean và InventoryBean được triển khai tại các máy chủ weblogic khác nhau.Có thể sử dụng chú thích @EJB để tiêm EJB qua các máy chủ khác nhau không?

OrderBean cần truy cập vào InventoryBean để kiểm tra xem nguồn cung có đủ không.

Hiện tại, tôi sử dụng JNDI tìm kiếm để xác định vị trí InventoryBean và nó hoạt động tốt.

Bây giờ tôi tự hỏi liệu có thể sử dụng @EJB để tiêm InventoryBean bằng cách cung cấp tên JNDI và URL trong xml hoặc ở một nơi khác.

Trả lời

3

Tôi nghĩ rằng không thể thông qua chú thích EJB, nhưng bạn có thể cấu hình foreign JNDI trên máy chủ WebLogic của mình và tham khảo EJB từ xa làm tên JNDI cục bộ. Mặc dù, tôi chưa bao giờ thử điều đó, nhưng tôi nghĩ nó sẽ hoạt động.

+0

Cảm ơn, thực sự tôi đã cố gắng mà trước và nó hoạt động tốt giống như bạn nói. – Eric

+0

Nhưng nó có thể được chú thích bởi một chú thích hay tôi phải tra cứu jndi địa phương bằng cách mã hóa nó? –

8

Cuối cùng tôi đã tìm ra cách để thực hiện việc này.

i. Cấu hình JNDI nước ngoài trên máy chủ weblogic và liên kết EJB từ xa với tên JNDI cục bộ.

Ví dụ:

 
Local JNDI: 
InventoryBean#com.pkg.InventoryBean (MAPPEDNAME#FULLNAME) 
link to 
Remote JNDI: 
ServiceBean#com.pkg.InventoryBean 

ii. Định cấu hình ejb-ref trong ejb-jar.xml

 
ejb-ref-name -> ejb/InventoryBean 
remote -> com.pkg.InventoryService 
mapped-name -> InventoryBean 

iii. Thêm chú thích @EJB vào OrderBean

 
@EJB(name = "ejb/InventoryBean") 
private InventoryService inventoryService; 
0

Nó rất cụ thể.

JBoss 7+ làm cho nó có thể nếu bạn:

  1. Xác định outbound-socket-binding, security-realmremote-outbound-connection trong file độc ​​lập (tất cả đề cập đến trường hợp JBoss từ xa).
  2. Thêm jboss-ejb-client.xml vào thư mục META-INF của ứng dụng đóng gói của bạn, với remoting-ejb-receiver cho mọi kết nối mà ứng dụng cần.
  3. Tiêm các EJB từ xa với @EJB(lookup = "<jndi_name>")

Hãy cho tôi biết nếu biết thêm chi tiết là cần thiết.

tặng một cái nhìn tại địa chỉ: