1 /* 2 * Copyright (c) 2000, 2016, Oracle and/or its affiliates. All rights reserved. 3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 4 * 5 * This code is free software; you can redistribute it and/or modify it 6 * under the terms of the GNU General Public License version 2 only, as 7 * published by the Free Software Foundation. Oracle designates this 8 * particular file as subject to the "Classpath" exception as provided 9 * by Oracle in the LICENSE file that accompanied this code. 10 * 11 * This code is distributed in the hope that it will be useful, but WITHOUT 12 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 13 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License 14 * version 2 for more details (a copy is included in the LICENSE file that 15 * accompanied this code). 16 * 17 * You should have received a copy of the GNU General Public License version 18 * 2 along with this work; if not, write to the Free Software Foundation, 19 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. 20 * 21 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA 22 * or visit www.oracle.com if you need additional information or have any 23 * questions. 24 */ 25 26 package javax.sql; 27 28 import java.sql.*; 29 30 /** 31 * A factory for {@code XAConnection} objects that is used internally. 32 * An object that implements the {@code XADataSource} interface is 33 * typically registered with a naming service that uses the 34 * Java Naming and Directory Interface 35 * (JNDI). 36 * <p> 37 * An implementation of {@code XADataSource} must include a public no-arg 38 * constructor. 39 * @since 1.4 40 */ 41 42 public interface XADataSource extends CommonDataSource { 43 44 /** 45 * Attempts to establish a physical database connection that can be 46 * used in a distributed transaction. 47 * 48 * @return an {@code XAConnection} object, which represents a 49 * physical connection to a data source, that can be used in 50 * a distributed transaction 51 * @exception SQLException if a database access error occurs 52 * @exception SQLFeatureNotSupportedException if the JDBC driver does not support 53 * this method 54 * @throws SQLTimeoutException when the driver has determined that the 55 * timeout value specified by the {@code setLoginTimeout} method 56 * has been exceeded and has at least tried to cancel the 57 * current database connection attempt 58 * @since 1.4 59 */ 60 XAConnection getXAConnection() throws SQLException; 61 62 /** 63 * Attempts to establish a physical database connection, using the given 64 * user name and password. The connection that is returned is one that 65 * can be used in a distributed transaction. 66 * 67 * @param user the database user on whose behalf the connection is being made 68 * @param password the user's password 69 * @return an {@code XAConnection} object, which represents a 70 * physical connection to a data source, that can be used in 71 * a distributed transaction 72 * @exception SQLException if a database access error occurs 73 * @exception SQLFeatureNotSupportedException if the JDBC driver does not support 74 * this method 75 * @throws SQLTimeoutException when the driver has determined that the 76 * timeout value specified by the {@code setLoginTimeout} method 77 * has been exceeded and has at least tried to cancel the 78 * current database connection attempt 79 * @since 1.4 80 */ 81 XAConnection getXAConnection(String user, String password) 82 throws SQLException; 83 84 /** 85 * {@inheritDoc} 86 * @since 1.4 87 */ 88 @Override 89 java.io.PrintWriter getLogWriter() throws SQLException; 90 91 /** 92 * {@inheritDoc} 93 * @since 1.4 94 */ 95 @Override 96 void setLogWriter(java.io.PrintWriter out) throws SQLException; 97 98 /** 99 * {@inheritDoc} 100 * @since 1.4 101 */ 102 @Override 103 void setLoginTimeout(int seconds) throws SQLException; 104 105 /** 106 * {@inheritDoc} 107 * @since 1.4 108 */ 109 @Override 110 int getLoginTimeout() throws SQLException; 111 112 // JDBC 4.3 113 114 /** 115 * Creates a new {@code XAConnectionBuilder} instance 116 * @implSpec 117 * The default implementation will throw a {@code SQLFeatureNotSupportedException}. 118 * @return The XAConnectionBuilder instance that was created 119 * @throws SQLException if an error occurs creating the builder 120 * @throws SQLFeatureNotSupportedException if the driver does not support sharding 121 * @since 9 122 * @see XAConnectionBuilder 123 */ 124 default XAConnectionBuilder createXAConnectionBuilder() throws SQLException { 125 throw new SQLFeatureNotSupportedException("createXAConnectionBuilder not implemented"); 126 }; 127 128 }