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