Websphere 创建数据源时wsadmin控制台中出现错误(NPE)

Websphere 创建数据源时wsadmin控制台中出现错误(NPE),websphere,jython,websphere-8,wsadmin,Websphere,Jython,Websphere 8,Wsadmin,我正在wsadmin控制台中的jython中以以下方式创建数据源: 首先,我按名称搜索JDBC提供程序: AdminConfig.list('JDBCProvider')中提供程序的。拆分('\r\n'): 如果AdminConfig.showtattribute(提供程序,'name')==提供程序名称: 打印“找到JDBC提供程序:”+提供程序 db2provider=provider 找到JDBC提供程序。现在,我使用以下提供程序创建数据源: dsAttrs=[['name','myDS

我正在wsadmin控制台中的jython中以以下方式创建数据源:

首先,我按名称搜索JDBC提供程序:

AdminConfig.list('JDBCProvider')中提供程序的
。拆分('\r\n'):
如果AdminConfig.showtattribute(提供程序,'name')==提供程序名称:
打印“找到JDBC提供程序:”+提供程序
db2provider=provider
找到JDBC提供程序。现在,我使用以下提供程序创建数据源:

dsAttrs=[['name','myDS1'],['jndiName','jdbc/MY/DS1']]
newDs=AdminConfig.create('DataSource',db2provider,dsAttrs)
但我有一个例外:

WASX7015E:异常运行命令:“newDs”= create('DataSource',db2provider,dsAttrs');例外 通知: com.ibm.websphere.management.exception.ConfigServiceException java.lang.NullPointerException:java.lang.NullPointerException

代码中有什么错误?我将遵循IBM文档和internet上的示例


我使用的是WebSphere 8.5,我猜您已经在Windows上开发了脚本,然后在UNIX/Linux上运行。因此,
.split('\r\n')
在Windows上运行良好,不会分割行。使用
.splitlines()
您的脚本将更具可移植性,您不必为
'\n'
vs
'\r\n'
而烦恼

顺便说一句:通过
AdminConfig.getid
可以更快地找到合适的提供者:

#getid将仅返回具有指定名称的JDBCProviders
#然后splitlines将返回匹配对象的数组
#最后[0]将获得第一项
db2provider=AdminConfig.getid('/JDBCProvider:%s/'%providerName).splitlines()[0]
如果db2provider:
dsAttrs=['name','myDS1',['jndiName','jdbc/MY/DS1']]
newDs=AdminConfig.create('DataSource',db2provider,dsAttrs)
其他:
打印“未找到JDBCProvider”
与WDR库()相同的脚本:

#getid1将返回单个JDBCProvider1或失败
db2provider=getid1('/JDBCProvider:%s/'%providerName)
newDs=db2provider.create('DataSource',name='myDS1',jndiName='jdbc/MY/DS1')
甚至更好(幂等):

#getid1将返回单个JDBCProvider1或失败
db2provider=getid1('/JDBCProvider:%s/'%providerName)
ds=db2provider.assure('DataSource',{'name':'myDS1'},jndiName='jdbc/MY/DS1')

坦白:我是WDR贡献者之一。

事实上,环境是一样的,所以拆分(“”)在这里不是问题,但无论如何,感谢您简化了我的代码。在简化了它的工作之后,数据源是在saved中创建的。