如何解决"WebSphere API classes are not available"?
how to resolve "WebSphere API classes are not available"?
我安装了带有 WAS Liberty 的 Eclipse Mars,运行时试图设置数据源。这是我收到的错误:
"Could not initialize WebSphereDataSourceAdapter because WebSphere API classes are not available: 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 文件,但 none 存在于我的 wasruntime/lib 目录中,也不存在于任何 346 个 jar 文件中。还有其他想法吗?
这是我的spring声明。
<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>
WebSphere Liberty 中不存在 class com.ibm.websphere.rsadapter.WSDataSource
。它确实存在于 Traditional WebSphere 中,这可能是混淆的来源。
如果您可以控制指定 class 名称,您只需将其更新为正确的名称即可。
如果您无法控制它,这听起来像是 Spring 框架的错误。同时,您可以通过将 javax.sql.DataSource
指定为 proxyInterface
属性.
的值来解决此问题
将您的 spring 声明更改为以下内容:
<bean id="myDatasource" class="org.springframework.jndi.JndiObjectFactoryBean">
<property name="jndiName" value="jdbc/db2"/>
<property name="proxyInterface" value="javax.sql.DataSource" />
</bean>
(注:我也去掉了一层不必要的嵌套配置)
次要旁注:
您发布的功能列表中有一些额外的东西。 jdbc-4.1
和 webProfile-7.0
功能包含在整个 javaee-7.0
功能中,因此您只需将功能管理器更改为:
<featureManager>
<feature>javaee-7.0</feature>
<feature>localConnector-1.0</feature>
</featureManager>
我安装了带有 WAS Liberty 的 Eclipse Mars,运行时试图设置数据源。这是我收到的错误:
"Could not initialize WebSphereDataSourceAdapter because WebSphere API classes are not available: 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 文件,但 none 存在于我的 wasruntime/lib 目录中,也不存在于任何 346 个 jar 文件中。还有其他想法吗?
这是我的spring声明。
<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>
WebSphere Liberty 中不存在 class com.ibm.websphere.rsadapter.WSDataSource
。它确实存在于 Traditional WebSphere 中,这可能是混淆的来源。
如果您可以控制指定 class 名称,您只需将其更新为正确的名称即可。
如果您无法控制它,这听起来像是 Spring 框架的错误。同时,您可以通过将 javax.sql.DataSource
指定为 proxyInterface
属性.
将您的 spring 声明更改为以下内容:
<bean id="myDatasource" class="org.springframework.jndi.JndiObjectFactoryBean">
<property name="jndiName" value="jdbc/db2"/>
<property name="proxyInterface" value="javax.sql.DataSource" />
</bean>
(注:我也去掉了一层不必要的嵌套配置)
次要旁注:
您发布的功能列表中有一些额外的东西。 jdbc-4.1
和 webProfile-7.0
功能包含在整个 javaee-7.0
功能中,因此您只需将功能管理器更改为:
<featureManager>
<feature>javaee-7.0</feature>
<feature>localConnector-1.0</feature>
</featureManager>