Spring cloud config client to get plain text file - spring-boot

The spring cloud config server can serve plain text files as described here: https://cloud.spring.io/spring-cloud-config/multi/multi__serving_plain_text.html
I am able to get the plain text file if I curl the cloud server url as
curl http://config.server:8001/config-server/ConfigData/default/master/plainTxtFile.json (file is in private github repo.)
So in a spring boot application, which uses config server as to get the configuration I can also get the file by accessing the above url via code.
Is there a way where I can define a 'configClient' and access file as configClient.getResource(), rather than getting it from url

No, unfortunately:
This was not implemented in the open source project.
See: https://github.com/spring-cloud/spring-cloud-config/issues/789

Related

Is there bootstrap file in Quarkus application ? I can read external config files using spring cloud config server client

I can read external config files using spring cloud config server client at runtime, but before the application startup I can't not. I can't use external config files for like database connection or kafka topic. Does anyone know something?
Spring has a file like bootstrap is used before starting application and retrieve all of configurations. But Quarkus client does not do that, It retrieve the properties after application status ready
You can use quarkus.config.locations to load external files from any location: classpath, folder, HTTP, etc (just needs to be a valid URI).
Please check: https://quarkus.io/guides/config-reference#quarkus-config-config_quarkus.config.locations

Spring Cloud Config Server on Pivotal Cloud Foundry

I have two microservices. A Spring Cloud Config Server and another module that implements Spring Cloud Config Client. When I use the default configuration for the Spring Cloud Config Server service (localhost:8888) I can start it locally without any issues, after which I can start my other module as well, using a bootstrap.yml, it clearly finds the Config Server, fetches its properties and starts properly. All good. Now I'd like to push both of these services to Pivotal Cloud Foundry.
The Config Server service works just fine, service is up and running in my Space, and using the browser I can verify that it can still fetch the property files from the specific GitHub repository.
The problem is the other module, the client. I've replaced the default localhost:8888 in its bootstrap.yml file (spring.cloud.config.url parameter) to the now active service in the cloud using the Route bound to it and tried to start it locally. Unfortunately now it simply timeouts during startup. At this point I tried to specify longer timeouts but nothing helps.
Interesting thing is that if I directly copy the URL from the logs that timeouts I see it works properly in the browser locally. So why not in IntelliJ when I try to package the client with the changed parameter?
Sorry, I can't include much details here, but I hope maybe there is a straightforward solution that I've missed. Thanks!

what is service url in spring starter project? Alternatives for default service url https://start.spring.io

I am new to Spring boot.
While creating a New Spring Starter project in STS there is a Service URL dropdown defaults to https://start.spring.io as given below.
I searched in stack overflow but didn't find any information about it.
What is the use of specifying this? Why it has been given as editable? Is there any alternative available instead of https://start.spring.io?
I noticed that tried with any other URL, it tries to parse as json and gives exception given below.
JSONException: A JSONObject text must begin with '{' at character 3
Need clarification, what is happening in background?
It is a simple client server architecture which various UI clients such as Spring Boot CLI , IDE or official web UI talk to the same backend HTTP API that actually generates the spring starter project.
The service URL is the URL of this HTTP API. Spring Team already deploy an official one at https://start.spring.io which you can simply use it.
But in case if you want to build your own customised version , you can checkout its source codes , modify according to your needs and deployed to your own server. Then change the service URL to your API server 's URL in order to use it.

Bad credential with Spring Cloud Config server when security is enable

I create a Spring Cloud Config server. I put security in my application.properties file
security.basic.enabled=false
security.user.name=1user
security.user.password=123
When I try to log to the application with the name and password, I always get
Bad credentials
I tried to put enabled to true but get same result. I saw in the command line then spring generate random password like
69dfeb52-6320-4085-bcd1-22ee7a3676a2
if I use with with username user, I can connect.
>
Hi Robert Trudel
If you are using Spring Boot 2.x, then you need to prefix these properties with spring
as shown below:
spring.security.user.name=1user
spring.security.user.password=123
Also, you do not need this security.basic.enabled=false.
Hope this helps!

How to serve up logging files in a html page?

We are using spring boot for our Web Service. The logging is implemented by using logback. The application is deployed in a Red Hat Linux box and now if we want to browse over the logs we don't want to look through the plain text version. There needs to be static html page to serve it up. I tried looking at the examples but no one tried for logging.
Spring Boot Admin is a separate application which offers admin features over any Spring Boot app. These featues include a logfile-endpoint which allows you to see and tail logfile(s) produced by a Spring Boot app. By default, that endpoint will provide access to the log file defined by the Spring Boot logging.file property and you can also configure a non Spring Boot managed logfile by defining the property: endpoints.logfile.external-file.
If that tool is not a runner then your options might be:
logviewer
Roll your own, for example ...
Use Commons IO Tailer to tail your file, via a file mount on the target server or remotely using Jsch perhaps
Use a SocketAppender to emit log events from the server and consume those log events on the client side for display in the browser
Log Viewer solves this problem. It provides a web page to monitor logs on a server. Full access to the log file is available, not only tail. Filtering, highlighting is supported as well. No problem with big files.
The tool can be added to a spring boot application as a library and works inside the application, or can be run standalone.

Resources