Java 从domain.xml或persistence.xml配置Oracle提取大小

Java 从domain.xml或persistence.xml配置Oracle提取大小,java,oracle,jakarta-ee,glassfish,payara,Java,Oracle,Jakarta Ee,Glassfish,Payara,我有一个运行在Payara 5(初始版本)上的JavaEE应用程序,我正在尝试配置Oracle JDBC驱动程序(版本12.1.0.1.0)的获取大小。我可以使用查询提示更改单个查询的获取大小,但是,我不知道如何为整个应用程序设置默认的获取大小值。根据Oracle文档,可以通过设置defaultRowPrefetchJDBC属性来实现,但我看不到从domain.xml或persistence.xml设置此属性的方法。以下情况不起作用: 在persistence.xml中配置属性eclipsel

我有一个运行在Payara 5(初始版本)上的JavaEE应用程序,我正在尝试配置Oracle JDBC驱动程序(版本12.1.0.1.0)的获取大小。我可以使用查询提示更改单个查询的获取大小,但是,我不知道如何为整个应用程序设置默认的获取大小值。根据Oracle文档,可以通过设置
defaultRowPrefetch
JDBC属性来实现,但我看不到从
domain.xml
persistence.xml
设置此属性的方法。以下情况不起作用:

  • 在persistence.xml中配置属性eclipselink.jdbc.property.defaultRowPrefetch无效
  • connectionAttributes
    属性的值配置为
    ;连接池上的defaultRowPrefetch=100或
    :100也不起作用
  • 在池上配置
    connectionProperties
    属性会在启动时导致各种异常-我尝试了不同的语法来回答属性值,但这只改变了我得到的异常类型

配置默认提取大小的正确方法是什么?

根据本页[1]它不仅仅通过配置工作

不能将defaultRowPrefetch设置为JVM属性。它必须被命名 oracle.jdbc.defaultRowPrefetch以使其正常工作。您只能使用此属性 通过将其加载到代码中的Properties对象中,然后调用 获取与属性对象的连接

原因:

defaultRowPrefetch是连接的属性,而不是 数据源

如果您在Payara中的源代码中找到了调用
getConnection()
的正确位置,您可以检查是否有可能通过domain.xml传递此信息


[1]

根据本页[1]它不仅仅通过配置工作

不能将defaultRowPrefetch设置为JVM属性。它必须被命名 oracle.jdbc.defaultRowPrefetch以使其正常工作。您只能使用此属性 通过将其加载到代码中的Properties对象中,然后调用 获取与属性对象的连接

原因:

defaultRowPrefetch是连接的属性,而不是 数据源

如果您在Payara中的源代码中找到了调用
getConnection()
的正确位置,您可以检查是否有可能通过domain.xml传递此信息


[1]

感谢您的回答,但该链接似乎是特定于websphere的。根据Oracle文档,我应该能够使用JDBC驱动程序的
setConnectionProperties
方法对其进行配置,并且我可以通过设置池的
connectionProperties
属性向该方法传递一些信息,但这会导致异常(因为该方法需要一个
Properties
对象,而glassfish似乎会传递一个字符串或null,无论我做什么)。不可能这样做的结论可能是正确的,但我不会将IBM链接作为证据…是否存在异常堆栈跟踪?如果是,您可以发布它吗?根据我尝试设置值的方式,我会得到不同的堆栈跟踪,但似乎没有相关。对于
value=“;defaultRowPrefetch=100”
我得到了一个
ResourceException:method:setConnectionProperties
的参数是错误的;我认为这是由于payara试图将字符串参数传递给一个接受Properties对象的方法。试图忽略
value
属性并使用类似spring的语法和
props
子元素导致了混乱age“error.creating.jdbc.pool”之后是池查找的
NameNotFoundException
。为什么在属性前面放一个分号?您是否也尝试通过管理web控制台设置属性?前导分号取自计时器池中的
connectionAttributes
属性等示例,其中键值对以p形式传递属性值;忽略它不会有什么区别。管理web控制台没有用处,因为它只有一个字符串字段作为值,在那里设置属性与手动创建具有相应的
名称
属性的
元素是一样的。感谢您的回答,但该链接似乎很简单特定于websphere。根据Oracle文档,我应该能够使用JDBC驱动程序的
setConnectionProperties
方法对其进行配置,我可以通过设置池的
connectionProperties
属性向该方法传递一些信息,但这会导致异常(因为该方法需要一个
Properties
对象,而glassfish似乎会传递一个字符串或null,无论我做什么)。不可能这样做的结论可能是正确的,但我不会将IBM链接作为证据…是否存在异常堆栈跟踪?如果是,您可以发布它吗?根据我尝试设置值的方式,我会得到不同的堆栈跟踪,但似乎没有相关。对于
value=“;defaultRowPrefetch=100”
我得到了一个
ResourceException:method:setConnectionProperties
的参数是错误的;我认为这是由于payara试图将字符串参数传递给一个接受Properties对象的方法。试图忽略
value
属性并使用类似spring的语法和
props
子元素导致了混乱age“error.creating.jdbc.pool”之后是池查找的
NameNotFoundException
。为什么在属性前面放一个分号?您是否也尝试通过管理web控制台设置属性?前导分号取自计时器池中的
connectionAttributes
属性等示例,其中键值对以p形式传递属性值;忽略它不会产生错误