Websphere 为 Postgresqs 创建数据源
Websphere create datasource for Postgresqs
我正在尝试在 websphere 上创建数据源 image:websphere-traditional:9.0.5.5-ubi8
我正在尝试为 Postgresql.Here 创建数据源是我在后 datasource.py 文件中执行的代码:
jdbcProvider = AdminTask.createJDBCProvider(
'[-scope Node=DefaultNode01 -databaseType "User-defined" -providerType "User-defined JDBC Provider" -implementationType "User-defined" -name "Postgres JDBC Provider" -description "PostgreSQL JDBC Driver" -implementationClassName org.postgresql.jdbc3.Jdbc3ConnectionPool -classpath [/opt/postgres/postgresql-42.2.14.jar ] -nativePath "" ]')
print("jdbcProvider: "+jdbcProvider)
datasource = AdminTask.createDatasource(
jdbcProvider, '[-name myname -jndiName jdbc/myjndiName -dataStoreHelperClassName com.ibm.websphere.rsadapter.GenericDataStoreHelper -containerManagedPersistence true -componentManagedAuthenticationAlias DefaultNode01/DB_USER_POSTGRES -xaRecoveryAuthAlias DefaultNode01/DB_USER_POSTGRES -configureResourceProperties [[URL java.lang.String jdbc:postgresql://postgres:5432/postgres]]]')
print("datasource: " + datasource)
m = AdminConfig.create('MappingModule', datasource,
'[[authDataAlias DefaultNode01/DB_USER_POSTGRES] [mappingConfigAlias DefaultPrincipalMapping]]')
print("m: "+m)
AdminConfig.save()
我收到如下错误:
exception information: com.ibm.ws.scripting.ScriptingException: WASX8018E: Cannot find a match for option value [URL, java.lang.String, jdbc:postgresql://postgres:5432/postgres] for step configureResourceProperties
但是当我使用带有 oracle-datasource.py 的 Oracle 数据库尝试它时。成功运行,没有任何错误。
jdbcProvider = AdminTask.createJDBCProvider(
'[-scope Node=DefaultNode01 -databaseType Oracle -providerType "Oracle JDBC Driver" -implementationType "XA data source" -name "Oracle JDBC Driver (XA)" -description "Oracle JDBC Driver (XA)" -classpath [/opt/oracle/ojdbc8.jar ] -nativePath "" ]')
print("jdbcProvider: "+jdbcProvider)
datasource = AdminTask.createDatasource(
jdbcProvider, '[-name myname -jndiName jdbc/myjndiName -dataStoreHelperClassName com.ibm.websphere.rsadapter.Oracle11gDataStoreHelper -containerManagedPersistence true -componentManagedAuthenticationAlias DefaultNode01/APPMY_USER -xaRecoveryAuthAlias DefaultNode01/APPMY_USER -configureResourceProperties [[URL java.lang.String jdbc:oracle:thin:@oracle:1521/xepdb1]]]')
print("datasource: " + datasource)
我是否遗漏了 Postgresql 数据源的某些内容?
背景
与 Oracle 数据源的不同之处在于,对于 PostgreSQL,您使用的是用户定义的 JDBC 提供程序,因此您无法利用提供驱动程序集的 JDBC 特定于驱动程序的模板-WebSphere 产品附带的特定自定义属性。
解决方案
您可以像这样尝试将自定义 属性 添加到您的数据源:
datasource = # ... create from provider, e.g. as in the question
propSet = AdminConfig.showAttribute(datasource , 'propertySet')
name = ['name', 'URL']
value = ['value', 'jdbc:postgresql://postgres:5432/postgres']
rpAttrs = [name, value]
print AdminConfig.create('J2EEResourceProperty', propSet, rpAttrs)
(这似乎是 this 文档的意思,但它并未显示实际设置值。)
我正在尝试在 websphere 上创建数据源 image:websphere-traditional:9.0.5.5-ubi8
我正在尝试为 Postgresql.Here 创建数据源是我在后 datasource.py 文件中执行的代码:
jdbcProvider = AdminTask.createJDBCProvider(
'[-scope Node=DefaultNode01 -databaseType "User-defined" -providerType "User-defined JDBC Provider" -implementationType "User-defined" -name "Postgres JDBC Provider" -description "PostgreSQL JDBC Driver" -implementationClassName org.postgresql.jdbc3.Jdbc3ConnectionPool -classpath [/opt/postgres/postgresql-42.2.14.jar ] -nativePath "" ]')
print("jdbcProvider: "+jdbcProvider)
datasource = AdminTask.createDatasource(
jdbcProvider, '[-name myname -jndiName jdbc/myjndiName -dataStoreHelperClassName com.ibm.websphere.rsadapter.GenericDataStoreHelper -containerManagedPersistence true -componentManagedAuthenticationAlias DefaultNode01/DB_USER_POSTGRES -xaRecoveryAuthAlias DefaultNode01/DB_USER_POSTGRES -configureResourceProperties [[URL java.lang.String jdbc:postgresql://postgres:5432/postgres]]]')
print("datasource: " + datasource)
m = AdminConfig.create('MappingModule', datasource,
'[[authDataAlias DefaultNode01/DB_USER_POSTGRES] [mappingConfigAlias DefaultPrincipalMapping]]')
print("m: "+m)
AdminConfig.save()
我收到如下错误:
exception information: com.ibm.ws.scripting.ScriptingException: WASX8018E: Cannot find a match for option value [URL, java.lang.String, jdbc:postgresql://postgres:5432/postgres] for step configureResourceProperties
但是当我使用带有 oracle-datasource.py 的 Oracle 数据库尝试它时。成功运行,没有任何错误。
jdbcProvider = AdminTask.createJDBCProvider(
'[-scope Node=DefaultNode01 -databaseType Oracle -providerType "Oracle JDBC Driver" -implementationType "XA data source" -name "Oracle JDBC Driver (XA)" -description "Oracle JDBC Driver (XA)" -classpath [/opt/oracle/ojdbc8.jar ] -nativePath "" ]')
print("jdbcProvider: "+jdbcProvider)
datasource = AdminTask.createDatasource(
jdbcProvider, '[-name myname -jndiName jdbc/myjndiName -dataStoreHelperClassName com.ibm.websphere.rsadapter.Oracle11gDataStoreHelper -containerManagedPersistence true -componentManagedAuthenticationAlias DefaultNode01/APPMY_USER -xaRecoveryAuthAlias DefaultNode01/APPMY_USER -configureResourceProperties [[URL java.lang.String jdbc:oracle:thin:@oracle:1521/xepdb1]]]')
print("datasource: " + datasource)
我是否遗漏了 Postgresql 数据源的某些内容?
背景
与 Oracle 数据源的不同之处在于,对于 PostgreSQL,您使用的是用户定义的 JDBC 提供程序,因此您无法利用提供驱动程序集的 JDBC 特定于驱动程序的模板-WebSphere 产品附带的特定自定义属性。
解决方案
您可以像这样尝试将自定义 属性 添加到您的数据源:
datasource = # ... create from provider, e.g. as in the question
propSet = AdminConfig.showAttribute(datasource , 'propertySet')
name = ['name', 'URL']
value = ['value', 'jdbc:postgresql://postgres:5432/postgres']
rpAttrs = [name, value]
print AdminConfig.create('J2EEResourceProperty', propSet, rpAttrs)
(这似乎是 this 文档的意思,但它并未显示实际设置值。)