2013-07-30 2 views
1

Im using WebSphere 8.5.5 Профиль Liberty для развертывания приложения, использующего определенный источник данных и открытый через jndi. Но я не могу использовать источник данных из своего приложения. Моя server.xml выглядит следующим образом:Как использовать источник данных, определенный в Websphere Liberty Profile 8.5?

<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> 

Im используя этот файл конфигурации пружины, чтобы ввести источник данных:

<?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, но это может» t передайте доставленный объект в 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'; 

Note1: У меня нет ссылки на JDBC драйверов в развертываемых артефактов (слух, войны и т.д. ...)

Im отсутствуют некоторые параметры конфигурации в server.xml для определения источника данных.

+0

Я не вижу ничего плохого в вашей конфигурации. Эта ошибка выглядит как проблема с продуктом. Я рекомендую открыть PMR с IBM. –

ответ

0

, вы можете захотеть ознакомиться с весенним вспомогательным классом WebSphereDataSourceAdapter. IBM обладает способностью «обертывания» услуг в сервисах, которые требуют небольшого «развертывания» для использования.

посмотреть на this в Spring API Docs в качестве возможного намека на то, что попробовать

0

У меня есть подобный код работает, но я добавил пружинный JEE: JNDI-поиск тега для поиска из источника данных внутри весна.

<jee:jndi-lookup id="dataSourcePROD" jndi-name="jdbc/sqlserver_prodS" resource-ref="false" expected-type="javax.sql.DataSource"/> 
0

имя пользователя является неправильным атрибутом в properties.microsoft.sqlserver элемента. Вы должны использовать пользователя вместо:

<properties.microsoft.sqlserver user="sa" password="" databaseName="PROD" 
           serverName="10.211.55.4" portNumber="1433"/> 
Смежные вопросы