2008-09-23 29 views
5

Khi tôi cố gắng tra cứu sau trong mã của tôi:Trợ giúp cấu hình JNDI với nhúng JBoss trong Tomcat 5.5.x

Context initCtx = new InitialContext(); 
Context envCtx = (Context) initCtx.lookup("java:comp/env"); 
return (DataSource) envCtx.lookup("jdbc/mydb"); 

tôi nhận được ngoại lệ sau đây:

java.sql.SQLException: QueryResults: Unable to initialize naming context: 
    Name java:comp is not bound in this Context at 
    com.onsitemanager.database.ThreadLocalConnection.getConnection 
    (ThreadLocalConnection.java:130) at  
    ... 

Tôi đã cài đặt nhúng JBoss sau JBoss wiki instructions. Và tôi đã định cấu hình Tomcat bằng cách sử dụng triển khai "Quét mọi WAR theo mặc định" như được chỉ định trong configuration wiki page.

Trích dẫn trang cấu hình:

JNDI

nhúng thành phần JBoss như tổng hợp kết nối, EJB, JPA, và các giao dịch thực hiện sử dụng rộng rãi JNDI để công bố dịch vụ. JBoss nhúng ghi đè lên việc thực hiện JNDI của Tomcat bằng cách tự sắp xếp trên đầu trang của bản JNDI của Tomcat. Có một vài> lý do cho việc này:

  1. Để tránh phải tuyên bố mỗi một trong các dịch vụ này trong vòng server.xml
  2. Để cho phép tích hợp seemeless của java: namespace comp giữa các ứng dụng web và EJB .
  3. thực hiện JNDI của Tomcat có một vài lỗi quan trọng ở trong đó mà cản trở một số JBoss thành phần khả năng làm việc
  4. Chúng tôi muốn cung cấp tùy chọn cho bạn về những Remoting EJB và các dịch vụ khác có thể> được nhìn từ xa lên

Bất cứ ai cũng có bất kỳ suy nghĩ về cách tôi có thể cấu hình dịch vụ đặt tên JBoss theo báo giá ở trên là ghi đè thực hiện JNDI của Tomcat để tôi có thể tra cứu trên java: comp/env?

FYI - Môi trường của tôi Tomcat 5.5.9, 2.0.2sp Seam, nhúng JBoss (Beta 3),

Lưu ý: Tôi có một tập tin -ds.xml cho kết nối cơ sở dữ liệu của tôi đúng thiết lập và truy cập trên đường dẫn lớp theo hướng dẫn.

Cũng lưu ý: Tôi đã đăng câu hỏi này trong diễn đàn Jboss được nhúng và diễn đàn người dùng đường may.

Trả lời

2

Cảm ơn bộ công cụ đáp ứng .... có, tôi có thể truy cập nguồn dữ liệu của mình bằng cách truy cập trực tiếp vào java: jdbc/mydb, nhưng tôi đang sử dụng cơ sở mã hiện có kết nối qua ENC. Dưới đây là một số thông tin thú vị mà tôi đã phát hiện ra ....

  1. Mã trên hoạt động với JBoss 4.2.2.GA và đây là thông số ctx JNDI đang được sử dụng:
    java.naming.factory.initial = org.jnp.interfaces.NamingContextFactory java.naming.factory.url.pkgs = org.jboss.naming: org.jnp.interfaces : org.jboss.naming: org.jnp.interfaces

  2. Đoạn mã trên làm việc với Tomcat 5.5.x và đây là các thông số JNDI ctx đang được sử dụng:
    java.naming.factory.initial = org. apache.naming.java.javaURLContextFactory java.naming.factory.url.pkgs = org.apache.naming

  3. Mã trên không thành công với Embedded JBoss (Beta 3) trong Tomcat 5.5.x với thông báo lỗi trên.
    java.naming.factory.initial = org.apache.naming.java.javaURLContextFactory java.naming.factory.url.pkgs = org.apache.namingMã trên không thành công với lỗi trên sử dụng JBoss được nhúng trong tomcat 5.5.x

Bất cứ ai cũng có bất kỳ suy nghĩ gì về việc định cấu hình JBoss JBND được nhúng?

+0

Bạn đã tìm giải pháp chưa? Tôi cũng gặp vấn đề này. Ứng dụng hoạt động tốt với tomcat bản địa, datasources làm việc như mong đợi, nhưng khi JBoss được nhúng tôi nhận được một "Tên java: comp không bị ràng buộc trong bối cảnh này" lỗi. –

1

java: comp/env được gọi là Ngữ cảnh đặt tên doanh nghiệp (ENC) và không hiển thị trên toàn cầu. Xem here để biết thêm thông tin. Bạn sẽ cần phải xác định tên JNDI toàn cầu mà nguồn dữ liệu của bạn được regsitered tại.

Cách dễ nhất để thực hiện điều này là điều hướng đến giao diện điều khiển JMX dựa trên web của JBoss và tìm kiếm một tên 'JNDIView' (không chính xác chắc chắn về tên - hiện đang ở nhà). Mbean này nên có một phương thức danh sách mà bạn có thể gọi, nó sẽ hiển thị đường dẫn ngữ cảnh cho tất cả các đối tượng liên kết JNDI.

1

tôi đã có một số vấn đề tương tự với Jboss Embedded và tôi cuối cùng năng khắc phục chơi trong file: thử Datasource-ds.xml

thêm

<mbean code="org.jboss.naming.NamingAlias" name="jboss.jmx:alias=testDatasource"> 
    <attribute name="FromName">jdbc/Example DataSource</attribute> 
    <attribute name="ToName">java:/testDatasource</attribute> 
</mbean> 

Vấn đề được JBoss thêm java tiền tố:/cho tất cả nguồn dữ liệu được khai báo. Vì vậy, cuối cùng tôi đã có nguồn dữ liệu có tên là testDatasource, được ghi đè với chỉ thị đó đến jdbc/Example DataSource

Hy vọng nó hoạt động

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