How to switch MongoDB primary from one server to another

For a last couple of years, our development stack stays for SpringBoot+Vaadin running under Apache Tomcat and using MongoDB and ElasticSearch. We have a several installations on Windows and Linux platforms including different Windows Server versions. Our stack is carefully selected to support both platforms with good quality. Time to time, customer decides to move from one OS platform to another and we have to migrate everything seamlessly. And that happened this time also. Customer is running everything on premise using Windows 2012 server and now a decision was made to migrate to CentOS 8. Decision was also made to do it step by step and we will start with MongoDB first.

HCL Nomad – putujeme s Notes databázemi

HCL Nomad je speciální klient pro práci s Notes databázemi na zařízeních iOS a Android. Bez dalších úprav je možno pracovat s existujími Notes databázemi, podporována je velká část stávající funcionality. Nomad můžete vyzkoušet i vy jednoduchou instalací na Android nebo iOS zařízení viz odkazy níže. Řešení umožňuje: práci s klasickými Notes aplikacemi na zařízeních iOS a Android a to jak telefonů tak tabletů s databázemi je možno pracovat přímo ze serveru a nebo si vytvořit lokální repliku do Nomadu a ta je replikována se serverem databáze je možno používat tak jak jsou a nebo si je upravit specificky pro Nomad s ohledem na dotykové ovládání prostřednictvím fotoaparátu zařízení je možné do rich-textového pole ukládat nafocené obrázky Odkazy:

Spring Boot: Startup init through @PostConstruct

There are frequent situations when application requires running custom code while starting up. There are several ways how to do it in Spring Boot, one of my favorites is to create @Component class with method annotated with @PostConstruct . This simple component class is scanned during Spring Boot application start and method annotated by @PostConstruct is run just after all services initialized. Such startup init component can inject / autowire custom managed services and use them for initialization. This way we can, for example, inject Spring Data repository and do some data initialization in our application. The following code example is minimum class skeleton for our startup init class.

HCL Domino/Notes 12 Beta2 - 2. čast

V minulém příspěvku jsme zmiňovali základní novinky z připravované HCL Notes verze 12. K některým z nich se nyní vrátíme s dalšími komentáři. rychlost – obecné subjektivní zrychlení se týká uživatelského rozhraní, přepínání mezi různými částmi systému a především pak v Notes Designerovi. Tyto změny však nicméně nemají vliv např. na rychlost práce s objemnými databázemi atp. generování SSL certifikátů – HCL Domino získalo možnost generování SSL certifikátů přes službu Let’s Encrypt . Ta umožňuje prostřednictvím API tuto tvorbu automatizovat a začlenit ji do jiných systémů. Služba není zpoplatněna a tak je její využití velmi výhodné. Certifikáty vydávané přes Let’s Encrypt mají platnost 3 měsíce, ale díky automatické obnově toto není problem.

HCL Domino/Notes 12 Beta2 - 1. čast

Již od minulého roku HCL aktivně pracuje na nové verzi systému Domino/Notes s číslem 12. Dle plánu vycházejí jednotlivé betaverze, objevují se tak opravy chyb a nové vlastnosti. Z připravovaných změn lze zmínit několik zajímavých: Vizuální změny – pracovní plocha opět doznala vizuální změny a obdržela zcela nový styl organizace záložek. Změny se taktéž dočkal design některých systémových databází. Zrychlení odezvy systému – v ukázce na stejném stroji startovala verze R11 cca. 20 vteřin, R12 pak jen 4. Pozitivní odezva je i od prvních testerů z řad partnerů, kteří výrazné zrychlení ve startu klienta a jeho další práci taktéž pozorují. Významné zrychlení pozorujeme i v Domino Designerovi při úpravě rozsáhlejších databází, vše se nám jeví možná až 3x rychlejší.

Spring Boot: Running my app as Windows service

We know that we can run Spring Boot apps packaged as WAR files under Java application servers like Apache Tomcat. But we can even avoid such application server and run Spring Boot app directly. For this purpose we just need to build application as JAR file. Such JAR file can be run as an any other Java application by simply calling from console: ‘java -jar our-app.jar’ . That’s nice for testing purposes but for production environment we need to run this in some kind of service mode. On CentOS 7, for example, we know about systemd config files that define service to run.

Spring Boot: Running Grafana inside my app

Grafana states as ‘The open platform for beautiful analytics and monitoring’ and ‘The leading open source software for time series analytics’. Grafana is largely used system for visualizing numerical data. It does it’s job in great (and nice) way. What’s the problem we are trying to solve here? Reporting and data visualization makes sense in global perspective(big boss view) but also in a scenario of particular user reviewing just his/here own data. By ‘his/here’ data we can imagine own leads, accounts, tasks, issues, projects and many more. For this purpose we would appreciate running Grafana in a mode it knows details about currently logged user into our custom application(e.

Spring Boot: Webjars — bundle your favourite JS library easily

Probably every web application depends on some JavaScript library on CSS file. We have our own such files, but many are third party coming from other developers. Shared knowledge is nice. To include such third party library usually means to find the proper version, download it, unpack it and extract meaningful parts and put it inside out application structure. No way with web jars! To bundle JS/CSS libraries similar way how we include java libraries into Spring Boot project, we can easily reference them inside build.gradle file (we are talking about Gradle based Spring Boot projects here, maven is quite similar).

Spring Boot: Caddy as a reverse proxy for my app

We used to work with HAproxy as a reverse proxy for our solutions for a long time. Recently we switched to Caddy, and post is rather reminder to myself. Caddy is, using its own words, “HTTP/2 web server with automatic HTTPS.” Caddy is really the web server, but also contains many modules for very specific usage. And one of these is ‘proxy module’ … that states as a reverse proxy for other solutions. We usually run our SpringBoot apps under Apache Tomcat deployed as war archives. We can expose Tomcat directly to internet or run it behind reverse proxy. And this is what we use Caddy for.

Spring Boot: Talking to Elasticsearch through JEST (REST api)

If you use Spring Boot with some database you are probably quite familiar with Spring Data project. This way we can use many database systems very standardized way. It includes Elasticsearch using Spring Data Elasticsearch project. Spring Data Elasticsearch talks to ES server using native port and there are situations when we may prefer using REST api here. And if we are in such situation, Jest library comes to rescue. Jest is a Java HTTP Rest client for ElasticSearch and its API is very nice and straightforward. To use it in our Spring Boot application (assuming we have Gradle based app) we simply include …