우선 톰켓 6.0 깨끗하게 하기를 참고하여 톰켓을 설치하고, 톰켓 6.0 데이터소스 설정를 참고하여 아파치 더비를 데이터소스로 설정한다.
JPA 구현부로는 오라클이 제공하는 TopLink Essentials을 다운로드한다.
다운로드한 glassfish-persistence-installer-v2-b41.jar 파일이 있는 디렉토리로 이동하여 다음 명령어를 실행한다. 자바가 사용할 수 있어야 한다.
java -jar glassfish-persistence-installer-v2-b41.jar
아래 화면에서 스크롤을 맨 아래까지 내린 다음에 Accept 버튼을 누른다.
압축이 풀리면서 디렉토리가 생기는데 다음 2 파일을 webapps/ROOT/WEB-INF/lib 디렉토리에 복사한다.
- toplink-essentials.jar
- toplink-essentials-agent.jar
그리고 webapps/ROOT/WEB-INF/classes/META-INF/persistence.xml 파일을 작성하고 다음 내용을 기술한다.
<?xml version="1.0" encoding="UTF-8"?>
<persistence version="1.0" xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd">
<persistence-unit name="ExampleUnit" transaction-type="JTA">
<provider>oracle.toplink.essentials.PersistenceProvider</provider>
<jta-data-source>java:comp/env/jdbc/Base</jta-data-source>
<class>com.dimdol.example.model.Document</class>
<class>com.dimdol.example.model.User</class>
<class>com.dimdol.example.model.Element</class>
<exclude-unlisted-classes>true</exclude-unlisted-classes>
<properties>
<!--
<property name="toplink.ddl-generation" value="create-tables" />
-->
<property name="toplink.session.customizer" value="com.dimdol.example.util.ToplinkSessionCustomizer" />
</properties>
</persistence-unit>
</persistence>
<persistence version="1.0" xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd">
<persistence-unit name="ExampleUnit" transaction-type="JTA">
<provider>oracle.toplink.essentials.PersistenceProvider</provider>
<jta-data-source>java:comp/env/jdbc/Base</jta-data-source>
<class>com.dimdol.example.model.Document</class>
<class>com.dimdol.example.model.User</class>
<class>com.dimdol.example.model.Element</class>
<exclude-unlisted-classes>true</exclude-unlisted-classes>
<properties>
<!--
<property name="toplink.ddl-generation" value="create-tables" />
-->
<property name="toplink.session.customizer" value="com.dimdol.example.util.ToplinkSessionCustomizer" />
</properties>
</persistence-unit>
</persistence>
- persistence-unit 태그 name 속성에 모델 그룹을 지칭하는 적절한 이름(ExampleUnit)을 설정한다.
- provider 태그에 JPA 구현 클래스 이름(oracle.toplink.essentials.PersistenceProvider)을 설정한다.
- jta-data-source 태그에 데이터소스 JNDI 이름(java:comp/env/jdbc/Base)을 설정한다.
- class 태그로 모델 클래스들을 설정한다.
property 태그로 toplink.session.customizer 이름에 다음 클래스를 설정한다. 이렇게 해야 하는 정확한 이유는 알수 없지만 이렇게 하지 않으면 정상적으로 동작하지 않는다.
package com.dimdol.example.util;
import oracle.toplink.essentials.jndi.JNDIConnector;
import oracle.toplink.essentials.sessions.Session;
import oracle.toplink.essentials.tools.sessionconfiguration.SessionCustomizer;
public class ToplinkSessionCustomizer implements SessionCustomizer {
public void customize(Session session) throws Exception {
JNDIConnector connector = (JNDIConnector) session.getLogin().getConnector();
connector.setLookupType(JNDIConnector.STRING_LOOKUP);
}
}
import oracle.toplink.essentials.jndi.JNDIConnector;
import oracle.toplink.essentials.sessions.Session;
import oracle.toplink.essentials.tools.sessionconfiguration.SessionCustomizer;
public class ToplinkSessionCustomizer implements SessionCustomizer {
public void customize(Session session) throws Exception {
JNDIConnector connector = (JNDIConnector) session.getLogin().getConnector();
connector.setLookupType(JNDIConnector.STRING_LOOKUP);
}
}
No comments:
Post a Comment