<?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" role="non-normative">
    <title>
        JPA Resources
    </title>
    <itemizedlist>
        <listitem>
            <para>
<ulink url="http://www.jcp.org/en/jsr/detail?id=317">
Java Persistence 2.0 page</ulink>
            </para>
        </listitem>
        <listitem>
            <para>
<ulink url="http://jcp.org/en/jsr/detail?id=318">Enterprise JavaBeans 3.1 page</ulink>
            </para>
        </listitem>
        <listitem>
            <para>
<ulink url="http://download.oracle.com/javaee/6/api/index.html">
javax.persistence Javadoc</ulink>
            </para>
        </listitem>
        <listitem>
            <para>
<ulink url="../javadoc/index.html">OpenJPA Javadoc</ulink>
            </para>
        </listitem>
    </itemizedlist>
</appendix>
