使用 UserDefined JDBC 提供程序通过 wsadmin 创建数据源时,数据源的自定义属性 (J2EEResourcePropertySet) 不会出现

Custom properties (J2EEResourcePropertySet) of datasource do not appear when using UserDefined JDBC provider to create datasource trough wsadmin

所以基本上我已经通过 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 个自定义属性: 通过 UI 自定义属性创建数据源:

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

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

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

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