0

NetBeans 7.1を開発環境として使用して、単純なSpring MVC 3 + Hibernate + ApacheTomcat7.0を実行/セットアップしようとしています。

Netbeansには、適切なディレクトリ構造にすでにセットアップされている、パッケージ化されたSpringおよびHibernateのfiles / jars/dependeciesが付属しています。

applicationContextでデータソースBeanをセットアップするために、2つの選択肢がありました


バリエーション#1 (Spring開発用にNetBeansで事前にパッケージ化されたデータソースであるデータソースclass =” org.springframework.jdbc.datasource.DriverManagerDataSource”を使用)

applicationContext.xmlからのスニペット

<!-- Declare a datasource that has pooling capabilities-->  
<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource"    
destroy-method="close"    p:driverClass="com.mysql.jdbc.Driver"    
p:jdbcUrl="jdbc:mysql://localhost:3306/yourmarketnet"   
p:user="root"    
p:password="arya6678"   
p:acquireIncrement="5"    
p:idleConnectionTestPeriod="60"    
p:maxPoolSize="100"    
p:maxStatements="50"    
p:minPoolSize="10" /> 
<!-- Declare the Hibernate SessionFactory for retrieving Hibernate sessions -->   
<bean id="sessionFactory" class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean">    
<property name="dataSource" ref="dataSource"/>    
<property name="configLocation" ref="classpath:hibernate.cfg.xml"/>    
<property name="packagesToScan" value="com.yourmarketnet.*" />
</bean>

バリエーション2、エラー結果:アプリケーションの実行に失敗しました。ApacheTomcatログ:

org.springframework.beans.factory.BeanCreationException:ServletContextリソース[/WEB-INF/applicationContext.xml]で定義された「dataSource」という名前のBeanの作成中にエラーが発生しました:プロパティ値の設定中にエラーが発生しました。ネストされた例外はorg.springframework.beans.NotWritablePropertyExceptionです:Beanクラス[org.springframework.jdbc.datasource.DriverManagerDataSource]の無効なプロパティ'acquireIncrement':Beanプロパティ'acquireIncrement'は書き込み可能ではないか、無効なセッターメソッドを持っています。セッターのパラメータータイプはゲッターのリターンタイプと一致しますか?org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyPropertyValues(AbstractAutowireCapableBeanFactory.java:1361)at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:call(StandardContext.java:5221)at java.util.concurrent.FutureTask $ Sync.innerRun(FutureTask.java:334)at java.util.concurrent.FutureTask.run(FutureTask.java:166)at java.util.concurrent .ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110)at java.util.concurrent.ThreadPoolExecutor $ Worker.run(ThreadPoolExecutor.java:603)at java.lang.Thread.run(Thread.java:722)原因:org。 springframework.beans.NotWritablePropertyException:Beanクラスの無効なプロパティ'acquireIncrement' [org.springframework.jdbc.datasource.DriverManagerDataSource]:Beanプロパティ'acquireIncrement'が書き込み可能でないか、無効なセッターメソッドがあります。セッターのパラメータータイプはゲッターのリターンタイプと一致しますか?org.springframework.beans.BeanWrapperImpl.setPropertyValue(BeanWrapperImpl.java:1052)でorg。

バリエーション#2
(データソースclass =” org.apache.commons.dbcp.BasicDataSource”を使用)次に、Apache Commons dbcp jarをダウンロードすることにし、プロジェクトに「commons-dbcp-1.4.jar」を追加しました。

applicationContext.xmlからのスニペット

<!-- Declare a datasource that has pooling capabilities-->  
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource"    
destroy-method="close"    p:driverClass="com.mysql.jdbc.Driver"    
p:jdbcUrl="jdbc:mysql://localhost:3306/yourmarketnet"   
p:user="root"    
p:password="arya6678"   
p:acquireIncrement="5"    
p:idleConnectionTestPeriod="60"    
p:maxPoolSize="100"    
p:maxStatements="50"    
p:minPoolSize="10" /> 
<!-- Declare the Hibernate SessionFactory for retrieving Hibernate sessions -->   
<bean id="sessionFactory" class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean">    
<property name="dataSource" ref="dataSource"/>    
<property name="configLocation" ref="classpath:hibernate.cfg.xml"/>    
<property name="packagesToScan" value="com.yourmarketnet.*" />
</bean>

バリエーション2、エラー結果:アプリケーションの実行に失敗しました。ApacheTomcatログ:

org.springframework.beans.factory.BeanCreationException:ServletContextリソース[/WEB-INF/applicationContext.xml]で定義された「dataSource」という名前のBeanの作成中にエラーが発生しました:プロパティ値の設定中にエラーが発生しました。ネストされた例外はorg.springframework.beans.NotWritablePropertyExceptionです:Beanクラス[org.apache.commons.dbcp.BasicDataSource]の無効なプロパティ'acquireIncrement':Beanプロパティ'acquireIncrement'は書き込み可能ではないか、無効なセッターメソッドを持っています。セッターのパラメータータイプはゲッターのリターンタイプと一致しますか?org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1086)のorg.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyPropertyValues(AbstractAutowireCapableBeanFactory.java:1361)のorg.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.java:1086)コンカレント.FutureTask$Sync.innerRun(FutureTask.java:334)at java.util.concurrent.FutureTask.run(FutureTask.java:166)at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110)at java .util.concurrent.ThreadPoolExecutor $ Worker.run(ThreadPoolExecutor.java:603)at java.lang.Thread.run(Thread.java:722)原因:org.springframework.beans.NotWritablePropertyException:Beanの無効なプロパティ'acquireIncrement'クラス[org.apache.commons.dbcp.BasicDataSource]:Beanプロパティ'acquireIncrement'が書き込み可能でないか、無効なセッターメソッドがあります。セッターのパラメータータイプはゲッターのリターンタイプと一致しますか?org.springframework.beans.BeanWrapperImpl.setPropertyValue(BeanWrapperImpl.java:1052)でorg.springframework.beans.BeanWrapperImpl.setPropertyValue(BeanWrapperImpl.java:

4

2 に答える 2

0

特定の質問がありますか、それともエラーを理解していませんか?メッセージは非常に明確です。acquireIncrementは、設定しようとしているクラスのプロパティではありません。プロパティはC3P0接続プールからのものであると思います。

于 2012-05-22T21:20:02.930 に答える
0

p名前空間(、、p:user)はp:passwordp:acquireIncrementJavaBeanのプロパティを設定するために使用されます。およびクラスにacquireIncrementプロパティを設定しようとしているようです。これらのクラス(Apache Commons DBCPおよびSpringのデータソース)のドキュメントによると、どちらにもこのプロパティのセッターメソッドがないため、スタックトレースにNotWritablePropertyExceptionが表示されます。org.apache.commons.dbcp.BasicDataSourceorg.springframework.jdbc.datasource.DriverManagerDataSource

構成に関するp-namespaceに関するSpringのドキュメントを確認してください。

選択する場合は、Apacheのデータベース接続プール(dbcp)を選択します。シンプルでよく使われています。

于 2012-05-22T21:25:34.037 に答える