Eclipse下Spring+openJPA做EJB3的开发
Spring的版本号为2.0.6
openJPA的版本为0.9.7(其实1.0.0也是一样)
照下面如此,客户端不用装应用服务器开发了.
但如果你的客户端是Eclipse的RCP则和这个配置有一些不同
1.项目的Classpath的列表
<classpathentry kind="lib" path="main/lib/commons-beanutils.jar"/>
<classpathentry kind="lib" path="main/lib/commons-beanutils-bean-collections.jar"/>
<classpathentry kind="lib" path="main/lib/commons-beanutils-core.jar"/>
<classpathentry kind="lib" path="main/lib/commons-collections-3.2.jar"/>
<classpathentry kind="lib" path="main/lib/commons-lang.jar"/>
<classpathentry kind="lib" path="main/lib/commons-logging.jar"/>
<classpathentry kind="lib" path="main/lib/javaee.jar"/>
<classpathentry kind="lib" path="main/lib/log4j-1.2.14.jar"/>
<classpathentry kind="lib" path="main/lib/openjpa-0.9.7-incubating.jar"/>
<classpathentry kind="lib" path="main/lib/serp-1.11.0.jar"/>
<classpathentry kind="lib" path="test/lib/aspectjrt.jar"/>
<classpathentry kind="lib" path="test/lib/aspectjweaver.jar"/>
<classpathentry kind="lib" path="test/lib/cglib-nodep-2.1_3.jar"/>
<classpathentry kind="lib" path="test/lib/dbunit-2.2.jar"/>
<classpathentry kind="lib" path="test/lib/ojdbc14.jar"/>
<classpathentry kind="lib" path="test/lib/postgresql-8.2-506.jdbc3.jar"/>
<classpathentry kind="lib" path="test/lib/spring.jar"/>
2.BEANS.XML的配置
<?
xml version="1.0" encoding="UTF-8"
?>
< beans default-lazy-init ="true"
xmlns ="http://www.springframework.org/schema/beans"
xmlns:xsi ="http://www.w3.org/2001/XMLSchema-instance"
xmlns:aop ="http://www.springframework.org/schema/aop"
xmlns:jee ="http://www.springframework.org/schema/jee"
xmlns:tx ="http://www.springframework.org/schema/tx"
xsi:schemaLocation ="
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd
http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.0.xsd
http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.0.xsd" >
< bean id ="propertyConfigurer"
class ="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"
lazy-init ="false" >
< property name ="locations" >
< list >
< value > jpa.properties </ value >
</ list >
</ property >
</ bean >
<!-- Pitchfork configuration -->
<!-- <bean -->
<!-- class="org.springframework.jee.ejb.config.JeeEjbBeanFactoryPostProcessor" /> -->
< bean
class ="org.springframework.orm.jpa.support.PersistenceAnnotationBeanPostProcessor" />
< bean id ="persistenceUnitManager"
class ="org.springframework.orm.jpa.persistenceunit.DefaultPersistenceUnitManager" >
< property name ="loadTimeWeaver" >
< bean
class ="org.springframework.instrument.classloading.SimpleLoadTimeWeaver" />
</ property >
</ bean >
< bean id ="entityManagerFactory"
class ="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean" >
< property name ="persistenceUnitManager"
ref ="persistenceUnitManager" />
< property name ="persistenceUnitName" value ="${persistence.unit.name}" />
< property name ="jpaVendorAdapter" >
< bean
class ="org.springframework.orm.jpa.vendor.OpenJpaVendorAdapter" />
</ property >
</ bean >
< bean id ="transactionManager"
class ="org.springframework.orm.jpa.JpaTransactionManager" >
< property name ="entityManagerFactory"
ref ="entityManagerFactory" />
</ bean >
< tx:advice id ="methodTransactionAdvice"
transaction-manager ="transactionManager" >
< tx:attributes >
< tx:method name ="*" />
</ tx:attributes >
</ tx:advice >
< aop:config proxy-target-class ="true" >
< aop:pointcut id ="serviceMethods"
expression ="execution(public * com.wilesun.test..*Service.*(..))" />
< aop:advisor pointcut-ref ="serviceMethods"
advice-ref ="methodTransactionAdvice" />
</ aop:config >
<!-- ================================================ -->
< bean id ="com.wilesun.test.IHelloService"
class ="com.wilesun.test.HelloService" />
</ beans >
< beans default-lazy-init ="true"
xmlns ="http://www.springframework.org/schema/beans"
xmlns:xsi ="http://www.w3.org/2001/XMLSchema-instance"
xmlns:aop ="http://www.springframework.org/schema/aop"
xmlns:jee ="http://www.springframework.org/schema/jee"
xmlns:tx ="http://www.springframework.org/schema/tx"
xsi:schemaLocation ="
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd
http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.0.xsd
http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.0.xsd" >
< bean id ="propertyConfigurer"
class ="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"
lazy-init ="false" >
< property name ="locations" >
< list >
< value > jpa.properties </ value >
</ list >
</ property >
</ bean >
<!-- Pitchfork configuration -->
<!-- <bean -->
<!-- class="org.springframework.jee.ejb.config.JeeEjbBeanFactoryPostProcessor" /> -->
< bean
class ="org.springframework.orm.jpa.support.PersistenceAnnotationBeanPostProcessor" />
< bean id ="persistenceUnitManager"
class ="org.springframework.orm.jpa.persistenceunit.DefaultPersistenceUnitManager" >
< property name ="loadTimeWeaver" >
< bean
class ="org.springframework.instrument.classloading.SimpleLoadTimeWeaver" />
</ property >
</ bean >
< bean id ="entityManagerFactory"
class ="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean" >
< property name ="persistenceUnitManager"
ref ="persistenceUnitManager" />
< property name ="persistenceUnitName" value ="${persistence.unit.name}" />
< property name ="jpaVendorAdapter" >
< bean
class ="org.springframework.orm.jpa.vendor.OpenJpaVendorAdapter" />
</ property >
</ bean >
< bean id ="transactionManager"
class ="org.springframework.orm.jpa.JpaTransactionManager" >
< property name ="entityManagerFactory"
ref ="entityManagerFactory" />
</ bean >
< tx:advice id ="methodTransactionAdvice"
transaction-manager ="transactionManager" >
< tx:attributes >
< tx:method name ="*" />
</ tx:attributes >
</ tx:advice >
< aop:config proxy-target-class ="true" >
< aop:pointcut id ="serviceMethods"
expression ="execution(public * com.wilesun.test..*Service.*(..))" />
< aop:advisor pointcut-ref ="serviceMethods"
advice-ref ="methodTransactionAdvice" />
</ aop:config >
<!-- ================================================ -->
< bean id ="com.wilesun.test.IHelloService"
class ="com.wilesun.test.HelloService" />
</ beans >
3.persistence_1_0.xsd和orm_1_0.xsd
将这两个文件放到项目的classpath的根位置
4.做测试程序
public class HelloService implements IHelloServiceLocal, IHelloServiceRemote {
@PersistenceContext
private EntityManager em;
@Resource
private SessionContext ctx;
}
将代码实现完,就可以测试了
@PersistenceContext
private EntityManager em;
@Resource
private SessionContext ctx;
}