2013-02-27 43 views
15

Nếu kết nối tổng hợp không được định nghĩa trong persistence.xml cho liên kết nhật thực, hành vi mặc định là gì?kết nối eclipselink tổng hợp

Nó có mở và đóng kết nối JDBC cho mọi giao dịch không? Nó sẽ tạo ra một hồ bơi kết nối với một số mặc định?

+0

Loại giao dịch nào bạn đã chỉ định trong persistence.xml? – MRalwasser

Trả lời

11

Defaul t kết nối tổng hợp cho EclipseLink khi không sử dụng nguồn dữ liệu là một nhóm các kết nối tối thiểu/tối đa 32, với ban đầu là 1 kết nối. Vì vậy, mỗi giao dịch sẽ sử dụng một kết nối gộp lại, và không kết nối/ngắt kết nối.

+0

Bạn có nói rằng eclipselink hỗ trợ kết nối tổng hợp ngay cả khi không có tham chiếu cho việc gộp nhóm trong tệp persistence.xml? – user1796571

+0

Vâng, đó là mặc định (nhóm 32 kết nối) – James

+1

Và đây là các thuộc tính cấu hình: http://eclipse.org/eclipselink/documentation/2.4/jpa/extensions/p_connection_pool.htm – eskatos

4

Nếu bạn sử dụng máy chủ ứng dụng (Java EE) và lưu trữ được quản lý, thì bạn cần thiết lập kết nối tổng hợp trong bảng điều khiển quản trị của máy chủ ứng dụng và không cần đặt thuộc tính tổng hợp trong tính kiên trì .xml, ví dụ:

<persistence-unit name="myPU" transaction-type="JTA"> 
    <jta-data-source>jdbc_my_DataSource</jta-data-source> 
    <exclude-unlisted-classes>false</exclude-unlisted-classes> 
    <shared-cache-mode>NONE</shared-cache-mode> 
    <properties/> 
</persistence-unit> 

Nếu bạn sử dụng EclipseLink mà không cần máy chủ ứng dụng (Java SE), sử dụng ứng dụng quản lý bền bỉ, sau đó nếu bạn không cấu hình tổng hợp, Internal Connection Pooling sẽ được sử dụng, ví dụ:

<persistence-unit name="DemoPU" transaction-type="RESOURCE_LOCAL"> 
    <properties> 
    <property name="javax.persistence.jdbc.url" value="jdbc:oracle:thin:@localhost:1521:xe"/> 
    <property name="javax.persistence.jdbc.user" value="myuser"/> 
    <property name="javax.persistence.jdbc.password" value="mypassword"/> 
    <property name="javax.persistence.jdbc.driver" value="oracle.jdbc.OracleDriver"/> 
    </properties> 
</persistence-unit> 
+0

Khi bạn có nghĩa là Máy chủ ứng dụng, bạn có nghĩa là EE hoặc SE không? Vì vậy, khi không có kết nối tổng hợp được định nghĩa của nó một kết nối cho mỗi tx? Điều gì về bean được quản lý bền bỉ bằng Spring/Tomcat? – user1796571

+3

Eclipselink vẫn sử dụng các hồ bơi kết nối, nó chỉ là nó duy trì hồ bơi thay vì sử dụng nguồn dữ liệu. Các hồ bơi bên trong của ecipselink được mô tả ở đây http://wiki.eclipse.org/Configuring_an_Internal_Connection_Pool_(ELUG) và các thuộc tính kiên trì của jpa để sử dụng được đăng tại đây http://wiki.eclipse.org/EclipseLink/Features/JPA#EntityManagerFactory_Properties – Chris

1
<property name="eclipselink.connection-pool.default.initial" value="1"/> 
<property name="eclipselink.connection-pool.default.min" value="64"/> 
<property name="eclipselink.connection-pool.default.max" value="64"/> 
+0

1/32/32 như James cho biết xuất hiện chính xác (xem mã nguồn tôi tham chiếu trong câu trả lời của tôi trong chủ đề này.) –

0

Chỉ muốn cung cấp mã nguồn cho James' câu trả lời ở trên: Bạn có thể thấy rằng một hồ bơi kết nối mặc định được tạo ra trong các nhà thầu của ServerSession, sử dụng init/min/giá trị mặc định tối đa quy định tại ConnectionPool, và tùy chọn ghi đè/điều chỉnh bởi nhà phát triển thông qua các thuộc tính trong EntityManagerSetupImpl.

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