我在WebSphere中定义了一个名为'jdbc / dataSource1'的JDBC数据源
在我的基于Spring的应用程序中,我希望使用jndi查找获取数据源,但是使用其他名称,例如'jdbc / dataSource2'。
为了实现这一点,我创建了ibm-web-bnd.xml文件,其中我定义了如下链接:
<resource-ref binding-name="jdbc/dataSource2" name="jdbc/dataSource1"/>
我还在web.xml文件中定义了数据源,如下所示:
<resource-ref>
<description>some awesome datasource</description>
<res-ref-name>jdbc/dataSource2</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
</resource-ref>
该解决方案仅在使用IBM Web Console进行部署时有效。当我尝试使用wsadmin工具使用自定义jython脚本部署它时,我收到以下错误:
ADMA0007E: A Validation error occurred in task Mapping resource references to re
sources. The Java Naming and Directory Interface (JNDI) name is not specified f
or reference binding jdbc/dataSource2 in module <application_name>.war"
在wsadmin脚本中,我使用AdminApp.install(path_to_ear,options),其中options变量仅包含有关虚拟主机映射的选项。
所以问题是我应该怎么做,因此WebSphere将从ibm-web-bnd.xml文件中获取数据源映射选项?
答案 0 :(得分:3)
您需要将MapResEnvRefToRes
选项添加到AdminApp.install
调用以将资源引用映射到资源。请查看此链接以获取更多信息:
完成任务的最快方法是启用&#34;命令帮助记录&#34;然后通过AdminConsole继续安装。在命令帮助日志中,您将找到部署的准确AdminApp.install
语法以及资源引用到实际资源的映射。
广告模式 (我正在为下面提到的OSS项目做出贡献)
如果您考虑更复杂的自动化项目(而不仅仅是一个应用程序安装),那么您可能会发现WDR库很有用。使用WDR,您可以将所有应用程序设置导出到清单文件中,其中包括MapResEnvRefToRes
设置。然后,您可以基于该清单部署应用程序。
答案 1 :(得分:3)
尝试在没有选项的情况下调用AppAdmin.install(path_to_ear)。然后从bnd文件中读取选项,并且没有验证错误。并确保ibm-web-bnd.xml
文件位于ear文件中。
更新
好的,我发现了你的错误。在你的绑定文件中,它应该是相反的方式:
<resource-ref name="jdbc/MyRef" binding-name="jdbc/JNDI" />
所以在你的情况下,name是datasource2,绑定是jndiname - 所以datasource1:
<resource-ref binding-name="jdbc/dataSource1" name="jdbc/dataSource2"/>