Cuối cùng nhận được câu trả lời,
retrieving a value from message listener and print in Main
Trong lớp này, người dùng đã đưa ra một ví dụ:
@Stateful
public class AManagerBean implements ejb.AManagerRemote {
@Resource(mappedName = "jms/QueueConnectionFactory")
private ConnectionFactory queueConnectionFactory;
@Resource(mappedName = "jms/Queue")
private Queue queue;
private static int fineAmt;
......
static class AListener implements MessageListener{
public void onMessage(Message message){
.....
fineAmt = msg.getInt("fineAmt");
// I NEED FINEAMT TO SHOW IN MAIN CLASS
.....
}
}
public int returnFine(){
return fineAmt;
}
Trong lớp học chính ...
public class Main {
@EJB
public static AManagerRemote amr;
public static void main(String[] args) {
......
System.out.println(amr.returnFine());
// ALWAYS RETURN 0
Trước hết, các biến tĩnh không cuối cùng trong EJB không được phép. Có một mục về vấn đề này trong Câu hỏi thường gặp về EJB Restrictionc
Các trường lớp tĩnh không phải không được phép trong EJB vì các trường này làm cho một bean doanh nghiệp khó phân phối hoặc không thể phân phối. Các trường lớp tĩnh được chia sẻ giữa tất cả các cá thể của một lớp cụ thể, nhưng chỉ trong một Máy ảo Java (JVM) đơn. Việc cập nhật một trường tĩnh bao hàm ý định chia sẻ giá trị của trường trong tất cả các trường hợp của lớp. Nhưng nếu một lớp đang chạy trong một số JVM cùng một lúc, chỉ những cá thể chạy trong cùng một JVM như cá thể cập nhật mới có quyền truy cập vào giá trị mới. Nói cách khác, một trường tĩnh nonfinal sẽ hoạt động khác nếu chạy trong một JVM đơn lẻ, hơn là nó sẽ chạy trong nhiều JVM. Thùng chứa EJB bảo lưu tùy chọn phân phối các bean doanh nghiệp trên nhiều JVM (chạy trên cùng một máy chủ hoặc trên bất kỳ nhóm máy chủ nào). Các trường lớp tĩnh không phải là không được phép vì các cá thể bean nghiệp vụ sẽ hoạt động khác nhau tùy thuộc vào việc chúng có được phân phối hay không. Thứ hai, bạn đã xác định một bean phiên trạng thái. Một bean phiên trạng thái được cho là có trạng thái đàm thoại, và một máy khách (thường) có một xử lý cho cùng một bean trạng thái trong suốt thời gian sống của nó. Tôi không thể nhìn thấy bất cứ điều gì tương tác trong ví dụ của bạn (tôi giả sử, vì bạn đã cắt bỏ một số mã), vì vậy nó thực sự cần phải là một bean nhà nước?
Vì vậy, tôi khuyên bạn nên làm điều đầu tiên để làm lại thiết kế và cố gắng tạo ra một ví dụ thực tế hơn về cuộc sống.
Nguồn
2015-05-10 05:59:42
Sử dụng phương pháp chính độc lập, cách bạn kết nối Hàng đợi tin nhắn. Có lẽ liên kết này có thể giúp bạn http://www.novell.com/documentation/extend5/Docs/help/MP/jms/tutorial/ – Premraj
@premraj, đang cố gắng đặt giá trị bằng setMsgData (textMessage.getText()); và sau đó đang cố gắng gọi getter để có được giá trị, nhưng tiếc là getter không được gọi. –
Nó sẽ giúp nếu bạn cho thấy mã được cho là để gọi getter, vì đó dường như là một phần mà không hoạt động chính xác. Câu hỏi –