5353 * <li>{@link ConnectionFactoryOptions#HOST}</li>
5454 * </ul>
5555 * <h3 id="supported_options">Supported Options</h3><p>
56- * This implementation supports the following options for connection creation:
56+ * This implementation supports the following well known options for connection
57+ * creation:
5758 * </p><ul>
5859 * <li>{@link ConnectionFactoryOptions#PORT}</li>
5960 * <li>{@link ConnectionFactoryOptions#DATABASE}</li>
6061 * <li>{@link ConnectionFactoryOptions#USER}</li>
6162 * <li>{@link ConnectionFactoryOptions#PASSWORD}</li>
63+ * <li>{@link ConnectionFactoryOptions#CONNECT_TIMEOUT}</li>
64+ * <li>{@link ConnectionFactoryOptions#SSL}</li>
6265 * </ul>
66+ * <h3 id="extended_options">Supported Options</h3><p>
67+ * This implementation supports extended options having the name of a
68+ * subset of Oracle JDBC connection properties. The list of supported
69+ * connection properties is specified by {@link OracleReactiveJdbcAdapter}.
70+ * </p>
6371 *
6472 * @author harayuanwang, michael-a-mcmahon
6573 * @since 0.1.0
@@ -116,7 +124,6 @@ final class OracleConnectionFactoryImpl implements ConnectionFactory {
116124 */
117125 OracleConnectionFactoryImpl (ConnectionFactoryOptions options ) {
118126 OracleR2dbcExceptions .requireNonNull (options , "options is null." );
119-
120127 adapter = ReactiveJdbcAdapter .getOracleAdapter ();
121128 dataSource = adapter .createDataSource (options );
122129 }
@@ -138,14 +145,15 @@ final class OracleConnectionFactoryImpl implements ConnectionFactory {
138145 * the returned publisher, so that the database can reclaim the resources
139146 * allocated for that connection.
140147 * </p><p>
141- * The returned publisher does not support multiple subscribers. After a
142- * subscriber has subscribed, the returned publisher emits {@code onError}
143- * with an {@link IllegalStateException} to all subsequent subscribers .
148+ * The returned publisher supports multiple subscribers. One {@code
149+ * Connection} is emitted to each subscriber that subscribes and signals
150+ * demand .
144151 * </p>
145152 */
146153 @ Override
147154 public Publisher <Connection > create () {
148- return Mono .fromDirect (adapter .publishConnection (dataSource ))
155+ return Mono .defer (() ->
156+ Mono .fromDirect (adapter .publishConnection (dataSource )))
149157 .map (conn -> new OracleConnectionImpl (adapter , conn ));
150158 }
151159
0 commit comments