Spring based data service can't connect to service-registry

When I create a spring based data-service, I’m getting an error connecting to the service-registry. If I create a regular data-service, it connects to the service-registry fine. The error is below.

15:35:52.843 [pool-2-thread-1] ERROR c.l.l.p.s.ServiceDiscoveryEmitter - Error encountered registering the service object

javax.ws.rs.ProcessingException: RESTEASY004655: Unable to invoke request: org.apache.http.conn.HttpHostConnectException: Connect to service-registry.default:80 [service-registry.default/10.104.231.116] failed: Connection refused (Connection refused)

    at org.jboss.resteasy.client.jaxrs.engines.ApacheHttpClient4Engine.invoke(ApacheHttpClient4Engine.java:327) ~[resteasy-client-3.12.1.Final.jar:3.12.1.Final]

    at org.jboss.resteasy.client.jaxrs.internal.ClientInvocation.invoke(ClientInvocation.java:443) ~[resteasy-client-3.12.1.Final.jar:3.12.1.Final]

    at org.jboss.resteasy.client.jaxrs.internal.ClientInvocation.invoke(ClientInvocation.java:63) ~[resteasy-client-3.12.1.Final.jar:3.12.1.Final]

    at org.jboss.resteasy.client.jaxrs.internal.ClientInvocationBuilder.post(ClientInvocationBuilder.java:227) ~[resteasy-client-3.12.1.Final.jar:3.12.1.Final]

    at com.leidos.leaf.platform.servicediscovery.ServiceDiscoveryEmitter.invokeServiceRegistration(ServiceDiscoveryEmitter.java:190) ~[platform-services-service-discovery-3.3.0-dev.1.jar:3.3.0-SNAPSHOT]

    at com.leidos.leaf.platform.servicediscovery.ServiceDiscoveryEmitter.registerService(ServiceDiscoveryEmitter.java:135) ~[platform-services-service-discovery-3.3.0-dev.1.jar:3.3.0-SNAPSHOT]

    at com.leidos.leaf.platform.servicediscovery.ServiceDiscoveryEmitter.lambda$initialize$0(ServiceDiscoveryEmitter.java:96) ~[platform-services-service-discovery-3.3.0-dev.1.jar:3.3.0-SNAPSHOT]

    at java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source) [?:?]

    at java.util.concurrent.FutureTask.runAndReset(Unknown Source) [?:?]

    at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(Unknown Source) [?:?]

    at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) [?:?]

    at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) [?:?]

    at java.lang.Thread.run(Unknown Source) [?:?]

Caused by: org.apache.http.conn.HttpHostConnectException: Connect to service-registry.default:80 [service-registry.default/10.104.231.116] failed: Connection refused (Connection refused)

    at org.apache.http.impl.conn.DefaultHttpClientConnectionOperator.connect(DefaultHttpClientConnectionOperator.java:156) ~[httpclient-4.5.13.jar:4.5.13]

    at org.apache.http.impl.conn.PoolingHttpClientConnectionManager.connect(PoolingHttpClientConnectionManager.java:376) ~[httpclient-4.5.13.jar:4.5.13]

    at org.apache.http.impl.execchain.MainClientExec.establishRoute(MainClientExec.java:393) ~[httpclient-4.5.13.jar:4.5.13]

    at org.apache.http.impl.execchain.MainClientExec.execute(MainClientExec.java:236) ~[httpclient-4.5.13.jar:4.5.13]

    at org.apache.http.impl.execchain.ProtocolExec.execute(ProtocolExec.java:186) ~[httpclient-4.5.13.jar:4.5.13]

    at org.apache.http.impl.execchain.RetryExec.execute(RetryExec.java:89) ~[httpclient-4.5.13.jar:4.5.13]

    at org.apache.http.impl.execchain.RedirectExec.execute(RedirectExec.java:110) ~[httpclient-4.5.13.jar:4.5.13]

    at org.apache.http.impl.client.InternalHttpClient.doExecute(InternalHttpClient.java:185) ~[httpclient-4.5.13.jar:4.5.13]

    at org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:83) ~[httpclient-4.5.13.jar:4.5.13]

    at org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:56) ~[httpclient-4.5.13.jar:4.5.13]

    at org.jboss.resteasy.client.jaxrs.engines.ApacheHttpClient4Engine.invoke(ApacheHttpClient4Engine.java:322) ~[resteasy-client-3.12.1.Final.jar:3.12.1.Final]

    ... 12 more

Caused by: java.net.ConnectException: Connection refused (Connection refused)

    at java.net.PlainSocketImpl.socketConnect(Native Method) ~[?:?]

    at java.net.AbstractPlainSocketImpl.doConnect(Unknown Source) ~[?:?]

    at java.net.AbstractPlainSocketImpl.connectToAddress(Unknown Source) ~[?:?]

    at java.net.AbstractPlainSocketImpl.connect(Unknown Source) ~[?:?]

    at java.net.SocksSocketImpl.connect(Unknown Source) ~[?:?]

    at java.net.Socket.connect(Unknown Source) ~[?:?]

    at org.apache.http.conn.socket.PlainConnectionSocketFactory.connectSocket(PlainConnectionSocketFactory.java:75) ~[httpclient-4.5.13.jar:4.5.13]

    at org.apache.http.impl.conn.DefaultHttpClientConnectionOperator.connect(DefaultHttpClientConnectionOperator.java:142) ~[httpclient-4.5.13.jar:4.5.13]

    at org.apache.http.impl.conn.PoolingHttpClientConnectionManager.connect(PoolingHttpClientConnectionManager.java:376) ~[httpclient-4.5.13.jar:4.5.13]

    at org.apache.http.impl.execchain.MainClientExec.establishRoute(MainClientExec.java:393) ~[httpclient-4.5.13.jar:4.5.13]

    at org.apache.http.impl.execchain.MainClientExec.execute(MainClientExec.java:236) ~[httpclient-4.5.13.jar:4.5.13]

    at org.apache.http.impl.execchain.ProtocolExec.execute(ProtocolExec.java:186) ~[httpclient-4.5.13.jar:4.5.13]

    at org.apache.http.impl.execchain.RetryExec.execute(RetryExec.java:89) ~[httpclient-4.5.13.jar:4.5.13]

    at org.apache.http.impl.execchain.RedirectExec.execute(RedirectExec.java:110) ~[httpclient-4.5.13.jar:4.5.13]

    at org.apache.http.impl.client.InternalHttpClient.doExecute(InternalHttpClient.java:185) ~[httpclient-4.5.13.jar:4.5.13]

    at org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:83) ~[httpclient-4.5.13.jar:4.5.13]

    at org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:56) ~[httpclient-4.5.13.jar:4.5.13]

    at org.jboss.resteasy.client.jaxrs.engines.ApacheHttpClient4Engine.invoke(ApacheHttpClient4Engine.java:322) ~[resteasy-client-3.12.1.Final.jar:3.12.1.Final]

    ... 12 more

For posterity, we jumped into a call and it seems the problem no longer exists when using the latest artifacts for the Service Registry Helm chart, ServiceDiscoveryEmitter class, and LeafService DataObject. For those that are using versions of the aforementioned artifacts prior to LEAF 3.2, there were breaking changes for the Service Registry. These changes were also abstracted into a LEAF Platform Services Java library rather than continuing to be a part of generated service output. Users can see the differences between wiring up the ServiceDiscoveryEmitter for there service by generating a post 3.2 service and a pre 3.2 service:

pre 3.2 data service

yarn global add @leaf/service-generators@3.1.1
yo @leaf/data-service

See the service’s …Application.java and utils/ServiceDiscoveryEmitter.java files

post 3.2 data service

yarn global add @leaf/service-generators
yo @leaf/data-service

See the service’s …Application.java → buildServiceDiscoveryEmitter method. Also note that the service discovery elements are now pulled as dependencies. Entries are added to the service’s build.gradle dependencies block:

implementation "com.leidos.leaf:platform-services-service-discovery:${versions.platform}"