Properties for specifying additional information to JDBC like an external
channel provider (see ConnectionOptions in Java Spanner client library for more details on
supported properties).
[[["Easy to understand","easyToUnderstand","thumb-up"],["Solved my problem","solvedMyProblem","thumb-up"],["Other","otherUp","thumb-up"]],[["Missing the information I need","missingTheInformationINeed","thumb-down"],["Too complicated / too many steps","tooComplicatedTooManySteps","thumb-down"],["Out of date","outOfDate","thumb-down"],["Samples / code issue","samplesCodeIssue","thumb-down"],["Other","otherDown","thumb-down"]],["Last updated 2025-08-28 UTC."],[],[],null,["# Class ProxyServer (0.27.1)\n\nVersion latestkeyboard_arrow_down\n\n- [0.27.1 (latest)](/java/docs/reference/pgadapter/latest/com.google.cloud.spanner.pgadapter.ProxyServer)\n- [0.27.0](/java/docs/reference/pgadapter/0.27.0/com.google.cloud.spanner.pgadapter.ProxyServer)\n- [0.26.0](/java/docs/reference/pgadapter/0.26.0/com.google.cloud.spanner.pgadapter.ProxyServer)\n- [0.25.0](/java/docs/reference/pgadapter/0.25.0/com.google.cloud.spanner.pgadapter.ProxyServer)\n- [0.24.0](/java/docs/reference/pgadapter/0.24.0/com.google.cloud.spanner.pgadapter.ProxyServer)\n- [0.23.1](/java/docs/reference/pgadapter/0.23.1/com.google.cloud.spanner.pgadapter.ProxyServer)\n- [0.22.1](/java/docs/reference/pgadapter/0.22.1/com.google.cloud.spanner.pgadapter.ProxyServer)\n- [0.21.0](/java/docs/reference/pgadapter/0.21.0/com.google.cloud.spanner.pgadapter.ProxyServer)\n- [0.20.0](/java/docs/reference/pgadapter/0.20.0/com.google.cloud.spanner.pgadapter.ProxyServer)\n- [0.19.1](/java/docs/reference/pgadapter/0.19.1/com.google.cloud.spanner.pgadapter.ProxyServer)\n- [0.18.4](/java/docs/reference/pgadapter/0.18.4/com.google.cloud.spanner.pgadapter.ProxyServer)\n- [0.17.0](/java/docs/reference/pgadapter/0.17.0/com.google.cloud.spanner.pgadapter.ProxyServer)\n- [0.16.0](/java/docs/reference/pgadapter/0.16.0/com.google.cloud.spanner.pgadapter.ProxyServer)\n- [0.15.0](/java/docs/reference/pgadapter/0.15.0/com.google.cloud.spanner.pgadapter.ProxyServer)\n- [0.14.1](/java/docs/reference/pgadapter/0.14.1/com.google.cloud.spanner.pgadapter.ProxyServer)\n- [0.9.0](/java/docs/reference/pgadapter/0.9.0/com.google.cloud.spanner.pgadapter.ProxyServer)\n- [0.8.0](/java/docs/reference/pgadapter/0.8.0/com.google.cloud.spanner.pgadapter.ProxyServer)\n- [0.7.0](/java/docs/reference/pgadapter/0.7.0/com.google.cloud.spanner.pgadapter.ProxyServer)\n- [0.6.1](/java/docs/reference/pgadapter/0.6.1/com.google.cloud.spanner.pgadapter.ProxyServer)\n- [0.5.1](/java/docs/reference/pgadapter/0.5.1/com.google.cloud.spanner.pgadapter.ProxyServer) \n\n public class ProxyServer extends AbstractApiService\n\nThe proxy server listens for incoming client connections and starts a new [ConnectionHandler](/java/docs/reference/pgadapter/latest/com.google.cloud.spanner.pgadapter.ConnectionHandler) for each incoming connection. \n\nInheritance\n-----------\n\n[java.lang.Object](https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html) \\\u003e [AbstractApiService](https://cloud.google.com/java/docs/reference/api-common/latest/com.google.api.core.AbstractApiService.html) \\\u003e ProxyServer \n\nInherited Members\n-----------------\n\n[AbstractApiService.addListener(ApiService.Listener,Executor)](https://cloud.google.com/java/docs/reference/api-common/latest/com.google.api.core.AbstractApiService.html#com_google_api_core_AbstractApiService_addListener_com_google_api_core_ApiService_Listener_java_util_concurrent_Executor_) \n[AbstractApiService.awaitRunning()](https://cloud.google.com/java/docs/reference/api-common/latest/com.google.api.core.AbstractApiService.html#com_google_api_core_AbstractApiService_awaitRunning__) \n[AbstractApiService.awaitRunning(long,TimeUnit)](https://cloud.google.com/java/docs/reference/api-common/latest/com.google.api.core.AbstractApiService.html#com_google_api_core_AbstractApiService_awaitRunning_long_java_util_concurrent_TimeUnit_) \n[AbstractApiService.awaitTerminated()](https://cloud.google.com/java/docs/reference/api-common/latest/com.google.api.core.AbstractApiService.html#com_google_api_core_AbstractApiService_awaitTerminated__) \n[AbstractApiService.awaitTerminated(long,TimeUnit)](https://cloud.google.com/java/docs/reference/api-common/latest/com.google.api.core.AbstractApiService.html#com_google_api_core_AbstractApiService_awaitTerminated_long_java_util_concurrent_TimeUnit_) \n[AbstractApiService.doStart()](https://cloud.google.com/java/docs/reference/api-common/latest/com.google.api.core.AbstractApiService.html#com_google_api_core_AbstractApiService_doStart__) \n[AbstractApiService.doStop()](https://cloud.google.com/java/docs/reference/api-common/latest/com.google.api.core.AbstractApiService.html#com_google_api_core_AbstractApiService_doStop__) \n[AbstractApiService.failureCause()](https://cloud.google.com/java/docs/reference/api-common/latest/com.google.api.core.AbstractApiService.html#com_google_api_core_AbstractApiService_failureCause__) \n[AbstractApiService.isRunning()](https://cloud.google.com/java/docs/reference/api-common/latest/com.google.api.core.AbstractApiService.html#com_google_api_core_AbstractApiService_isRunning__) \n[AbstractApiService.notifyFailed(Throwable)](https://cloud.google.com/java/docs/reference/api-common/latest/com.google.api.core.AbstractApiService.html#com_google_api_core_AbstractApiService_notifyFailed_java_lang_Throwable_) \n[AbstractApiService.notifyStarted()](https://cloud.google.com/java/docs/reference/api-common/latest/com.google.api.core.AbstractApiService.html#com_google_api_core_AbstractApiService_notifyStarted__) \n[AbstractApiService.notifyStopped()](https://cloud.google.com/java/docs/reference/api-common/latest/com.google.api.core.AbstractApiService.html#com_google_api_core_AbstractApiService_notifyStopped__) \n[AbstractApiService.startAsync()](https://cloud.google.com/java/docs/reference/api-common/latest/com.google.api.core.AbstractApiService.html#com_google_api_core_AbstractApiService_startAsync__) \n[AbstractApiService.state()](https://cloud.google.com/java/docs/reference/api-common/latest/com.google.api.core.AbstractApiService.html#com_google_api_core_AbstractApiService_state__) \n[AbstractApiService.stopAsync()](https://cloud.google.com/java/docs/reference/api-common/latest/com.google.api.core.AbstractApiService.html#com_google_api_core_AbstractApiService_stopAsync__) \n[Object.clone()](https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html#clone--) \n[Object.equals(Object)](https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html#equals-java.lang.Object-) \n[Object.finalize()](https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html#finalize--) \n[Object.getClass()](https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html#getClass--) \n[Object.hashCode()](https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html#hashCode--) \n[Object.notify()](https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html#notify--) \n[Object.notifyAll()](https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html#notifyAll--) \n[Object.toString()](https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html#toString--) \n[Object.wait()](https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html#wait--) \n[Object.wait(long)](https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html#wait-long-) \n[Object.wait(long,int)](https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html#wait-long-int-)\n\nConstructors\n------------\n\n### ProxyServer(OptionsMetadata optionsMetadata)\n\n public ProxyServer(OptionsMetadata optionsMetadata)\n\nInstantiates the ProxyServer from CLI-gathered metadata.\n\n### ProxyServer(OptionsMetadata optionsMetadata, OpenTelemetry openTelemetry)\n\n public ProxyServer(OptionsMetadata optionsMetadata, OpenTelemetry openTelemetry)\n\nInstantiates the ProxyServer from CLI-gathered metadata.\n\n### ProxyServer(OptionsMetadata optionsMetadata, OpenTelemetry openTelemetry, Properties properties)\n\n public ProxyServer(OptionsMetadata optionsMetadata, OpenTelemetry openTelemetry, Properties properties)\n\nInstantiates the ProxyServer from metadata and properties. For use with in-process invocations.\n\nMethods\n-------\n\n### clearDebugMessages()\n\n public void clearDebugMessages()\n\n### doStart()\n\n protected void doStart()\n\n**Overrides** \n[AbstractApiService.doStart()](https://cloud.google.com/java/docs/reference/api-common/latest/com.google.api.core.AbstractApiService.html#com_google_api_core_AbstractApiService_doStart__)\n\n### doStop()\n\n protected void doStop()\n\n**Overrides** \n[AbstractApiService.doStop()](https://cloud.google.com/java/docs/reference/api-common/latest/com.google.api.core.AbstractApiService.html#com_google_api_core_AbstractApiService_doStop__)\n\n### getDebugMessages()\n\n public ConcurrentLinkedQueue\u003cWireMessage\u003e getDebugMessages()\n\n### getLocalPort()\n\n public int getLocalPort()\n\n### getNumberOfConnections()\n\n public int getNumberOfConnections()\n\n### getOpenTelemetry()\n\n public OpenTelemetry getOpenTelemetry()\n\n### getOptions()\n\n public OptionsMetadata getOptions()\n\n### getProperties()\n\n public Properties getProperties()\n\n### startServer()\n\n public void startServer()\n\nStarts the server by running the thread runnable and setting status.\n\n### stopServer()\n\n public void stopServer()\n\nSafely stops the server (iff started), closing specific socket and cleaning up.\n\n### toString()\n\n public String toString()\n\n**Overrides** \n[Object.toString()](https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html#toString--)"]]