【问题标题】:Custom properties (J2EEResourcePropertySet) of datasource do not appear when using UserDefined JDBC provider to create datasource trough wsadmin使用 UserDefined JDBC 提供程序通过 wsadmin 创建数据源时,不会出现数据源的自定义属性(J2EEResourcePropertySet)
【发布时间】:2021-05-21 10:12:48
【问题描述】:

所以基本上我已经通过 wsadmin 创建了用户定义的 JDBC 提供程序:

AdminTask.createJDBCProvider('[-scope Cluster=MyCluster -databaseType User-defined -providerType "User-defined JDBC Provider" -implementationType User-defined -name "MSSQL JDBC Provider" -description "Microsoft SQL Server JDBC Driver" -classpath [${SQL_PATH}/sql.jar ] -nativePath "" -implementationClassName com.microsoft.sqlserver.jdbc.SQLServerConnectionPoolDataSource ]')

之后我想创建数据源。所以基本上当我使用 UI 创建数据源时 - 它用该数据源 (55 J2EEResourceProperties) 的自定义属性 (J2EEResourcePropertySet) 填充 3 个页面。

如果我使用 wsadmin,由于某种原因它不会填满这 3 个页面,只有我看到 ~8 个自定义属性 (J2EEResourceProperties)。

如果我在创建槽 UI 和脚本时查看日志命令辅助命令 - 它们是相同的。

有人可以解释一下有什么问题吗?运行脚本时我还需要 55 个自定义属性。谢谢。

这是我的数据源脚本:

jdbcprovider = AdminConfig.getid('/JDBCProvider:MSSQL JDBC Provider/')
AdminTask.createDatasource(jdbcprovider, '[-name DataSource1 -jndiName DataSource1 -dataStoreHelperClassName com.ibm.websphere.rsadapter.MicrosoftSQLServerDataStoreHelper -containerManagedPersistence true -componentManagedAuthenticationAlias SAmgr/DataSource1 ]')

添加图片理解:

55 个自定义属性出现: Creating datasource trough UI Custom Properties:

8 个自定义属性出现: Creating datasource trough wsadmin script custom properties

【问题讨论】:

  • 不确定我是否理解这个问题,并且两行脚本 sn-p 并没有显示太多。也许显示更多的 wsadmin 脚本,更详细地解释您希望看到的内容,而不是?
  • 嗨,Scott,添加图片以便理解。第一张图片是使用相同的 jdbc 提供程序通过 UI 创建的数据源,它有 55 个自定义属性。第二张图片是通过该脚本创建的数据源,我指出它只有 8 个自定义属性。在命令帮助中,当我通过 UI 命令创建它时是相同的。提供者也一样。 [1]:i.stack.imgur.com/EDVAf.png [2]:i.stack.imgur.com/84j7f.png
  • 好的,我明白了。您正在通过 wsadmin 创建提供程序,但稍后在管理控制台中创建数据源时会关注管理控制台 UI 视图。那么,您是否正在尝试创建一个自定义 JDBC 提供程序,它看起来就像 MS SQL Server 一样,WebSphere 有一个内置模板(所有相同的自定义属性)?或者您是否尝试定义一个纯用户定义的提供程序,并使用其所有自定义属性并将这些属性显示在数据源视图中?
  • 是的,我通过 wsadmin 及其用户定义创建 jdbc 提供程序,并且我为此使用不同的 mssql 驱动程序 (sqljdbc622.jar) 但问题是 jdbcprovider 创建得很好。然后,如果我尝试使用此用户定义的提供程序通过 UI 创建数据源,我会自动添加自定义属性(其中 55 个)如果我使用 wsadmin 使用此用户定义的提供程序创建数据源出于某种原因我没有获得这 55 个自定义属性.我只得到其中的8个。我如何解决它。我需要得到其中的 55 个。
  • 但问题是 jdbcprovider 创建得很好。即使我通过 UI 创建 jdbcprovider,如果我通过 wsadmin 创建数据源,数据源自定义属性也不会出现。

标签: jdbc websphere datasource jython wsadmin


【解决方案1】:

编辑:当您使用使用预定义类型之一(如 MS SQL Server JDBC 驱动程序)创建的 JDBC 提供程序创建数据源时,WAS 使用模板的内容来填充(除其他外)数据源的属性. 8 个 WebSphere 属性(如 webSphereDefaultQueryTimeout)和其他供应商特定的属性(如 MSSQL Server 的 applicationName)都有一个模板。 8 个 WebSphere 特定属性对所有数据源都是通用的,由 WAS 维护,不是 JDBC 驱动程序的属性。根据我们对在托管(JEE 应用服务器)环境中设置/取消设置属性是否“安全”的评估,供应商特定模板中的属性是所有供应商属性的子集。

无论您是从管理控制台还是从 wsadmin 创建数据源,当 JDBC 提供程序基于预定义供应商之一时,属性集都是相同的,因为它来自标准模板。您看到的行为差异是因为您正在创建用户定义的 JDBC 提供程序,而不是使用预定义的提供程序之一。通常,仅当您要使用的 JDBC 驱动程序不是预定义的驱动程序之一时,才需要用户定义的 JDBC 提供程序。当您使用管理控制台从用户定义的 JDBC 提供程序创建数据源时,它在后台调用一个方法来内省驱动程序并发现 JDBC 驱动程序作为属性公开的任何公共 javabean。除了上述模板中的 8 个 WebSphere 属性之外,管理控制台随后将这些属性添加到数据源。管理控制台执行自省,因为没有可用于供应商属性的模板。但是,当您使用 wsadmin 从用户定义的 JDBC 提供程序创建数据源时,它不会执行该自省,因此您在数据源上看到的唯一属性将是上述模板中的 8 个 WebSphere 属性。在某些情况下,控制台以编程方式与通过脚本执行某些步骤,并且可能会出现此类行为差异。所以,这就是“为什么不同”的答案。经过调查,没有选项可以让 wsadmin 命令内省添加附加属性的驱动程序。 我看到有两种方法可以解决问题并添加属性。

如果您需要的驱动程序属性集是该驱动程序标准模板中包含的属性的一部分,请从创建用户定义的 JDBC 提供程序更改为使用由该驱动程序供应商创建的提供程序。使用 wsadmin,您将获得与从管理控制台创建时相同的所有属性。如果您需要的一些(但不是全部)属性在模板中,您可以按照您的建议使用 AdminConfig.create(...) 方法通过脚本添加这些属性。保存配置后,通过脚本创建的所有对象都可以在管理控制台中查看,包括自定义属性。

【讨论】:

  • 谢谢弗雷德!这就说明了一切。 ps 如果无法以某种方式调用方法来自省驱动程序并发现 JDBC 驱动程序作为属性公开的任何公共 javabean,那么我可以通过 AdminConfig 配置所有自定义属性,例如:AdminConfig.create('J2EEResourceProperty' , propSet, '[[name "databaseName"] [type "java.lang.String"] [description ""] [value "my_value"] [required "false"]]') 但是对于一个属性我有问题。如果无法让这些自定义属性出现,我会再提出一个关于该属性的问题。
猜你喜欢
  • 1970-01-01
  • 2020-07-08
  • 2020-08-07
  • 1970-01-01
  • 2023-03-12
  • 1970-01-01
  • 2021-01-22
  • 2017-09-25
  • 1970-01-01
相关资源
最近更新 更多