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

使用用户定义的JDBC提供程序通过wsadmin创建数据源时,数据源的自定义属性(J2EEResourcePropertySet)不会出现,jdbc,websphere,datasource,jython,wsadmin,Jdbc,Websphere,Datasource,Jython,Wsadmin,因此,基本上我通过wsadmin创建了用户定义的JDBC提供程序: AdminTask.createJDBCProvider('[-scope Cluster=MyCluster -databaseType User-defined -providerType "User-defined JDBC Provider" -implementationType User-defined -name "MSSQL JDBC Provider" -descript

因此,基本上我通过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个自定义属性:

出现了8个自定义属性:

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

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


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

我不确定我是否理解这个问题,并且两行脚本片段没有向我显示太多内容。可能会显示更多wsadmin脚本,详细解释您希望看到的内容看到了吗?嗨,Scott,添加图像以理解。第一个图像是通过使用相同jdbc提供程序的UI创建的数据源,它有55个自定义属性。第二个图像是通过脚本创建的数据源,我指出它只有8个自定义属性。在命令帮助中,当我通过UI创建它时,命令是相同的。提供程序是also相同。[1]:[2]:好的,我理解得更好。您是通过wsadmin创建提供程序的,但在以后在管理控制台中创建数据源时,会关注管理控制台UI视图。因此,您是否尝试创建一个自定义JDBC提供程序,它看起来与WebSphere具有内置模板的MS SQL Server提供程序类似(所有相同的自定义属性)?或者您是否试图定义一个具有所有自定义属性的纯用户定义的提供程序,并将这些属性显示在数据源视图中?是的,我通过wsadmin及其用户定义的和使用不同mssql驱动程序(sqljdbc622.jar)创建jdbc提供程序但问题是jdbcprovider创建的很好。然后,如果我尝试使用这个用户定义的提供程序通过UI创建数据源,我会自动添加自定义属性(其中55个)如果出于某种原因,我使用wsadmin使用此用户定义的提供程序创建数据源,我不会获得这55个自定义属性。我只获得其中的8个。如何修复它。我需要获得其中的55个。但问题是jdbcprovider创建得很好。即使我通过UI创建jdbcprovider,如果我通过wsadmin创建数据源。谢谢Fred!这就解释了一切。p.s如果无法调用方法来内省驱动程序并发现JDBC驱动程序作为属性公开的任何公共JavaBean,那么我可以通过AdminConfig配置所有自定义属性,例如:AdminConfig.create('J2EEResourceOper