从Liberty中的应用程序加载@DataSourceDefinition的数据源

时间:2016-08-31 21:34:56

标签: java java-ee websphere datasource websphere-liberty

@DataSourceDefinition一起使用我想从使用此@DataSourceDefinition注释的应用程序(或部署描述符中的等效数据源元素)加载DataSource类。

这基本上适用于每个服务器the test I added in the Java EE 7 samples project

例如,考虑web.xml中的这个数据源定义:

<data-source>
    <name>java:app/MyApp/MyDS</name>
    <class-name>org.h2.jdbcx.JdbcDataSource</class-name>
    <url>jdbc:h2:mem:test</url>
</data-source>

包含org.h2.jdbcx.JdbcDataSource的jar将驻留在WEB-INF / lib。

在针对服务器that's automatically downloaded进行测试时,CI测试非常方便,并且预先知道部署的.war的名称(由Arquillian控制)。

虽然几乎每个服务器都支持此功能,但Liberty 16.0.2会对java:app/MyApp/MyDSjava:global/MyDS引发以下异常:

  

CWNEN0011E:注入引擎无法处理绑定   由于以下错误导致的元数据:   java.sql.SQLNonTransientException:J2CA8022E:应用程序xyz23-zvf   没有任何提供org.h2.jdbcx.JdbcDataSource的共享库   for dataSource java:global / MyDS。

IBM instructions指的是设置一个存在于本地文件系统上的共享库,但是对于几类数据源(例如那些只对应用程序具有内部含义的数据源),以及上面提到的CI测试这是不切实际的。

有没有办法让Liberty像大多数其他Java EE服务器一样从应用程序加载数据源?

0 个答案:

没有答案