[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&amp;nf=1&amp;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