<?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.
  -->

<connector xmlns="http://java.sun.com/xml/ns/j2ee"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
                        http://java.sun.com/xml/ns/j2ee/connector_1_5.xsd" version="1.5">
    <display-name>ODE Resource Adapter</display-name>
    <vendor-name>Apache Software Foundation</vendor-name>
    <eis-type>RMI</eis-type>
    <resourceadapter-version>1.0</resourceadapter-version>
    <license>
        <description>CPL</description>
        <license-required>false</license-required>
    </license>
    <resourceadapter>
        <outbound-resourceadapter>
            <connection-definition>
                <managedconnectionfactory-class>
                    org.apache.ode.ra.OdeManagedConnectionFactory
                </managedconnectionfactory-class>
                <config-property>
                    <config-property-name>URL</config-property-name>
                    <config-property-type>java.lang.String</config-property-type>
                    <config-property-value>rmi://localhost:2098/MyDomain</config-property-value>
                </config-property>
                <connectionfactory-interface>
                    org.apache.ode.ra.OdeConnectionFactory</connectionfactory-interface>
                <connectionfactory-impl-class>
                    org.apache.ode.ra.OdeConnectionFactoryImpl </connectionfactory-impl-class>
                <connection-interface> org.apache.ode.ra.OdeConnection </connection-interface>
                <connection-impl-class> org.apache.ode.ra.OdeConnectionImpl </connection-impl-class>
            </connection-definition>
            <transaction-support>NoTransaction</transaction-support>
        </outbound-resourceadapter>
    </resourceadapter>
</connector>
