Jsf 读取Jta数据源

Jsf 读取Jta数据源,jsf,jasper-reports,eclipselink,persistence.xml,Jsf,Jasper Reports,Eclipselink,Persistence.xml,我有一个JSF,EclipseLink应用程序。我使用JasperReports导出创建连接所需的报表 JasperPrint JasperPrint=JasperFillManager.fillReport(文件、哈希映射、连接) 我无法访问当前连接(我在持久性xml中定义的数据源)。我尝试过不同的方法,但唯一有效的方法是建立新的连接。 我觉得在我的代码中硬编码连接参数不是很好。 是否有一种方法可以读取数据源的参数,以便使用相同的参数创建连接?我不知道您的意思是什么您不能像使用数据源一样从p

我有一个JSF,EclipseLink应用程序。我使用JasperReports导出创建连接所需的报表

JasperPrint JasperPrint=JasperFillManager.fillReport(文件、哈希映射、连接)
我无法访问当前连接(我在持久性xml中定义的数据源)。我尝试过不同的方法,但唯一有效的方法是建立新的连接。 我觉得在我的代码中硬编码连接参数不是很好。
是否有一种方法可以读取数据源的参数,以便使用相同的参数创建连接?

我不知道您的意思是什么您不能像使用数据源一样从persistence.xml访问连接,它在别处定义,persistence.xml用于定义提供者应该如何从容器中获取它。因此,如果它是一个数据源,持久化单元将没有关于连接本身的任何信息,但是您应该能够从容器中查找它

您可以从EclipseLink获取连接,如下所述:


您还可以使用此代码从会话中获取登录对象,如果您不使用数据源,该对象将包含连接信息。

我不确定您的意思是什么,您不能像使用数据源一样从persistence.xml访问连接,它在别处定义,persistence.xml用于定义提供者应该如何从容器中获取它。因此,如果它是一个数据源,持久化单元将没有关于连接本身的任何信息,但是您应该能够从容器中查找它

您可以从EclipseLink获取连接,如下所述:


您还可以使用此代码从会话中获取登录对象,如果您不使用数据源,该对象将包含连接信息。

非常感谢您的帮助。当我尝试第一种方法时,是2.0。它返回一个关闭的连接。并且不允许我使用以下行:entityManager.getTransaction().begin();由于异常:由以下原因引起:java.lang.IllegalStateException:异常描述:在使用JTA时无法使用EntityTransaction。顺便问一下,登录对象是什么?提前谢谢。非常感谢你的帮助。当我尝试第一种方法时,是2.0。它返回一个关闭的连接。并且不允许我使用以下行:entityManager.getTransaction().begin();由于异常:由以下原因引起:java.lang.IllegalStateException:异常描述:在使用JTA时无法使用EntityTransaction。顺便问一下,登录对象是什么?提前谢谢。