<?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>Intalio, Inc.</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:2099/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>
