我安装了带有WAS Liberty的Eclipse Mars,并在运行时尝试设置数据源。这是我得到的错误:
“无法初始化WebSphereDataSourceAdapter,因为WebSphere API类不可用:java.lang.ClassNotFoundException:com.ibm.websphere.rsadapter.WSDataSource”
我在我的server.xml中有这个
<featureManager>
<feature>javaee-7.0</feature>
<feature>localConnector-1.0</feature>
<feature>jdbc-4.1</feature>
<feature>webProfile-7.0</feature>
</featureManager>
其他SO引用了一个瘦客户端jar文件,但我的wasruntime / lib目录中没有,也没有任何346个jar文件。还有其他想法吗?
这是我的春季宣言。
<bean id="myDataSource" class="org.springframework.jdbc.datasource.WebSphereDataSourceAdapter">
<property name="targetDataSource">
<bean class="org.springframework.jndi.JndiObjectFactoryBean">
<property name="jndiName" value="jdbc/db2"/>
</bean>
</property>
</bean>
答案 0 :(得分:3)
WebSphere Liberty中不存在类com.ibm.websphere.rsadapter.WSDataSource
。它确实存在于传统WebSphere中,这可能是混乱的来源。
如果您可以控制指定类名,则只需将其更新为正确的名称即可。
如果你无法控制它,这听起来像是Spring Framework的一个bug。在此期间,您可以通过将javax.sql.DataSource
指定为proxyInterface
属性的值来解决此问题。
将您的弹簧声明更改为以下内容:
<bean id="myDatasource" class="org.springframework.jndi.JndiObjectFactoryBean">
<property name="jndiName" value="jdbc/db2"/>
<property name="proxyInterface" value="javax.sql.DataSource" />
</bean>
(注意:我还消除了1层不必要的嵌套配置)
次要旁注:
您发布的功能列表中包含一些额外的内容。 jdbc-4.1
和webProfile-7.0
功能已包含在整体javaee-7.0
功能中,因此您只需将功能管理器更改为:
<featureManager>
<feature>javaee-7.0</feature>
<feature>localConnector-1.0</feature>
</featureManager>