2009-12-21 17 views
10

Tôi đã thử nhiều cách trong session bean, như:Làm thế nào để có được SessionContext trong JBOSS

@Resource 
private SessionContext ctx; 

HOẶC

private SessionContext ctx; 

@Resource 
private void setSessionContext(SessionContext ctx) { 
    this.sctx = ctx; 
} 

HOẶC

InitialContext ic = new InitialContext(); 
SessionContext ctx = (SessionContext) ic.lookup("java:comp/env/sessionContext"); 

Không ai trong số họ làm việc, trường hợp ngoại lệ differnet đã xảy ra trong JBOSS.

Tôi thực sự tức giận về điều đó. Bất cứ ai cũng có thể cho tôi biết có gì sai. Cảm ơn rất nhiều!

Trả lời

13

Hai giải pháp đầu tiên (bơm trường và phương pháp đặt phương pháp đặt) trông ổn và sẽ hoạt động.

Tôi có nghi ngờ về phương pháp thứ ba (phương pháp tra cứu) vì bạn không hiển thị chú thích @Resource(name="sessionContext") tương ứng nhưng nó cũng hoạt động nếu được sử dụng đúng cách.

Một lựa chọn thứ tư sẽ được tìm kiếm tên tiêu chuẩn java:comp/EJBContext

@Stateless 
public class HelloBean implements com.foo.ejb.HelloRemote { 
    public void hello() { 
    try { 
     InitialContext ic = new InitialContext(); 
     SessionContext sctxLookup = 
      (SessionContext) ic.lookup("java:comp/EJBContext"); 
     System.out.println("look up EJBContext by standard name: " + sctxLookup); 
    } catch (NamingException ex) { 
     throw new IllegalStateException(ex); 
    } 
    } 
} 

Bốn cách tiếp cận đều EJB 3 tuân thủ và chắc chắn sẽ làm việc với bất kỳ máy chủ ứng dụng Java EE 5 như nhắc nhở trong 4 Ways to Get EJBContext in EJB 3. Vui lòng cung cấp dấu vết ngăn xếp đầy đủ của ngoại lệ mà bạn nhận được nếu không.

0

Bạn có thể liệt kê các ràng buộc này bằng cách sử dụng mã sau, nó sẽ hiển thị cho bạn những gì có sẵn trong ngữ cảnh. (Điều này sử dụng mã groovy làm lặp (mỗi) trên thuộc kiểu liệt kê)

Context initCtx = new InitialContext(); 
Context context = initCtx.lookup("java:comp") as Context 
context.listBindings("").each { 
    println it 
} 

Dependending nếu mã này được chạy trong một bối cảnh ejb hoặc ngữ cảnh web bạn sẽ thấy đầu ra khác nhau.

Các vấn đề liên quan