2012-01-12 76 views
1

我有一個JSF,EclipseLink應用程序。我使用JasperReports來導出我需要創建連接的報告。閱讀Jta數據源

JasperPrint jasperPrint = JasperFillManager.fillReport(File, Hash Map, Connection) 

我無法訪問我當前的連接(我在持久性xml中定義的數據源)。我嘗試過不同的方式,但唯一有效的是創建一個新的連接。 我不覺得我的代碼中的硬編碼連接參數真的很好。 有沒有一種方法,我可以讀取數據源的參數,這樣我就可以創建一個具有相同參數的連接?

回答

1

我不知道你的意思,如果你使用的是數據源,你無法訪問,它在其他地方定義從persistence.xml中的連接和persistence.xml中用於定義如何提供者應該從一開始就容器。所以如果它是一個數據源,持久化單元將不會有任何有關連接本身的信息,但你應該能夠從容器中查找它。

這裏描述你可以從EclipseLink的連接: http://wiki.eclipse.org/EclipseLink/Examples/JPA/EMAPI#Getting_a_JDBC_Connection_from_an_EntityManager

您也可以使用此代碼從會話,這將如果你不使用數據源包含連接信息的登錄對象。

+0

非常感謝您的幫助。當我嘗試第一種方法時,2.0。它返回一個關閉的連接。並且不會讓我使用這些行:entityManager.getTransaction()。begin(); 由於異常的: 產生的原因:java.lang.IllegalStateException: 異常說明:在使用JTA不能使用EntityTransaction。 – user1020015 2012-01-18 03:38:43

+0

順便說一句,你是什麼人的登錄對象? 在此先感謝。 – user1020015 2012-01-18 03:55:51