<?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.
  
-->
<!-- persistence.xml schema -->
<persistence 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_2_0.xsd" version="2.0">
	<persistence-unit name="openmeetings" transaction-type="RESOURCE_LOCAL">
		<provider>org.apache.openjpa.persistence.PersistenceProviderImpl</provider>
		<class>org.openmeetings.app.persistence.beans.adresses.Adresses</class>
		<class>org.openmeetings.app.persistence.beans.adresses.States</class>
		<class>org.openmeetings.app.persistence.beans.basic.Configuration</class>
		<class>org.openmeetings.app.persistence.beans.basic.ErrorType</class>
		<class>org.openmeetings.app.persistence.beans.basic.ErrorValues</class>
		<class>org.openmeetings.app.persistence.beans.basic.LdapConfig</class>
		<class>org.openmeetings.app.persistence.beans.basic.Naviglobal</class>
		<class>org.openmeetings.app.persistence.beans.basic.Navimain</class>
		<class>org.openmeetings.app.persistence.beans.basic.OmTimeZone</class>
		<class>org.openmeetings.app.persistence.beans.basic.Sessiondata</class>
		<class>org.openmeetings.app.persistence.beans.basic.SOAPLogin</class>
		<class>org.openmeetings.app.persistence.beans.calendar.Appointment</class>
		<class>org.openmeetings.app.persistence.beans.calendar.AppointmentCategory</class>
		<class>org.openmeetings.app.persistence.beans.calendar.AppointmentReminderTyps</class>
		<class>org.openmeetings.app.persistence.beans.calendar.MeetingMember</class>
		<class>org.openmeetings.app.persistence.beans.domain.Organisation</class>
		<class>org.openmeetings.app.persistence.beans.domain.Organisation_Users</class>
		<class>org.openmeetings.app.persistence.beans.flvrecord.FlvRecording</class>
		<class>org.openmeetings.app.persistence.beans.flvrecord.FlvRecordingLog</class>
		<class>org.openmeetings.app.persistence.beans.flvrecord.FlvRecordingMetaData</class>
		<class>org.openmeetings.app.persistence.beans.flvrecord.FlvRecordingMetaDelta</class>
		<class>org.openmeetings.app.persistence.beans.invitation.Invitations</class>
		<class>org.openmeetings.app.persistence.beans.lang.FieldLanguage</class>
		<class>org.openmeetings.app.persistence.beans.lang.Fieldlanguagesvalues</class>
		<class>org.openmeetings.app.persistence.beans.lang.Fieldvalues</class>
		<class>org.openmeetings.app.persistence.beans.logs.ConferenceLog</class>
		<class>org.openmeetings.app.persistence.beans.logs.ConferenceLogType</class>
		<class>org.openmeetings.app.persistence.beans.poll.PollType</class>
		<class>org.openmeetings.app.persistence.beans.poll.RoomPoll</class>
		<class>org.openmeetings.app.persistence.beans.poll.RoomPollAnswers</class>
		<class>org.openmeetings.app.persistence.beans.rooms.RoomModerators</class>
		<class>org.openmeetings.app.persistence.beans.rooms.Rooms</class>
		<class>org.openmeetings.app.persistence.beans.rooms.RoomTypes</class>
		<class>org.openmeetings.app.persistence.beans.rooms.Rooms_Organisation</class>
		<class>org.openmeetings.app.persistence.beans.sip.OpenXGReturnObject</class>
		<class>org.openmeetings.app.persistence.beans.user.PrivateMessages</class>
		<class>org.openmeetings.app.persistence.beans.user.PrivateMessageFolder</class>
		<class>org.openmeetings.app.persistence.beans.user.Salutations</class>
		<class>org.openmeetings.app.persistence.beans.user.UserContacts</class>
		<class>org.openmeetings.app.persistence.beans.user.Userdata</class>
		<class>org.openmeetings.app.persistence.beans.user.Userlevel</class>
		<class>org.openmeetings.app.persistence.beans.user.UserSipData</class>
		<class>org.openmeetings.app.persistence.beans.user.Users</class>
		<class>org.openmeetings.app.persistence.beans.files.FileExplorerItem</class>
		<exclude-unlisted-classes>false</exclude-unlisted-classes>
		<properties>
			<property name="openjpa.RuntimeUnenhancedClasses" value="unsupported"/>
            <property name="openjpa.ConnectionDriverName" value="org.apache.commons.dbcp.BasicDataSource" />
			<property name="openjpa.ConnectionProperties"
				value="DriverClassName=com.ibm.db2.jcc.DB2Driver
					, Url=jdbc:db2://localhost:50000/openmeet
					, MaxActive=100
					, MaxWait=10000
					, TestOnBorrow=true
					, poolPreparedStatements=true
					, Username=db2admin
					, Password=admin"/>
			<property name="openjpa.jdbc.SynchronizeMappings" value="buildSchema"/>
			<property name="openjpa.Log" value="DefaultLevel=WARN, Tool=INFO" />
			<property name="openjpa.DataCache" value="true"/>
			<property name="openjpa.QueryCache" value="true"/> 
			<property name="openjpa.jdbc.DBDictionary"  value="batchLimit=100"/> 
			<property name="openjpa.jdbc.QuerySQLCache"  value="false"/>
		</properties>
	</persistence-unit>
</persistence>
