Jython - настройки JDBC DS - PullRequest
       90

Jython - настройки JDBC DS

0 голосов
/ 06 октября 2018

Я хочу обновить до true существующее свойство с именем «SendStringParametersAsUnicode» в пользовательских свойствах моего источника данных.

2 - Я хочу установить максимальное число соединений в пределах 50 в пулах соединений в источнике данных

dsid = AdminTask.createDatasource('provider_id, '[-name [Team Server Datasource] -jndiName jdbc/ilogDataSource -dataStoreHelperClassName com.ibm.websphere.rsadapter.DB2DataStoreHelper -componentManagedAuthenticationAlias RES_db2conn -containerManagedPersistence true -xaRecoveryAuthAlias RES_db2conn -configureResourceProperties [[databaseName java.lang.String ' + str(databaseName) + '] [driverType java.lang.Integer ' + str(driverType) + '] [serverName java.lang.String ' + str(serverName) + '] [portNumber java.lang.Integer ' + portNumber + ']]]')

AdminConfig.create('MappingModule', dsid , '[[authDataAlias RES_db2conn [mappingConfigAlias ""]]')

AdminConfig.save()

print "Configuration changes saved."

import time
time.sleep(10) # Delay for 10 seconds.

AdminControl.testConnection(dsid)

Кто-нибудь знает код jython для этого?

Последнее обновление:

#provider_id=AdminConfig.getid('/Cell:E1DSCell/JDBCProvider:DB2 XA provider/')

#jdbcProvider1 = AdminConfig.getid('/JDBCProvider:myJdbcProvider/')
provider_id = AdminConfig.getid('/JDBCProvider:Microsoft SQL Server JDBC Driver/')

# dataStoreHelperClassName com.ibm.websphere.rsadapter.MicrosoftSQLServerDataStoreHelper
# componentManagedAuthenticationAlias TEMP-HRZEMM01Node01/PlatformDataSource 
# 
print "Creating DataSource"

dsid = AdminTask.createDatasource(provider_id, '[-name [Team Server Datasource] -jndiName jdbc/ilogDataSource -dataStoreHelperClassName com.ibm.websphere.rsadapter.MicrosoftSQLServerDataStoreHelper -componentManagedAuthenticationAlias TEMP-HRZEMM01Node01/PlatformDataSource -containerManagedPersistence true -xaRecoveryAuthAlias TEMP-HRZEMM01Node01/PlatformDataSource -configureResourceProperties [[databaseName java.lang.String Compass] [portNumber java.lang.Integer 1433] [serverName java.lang.String SQLSVR1]]]')

AdminConfig.create('MappingModule', dsid , '[[authDataAlias TEMP-HRZEMM01Node01/PlatformDataSource] [mappingConfigAlias ""]]')

ds_name = 'Team Server Datasource' #Name copied from your question, update if required
provider_id = AdminConfig.getid('/JDBCProvider:Microsoft SQL Server JDBC Driver/')

#Get the list of datasources
dsList = AdminConfig.list('DataSource', provider_id).splitlines()

for ds in dsList:
    if (ds_name == AdminConfig.showAttribute(ds, "name")):
        #Modify Connection Pool
        AdminConfig.modify(AdminConfig.showAttribute(ds, 'connectionPool'), '[[maxConnections "50"]]')
        #Modify SendStringParametersAsUnicode property if it exists
        propSet = AdminConfig.list("J2EEResourcePropertySet", ds)
        for prop in AdminConfig.list("J2EEResourceProperty", propSet).splitlines():
            if (AdminConfig.showAttribute(prop, "name") == 'SendStringParametersAsUnicode'):
                AdminConfig.modify(prop, [["value", "true"]])

AdminConfig.save()

print "Configuration changes saved."

import time
time.sleep(10) # Delay for 10 seconds.

#ds = AdminConfig.getid('/DataSource:SQA MOTOR/')
#print ds #variable displaying

AdminControl.testConnection(dsid)

1 Ответ

0 голосов
/ 08 октября 2018

Попробуйте запустить приведенный ниже фрагмент с помощью интерфейса wsadmin - jython:

ds_name = 'Team Server Datasource' #Name copied from your question, update if required
provider_id = #Use the same provider id used for creating the datasource (provider_id used in dsid = AdminTask.createDatasource('provider_id, '[-name [Team Server Datasource] ...)

#Get the list of datasources
dsList = AdminConfig.list('DataSource', provider_id).splitlines()

for ds in dsList:
    if (ds_name == AdminConfig.showAttribute(ds, "name")):
        #Modify Connection Pool
        AdminConfig.modify(AdminConfig.showAttribute(ds, 'connectionPool'), '[[maxConnections "50"]]')
        #Modify SendStringParametersAsUnicode property if it exists
        propSet = AdminConfig.list("J2EEResourcePropertySet", ds)
        for prop in AdminConfig.list("J2EEResourceProperty", propSet).splitlines():
            if (AdminConfig.showAttribute(prop, "name") == 'SendStringParametersAsUnicode'):
                AdminConfig.modify(prop, [["value", "true"]])

AdminConfig.save()
...