[Java lista] re: Spring 3.0.5 + Eclipselink 2.1.0 + Tocmat 6.x
chico at tisztanet.hu
chico at tisztanet.hu
2010. Dec. 10., P, 17:58:41 CET
Kedves Kérdező!
Remélem nem késtem el.
>Sikerült már összepárosítani ezeket valakinek? Esetleg volna valami
>példa konfiguráció? Abban a rendkívül kellemetlen helyzetben vagyok,
>hogy új nekem a Spring is meg a JPA is és össze kell házasítanom
őket.
0) A fejlesztői környezet:
- Linux Mint 10 (Ubuntu 10.10) 64bit
- SpringSourceTool Suite 2.5.1 (Eclipse 3.6)
- OpenJdk 1.6.0_20
1) spring konfiguráció
------
<beans 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:context="http://www.springframework.org/schema/context"
xmlns:lang="http://www.springframework.org/schema/lang"
xmlns:p="http://www.springframework.org/schema/p"
xmlns:tx="http://www.springframework.org/schema/tx"
xmlns:util="http://www.springframework.org/schema/util"
xsi:schemaLocation="http://www.springframework.org/schema/lang
http://www.springframework.org/schema/lang/spring-lang-3.0.xsd
http://www.springframework.org/schema/aop
http://www.springframework.org/schema/aop/spring-aop-3.0.xsd
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
http://www.springframework.org/schema/util
http://www.springframework.org/schema/util/spring-util-3.0.xsd
http://www.springframework.org/schema/tx
http://www.springframework.org/schema/tx/spring-tx-3.0.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-3.0.xsd">
<context:property-placeholder location="classpath*:*.properties" />
<context:spring-configured />
<context:annotation-config />
<context:component-scan base-package="com.company.prg" />
<!-- datasource definition -->
<bean id="dataSource"
class="org.springframework.jndi.JndiObjectFactoryBean"
p:jndiName="java:comp/env/jdbc/db" p:resourceRef="true" />
<!-- JPA EntityManagerFactory -->
<bean id="eclipseLinkAdapter"
class="org.springframework.orm.jpa.vendor.EclipseLinkJpaVendorAdapter"
p:databasePlatform="org.eclipse.persistence.platform.database.PostgreSQLPlatform"
p:generateDdl="false" p:showSql="true" />
<bean id="entityManagerFactory"
class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean"
p:dataSource-ref="dataSource"
p:jpaVendorAdapter-ref="eclipseLinkAdapter"
p:persistenceUnitName="persistenceUnitName">
<property name="loadTimeWeaver">
<bean
class="org.springframework.instrument.classloading.InstrumentationLoadTimeWeaver"
/>
</property>
</bean>
<!-- =============== Transaction management ==================== -->
<bean id="transactionManager"
class="org.springframework.orm.jpa.JpaTransactionManager"
p:entityManagerFactory-ref="entityManagerFactory" />
<!-- JPA annotations bean post processor -->
<bean
class="org.springframework.orm.jpa.support.PersistenceAnnotationBeanPostProcessor"
/>
<tx:annotation-driven mode="proxy" />
------
Fontos, hogy be legyen állítva a "loadTimeWeaver".
A spring AOP "proxy" módú annotáció CSAK interfészen keresztül működik:
------
/**
* @author chico
*
*/
public interface IDataService {
List<DemoObject> search(Date start, Date end, String freeText);
(...)
}
/**
* @author chico
*
*/
@Repository
@Transactional(readOnly = true)
public class JpaDataService implements IDataService {
@PersistenceContext(unitName = "persistenceUnitName")
protected EntityManager em;
public List<DemoObject> search(Date start, Date end, String freeText) {
(...)
}
(...)
}
------
"@PersistenceContext" -nél ugyanazt a nevet kell megadni, mint a
"p:persistenceUnitName"-nél a spring konfigban.
a "@Repository", a "context:annotation-config" és a
"context:component-scan" biztosítja azt, hogy a Spring beállítja az
adatbázis elérést az üzleti logikát megvalósító osztályban:
------
@Component
@Scope(value = "prototype")
public class BusinessLogicImpl implements BusinessLogic,
InitializingBean {
@Resource
private transient IDataService dataService;
(...)
}
------
2) weavers
Ez fontos, amennyiben a tx:annotation-driven mode="proxy" akkor a
Tomcat-nek a VM indulásakor meg kell adni a java agent-et:
-javaagent:/projects/lib/weavers/org.springframework.instrument-3.0.0.RELEASE.jar
a jar file-t a letöltött spring-ben megtalálod.
3) Ime a MAVEN függőségek:
------
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<spring.version>3.0.5.RELEASE</spring.version>
</properties>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.7</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>org.springframework.test</artifactId>
<version>${spring.version}</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>postgresql</groupId>
<artifactId>postgresql</artifactId>
<version>8.3-603.jdbc3</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>org.springframework.orm</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>org.springframework.transaction</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>com.springsource.org.apache.commons.logging</artifactId>
<version>1.1.1</version>
</dependency>
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.14</version>
</dependency>
<dependency>
<groupId>javax.persistence</groupId>
<artifactId>javax.persistence</artifactId>
<version>2.0-SNAPSHOT</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>org.eclipse.persistence</groupId>
<artifactId>eclipselink</artifactId>
<version>2.1.0</version>
<scope>compile</scope>
</dependency>
<repositories>
<repository>
<id>EclipseLink Repo</id>
<url>http://www.eclipse.org/downloads/download.php?r=1&nf=1&file=/rt/eclipselink/maven.repo</url>
<snapshots>
<enabled>true</enabled>
</snapshots>
</repository>
</repositories>
------
Üdv,
Chico
További információk a(z) Javalist levelezőlistáról