問題

Springでは、データソースを “org.apache.commons.dbcp.BasicDataSource`”と宣言します。 WebSphereにデプロイすると、すべてが完全に機能します。


File:spring-datasource.xml

<?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-2.5.xsd
">

    <bean
       class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
       <property name="location">
           <value>classpath:config/database/database.properties</value>
       </property>
    </bean>

    <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource"
         destroy-method="close">
        <property name="driverClassName" value="${jdbc.driverClassName}"/>
    <property name="url" value="${jdbc.url}"/>
    <property name="username" value="${jdbc.username}"/>
    <property name="password" value="${jdbc.password}"/>
    </bean>

</beans>

ただし、WebSphereでWebアプリケーションを再起動すると、次の例外が発生します。

org.springframework.beans.factory.BeanCreationException:
Error creating bean with name 'dataSource' defined in class path resource [config/database/spring/spring-datasource.xml]: Instantiation of bean failed;
......

原因:java.lang.ExceptionInInitializerError
    java.lang.J9VMInternals.initialize(J9VMInternals.java:222)
    sun.reflect.NativeConstructorAccessorImpl.newInstance0(ネイティブメソッド)
    ... 114もっと見る
原因:java.util.ConcurrentModificationException
    java.util.AbstractListで$ SimpleListIterator.next(不明なソース)
    java.sql.DriverManager.getDrivers(Unknown Source)
    org.apache.commons.dbcp.BasicDataSource。<clinit>(BasicDataSource.java:57)
    java.lang.J9VMInternals.initializeImpl(ネイティブメソッド)
    java.lang.J9VMInternals.initialize(J9VMInternals.java:200)
    ... 121もっと見る

データソース(BasicDataSource)が原因であるように見える
“java.util.ConcurrentModificationException`”

===解決策

WebSphereデータ・ソースを使用する必要があります。
“` org.apache.commons.dbcp.BasicDataSource` “それを修正するには、
WebSphereのデータ・ソース、および「

jdbc/anythingDS

」のようなjndi名を入力します。に
Springはjdniデータソースを次のように宣言します:


File:spring-datasource.xml

<?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-2.5.xsd ">

<bean id = "dataSource" class = "org.springframework.jndi.JndiObjectFactoryBean">プロパティ名= "jndiName"値= "jdbc/anythingDS"/> <property name = "lookupOnStartup" value = "false"/> <プロパティ名= "cache" value = "true"/> <property name = "proxyInterface" value = "javax.sql.DataSource"/> </bean>

</beans>

WebSphereの開発では、WebSphereのやり方に従わなければなりません
もの。