2013-03-18 23 views
9

Tôi đang cố gắng chạy một ứng dụng tai rất đơn giản. tôi dường như chạy vào chính xác vấn đề này nhưng các cuộc thảo luận ở đây không hoạt động cho tôi JDBC resource name being modified by container (__pm being appended to it)Tên tài nguyên JNDI được nối với __pm. Triển khai thất bại

Trong trường hợp của tôi, tên nguồn dữ liệu đang được thêm __pm. Tôi không có đầu mối mà nó đến từ nhưng các bản ghi máy chủ điểm đến thực tế là thay vì tìm kiếm databasename nó tìm kiếm databasename__pm và không triển khai.

persistence.xml: -

<?xml version="1.0" encoding="UTF-8"?> 
<persistence version="2.0" xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd"> 
    <persistence-unit name="FCK-ejbPU" transaction-type="JTA"> 
    <jta-data-source>FCKDatabase</jta-data-source> 
    <exclude-unlisted-classes>false</exclude-unlisted-classes> 
    <properties/> 
    </persistence-unit> 
</persistence> 

bản ghi Glassfish:

Error occurred during deployment: Exception while preparing the app : Invalid resource : { ResourceInfo : (jndiName=java:app/jdbc/FCKDatabase__pm), (applicationName=FCK) }. Please see server.log for more details. 
     Exception while invoking class org.glassfish.persistence.jpa.JPADeployer prepare method : java.lang.RuntimeException: Invalid resource : { ResourceInfo : (jndiName=java:app/jdbc/FCKDatabase__pm), (applicationName=FCK) } 
     Invalid resource : { ResourceInfo : (jndiName=java:app/jdbc/FCKDatabase__pm), (applicationName=FCK) } 

Như bạn có thể thấy tên JNDI của tôi về nguồn lực của tôi là appened với __pm.

Ngoài ra trên máy chủ Glassfish console tài nguyên được hiển thị một cách chính xác như FCKDatabase và không FCKDatabase_pm

Bất kỳ ý tưởng nơi __pm này xuất phát từ đâu?

hệ thống:

  • Netbeans 7.3
  • Glassfish server 3.1.2

Trả lời

6

Vấn đề là các tập tin jar nối mysql đã không được đặt vào máy chủ glassfish. Điều này đá trong một loạt các vấn đề. Cái mà tôi đã đăng ở trên chỉ là một trong các thông báo lỗi mà nhật ký máy chủ chứa. Tôi đề nghị đi qua toàn bộ danh sách thông báo lỗi và cố gắng gỡ lỗi từ đó. Đường dẫn sau giúp tôi đặt các tập tin jar vào đúng vị trí:

+1

tôi đã đặt trình kết nối trên cả hai thư mục lib và ext nhưng vẫn có vấn đề tương tự với việc triển khai chiến tranh của mình .. – Bardelman

+0

Khởi động lại và làm mới máy chủ sẽ giải quyết được sự cố. – Omar

1

Kể từ Netbeans 7.1 khi IDE tạo ra persistence.xml các jta lĩnh vực và glassfish-resouces tên JDNI được tạo ra với một tiền tố java:module/, nó phải được xóa trong cả hai tập tin, nó phải giống như jdbc/[anyName]. Điều này đã được thử nghiệm trên Netbeans 8.1 và Glassfish 4.0.

In the image, the second option shows the generated name, which is invalid en Glassfish because the ':'

+0

Nếu nó không hoạt động, hãy đảm bảo sao chép kết nối mysql ở đúng vị trí trên Glassfish: Glassfish/glassfish/domains/{your_domain}/lib –

+0

Điều này làm việc cho tôi, nhưng chỉ dành cho DB DBDB mặc định, tôi không thể sử dụng của riêng tôi. Nhưng dù sao cho những gì tôi cần nó là đủ. – Edeph

0

Dưới đây là một giải pháp mà tôi đã tìm thấy, nó sẽ rất hữu ích cho bất cứ ai.

Sao chép tên tài nguyên mà bạn đang gặp phải sự cố và làm theo các bước dưới đây.

  1. Đăng nhập vào giao diện điều khiển Glassfish
  2. Chuyển đến Tài
  3. JDBC -> JDBC Resources
  4. Bấm vào nút New để thêm tài nguyên
  5. Nhập nguồn sao chép vào trường tên JNDI và chọn tên hồ bơi và nhập mô tả.
  6. Nhấp vào nút Ok

Tiếp tục ứng dụng và kiểm tra.