![](/img/trans.png)
[英]How to define a custom DataStoreHelper in WebSphere 8.5 Liberty Profile
[英]How can I use a datasource defined in Websphere Liberty Profile 8.5?
我使用 WebSphere 8.5.5 Liberty 配置文件来部署使用通过 jndi 定义和公开的数据源的应用程序。 但是我无法使用我的应用程序中的数据源。 我的 server.xml 看起来像这样:
<server description="new server">
<!-- Enable features -->
<featureManager>
<feature>jsp-2.2</feature>
<feature>jndi-1.0</feature>
<feature>ejbLite-3.1</feature>
<feature>jdbc-4.0</feature>
</featureManager>
<dataSource id="mssqlserver" jndiName="jdbc/sqlserver_prod" type="javax.sql.DataSource">
<jdbcDriver libraryRef="MSJDBCLib"/>
<connectionManager numConnectionsPerThreadLocal="10" id="ConnectionManager" minPoolSize="1"/>
<properties.microsoft.sqlserver username="sa" password="" databaseName="PROD"
serverName="10.211.55.4" portNumber="1433"/>
</dataSource>
<library id="MSJDBCLib">
<fileset dir="/Users/alter/Devel/sqlserver" includes="sqljdbc4.jar"/>
</library>
<httpEndpoint id="defaultHttpEndpoint"
host="0.0.0.0"
httpPort="9080"
httpsPort="9443" />
<application id="ee1" location="/Users/alter/Devel/xxxx/src/ear/target/ee1-ear.ear" name="ear_ear_exploded" type="ear" >
<classloader delegation="parentLast" commonLibraryRef="MSJDBCLib" />
</application>
<application id="ee1-web" location="/Users/alter/Devel/xxxx/src/web/target/ee1-web" name="web_exploded" type="war" />
</server>
我使用这个 spring 配置文件来注入数据源:
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
<!-- START CONFIG DS -->
<bean id="dataSourcePROD" class="org.springframework.jndi.JndiObjectFactoryBean">
<property name="jndiName" value="jdbc/sqlserver_prod"/>
</bean>
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="dataSource" ref="dataSourcePROD"/>
<property name="mapperLocations" value="classpath*:mappers/**/*.xml"/>
</bean>
<bean id="sqlSessionTemplate" class="org.mybatis.spring.SqlSessionTemplate">
<constructor-arg index="0" ref="sqlSessionFactory"/>
</bean>
<bean id="genericMapper" class="org.mybatis.spring.mapper.MapperFactoryBean" abstract="true">
<property name="sqlSessionTemplate" ref="sqlSessionTemplate"/>
<property name="addToConfig" value="true"/>
</bean>
</beans>
Spring 能够从 JNDI 找到我的“数据源”对象,但它无法将传递的对象转换为 javax.sql.Datasource。 实际的例外是:
org.springframework.beans.ConversionNotSupportedException: Failed to convert property value of type 'com.ibm.ws.jdbc.DataSourceService' to required type 'javax.sql.DataSource' for property 'dataSource';
注1:我没有提到可部署工件(ear、wars 等...)中的 jdbc 驱动程序
我在 server.xml 中缺少一些用于数据源定义的配置参数??。
您可能想查看 Spring 帮助程序类WebSphereDataSourceAdapter
。 IBM 有在服务中“包装”服务的诀窍,需要稍微“解开”才能使用。
在 Spring API 文档中查看此内容,作为尝试尝试的可能提示
我有类似的代码在工作,但我添加了 spring jee:jndi-lookup 标记来查找 spring 中的数据源。
<jee:jndi-lookup id="dataSourcePROD" jndi-name="jdbc/sqlserver_prodS" resource-ref="false" expected-type="javax.sql.DataSource"/>
用户名是properties.microsoft.sqlserver元素中的错误属性。 您应该改用用户:
<properties.microsoft.sqlserver user="sa" password="" databaseName="PROD"
serverName="10.211.55.4" portNumber="1433"/>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.