<?xml version="1.0" encoding="UTF-8"?>
<!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
 distributed with this work for additional information
 regarding copyright ownership.  The ASF licenses this file
 to you under the Apache License, Version 2.0 (the
 "License"); you may not use this file except in compliance
 with the License.  You may obtain a copy of the License at
 
 http://www.apache.org/licenses/LICENSE-2.0
 
 Unless required by applicable law or agreed to in writing,
 software distributed under the License is distributed on an
 "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
 KIND, either express or implied.  See the License for the
 specific language governing permissions and limitations
 under the License.   
-->
<appendix id="jpa_resources">
    <title>
        JPA Resources
    </title>
    <itemizedlist>
        <listitem>
            <para>
<ulink url="http://java.sun.com/aboutJava/communityprocess/jsr/jsr_220_dataobj.html">
EJB 3 JSR page</ulink>
            </para>
        </listitem>
        <listitem>
            <para>
<ulink url="http://java.sun.com/products/ejb">Sun EJB page</ulink>
            </para>
        </listitem>
        <listitem>
            <para>
<ulink url="http://java.sun.com/javaee/5/docs/api/index.html">
javax.persistence Javadoc</ulink>
            </para>
        </listitem>
        <listitem>
            <para>
<ulink url="../javadoc/index.html">OpenJPA Javadoc</ulink>
            </para>
        </listitem>
        <listitem>
            <para>
<ulink url="Persistence.pdf">Locally mirrored JPA specification</ulink>
            </para>
        </listitem>
    </itemizedlist>
</appendix>
