How to build and deploy Spring Boot no-web app to TomEE? - spring-boot

I have a simple Spring Boot JMS app like this. It have no web-layer and I don't want to add web layer to that app. It should be just one JMS microservice, hidden from web.
But I want to run it inside TomEE (as EJB or something). How can I do it?

you can deploy your app as an ear without any webmodule. Alternatively you can deploy it to openejb-standalone instead of tomee.

Related

Is there a way I can integrate the spring boot application jar to another servlet application?

I have created a spring boot application with a few endpoints and want to make that endpoint to the existing servlet application without deploying it separately. So I want to create a jar from the spring boot app and use that jar in the servlet project. How can this be done? Any suggestion would be really helpful.

Spring boot webservice to start and be discoverable when JBOSS EAP starts

We need to create independent spring boot web services for our apps which runs in JBOSS EAP. Can we do the below if its possible.
Spring Boot is typically deployed as a runnable jar but our apps are EAR deployed. Can we bootstrap / launch the spring boot listener / controller when the EAR application starts)
Can we register the services on start to facilitate automated discoverability of services (typically done with consul/ etcd/ zookeeper etc)
You can generate a WAR instead of a JAR and deploy this. If this is not ok you can put the WAR in an EAR
Read the docs: https://docs.spring.io/spring-boot/docs/current/reference/html/howto-traditional-deployment.html
Yes. If you have a service registry in place you can use this with Spring Cloud.
Please read the documentation:
https://spring.io/guides/gs/service-registration-and-discovery/

Cloud Foundry : Spring boot vs WAR file

I am new to the world of Cloud, CloudFoundry, Saas, PaaS, IaaS, etc.
So I have few very fundamental questions.
Who is better Spring boot or war file in terms of deploying an application or a service to a cloud using cloud foundry?
WHY ?
If I want to deploy my war file on a PaaS cloud then who kicks it off?
As in where is the server?
How will I know which server my war file is deployed to?
Is using Spring-boot with embeded tomcat for PaaS mandatory?
What if my application does not use spring-boot (no spring reference in pom as well) then can I deploy my application war file on cloud? How?
There is nothing like better in war or Spring boot jar. They both are underhood same things, where Spring boot jar manages the server embedded in it and war does not have that.
Cloud Foundry has something like BuildPacks. You need to define a buildpack when you do a cf push. If you select a java build pack it has the things required to run a war on server. It gets the Java, Tomcat Server and all other dependencies needed to run the war.
https://github.com/cloudfoundry/java-buildpack
Cloud foundry creates a droplet, which is basically the execution context with all required dependencies. This is used to run the actual VM on the cloud.
You need not know which server your war is deployed to. That is the basic idea behind the cloud deployment. It may be on a single/multiple VMs under the hood. So what you need to know is something called routes. Routes are the actual addresses to your apps. You need to create routes and bind them to your application, and later app can be accessed using the routes.
https://docs.cloudfoundry.org/devguide/deploy-apps/routes-domains.html#routes
No using embedded servers is not mandatory in Any Cloud PAAS. War can be directly deployed. All PAAS platforms has support for this. Cloud foundry way of doing this is through build packs.
CF : https://docs.cloudfoundry.org/buildpacks/
Heroku : https://devcenter.heroku.com/articles/java-webapp-runner
Any application/ non spring apps which is plain war or jar can be used to run on PAAS platforms.

UI application in Pivotal Cloud Foundry

I have a UI application built using Angular , Bootstrap and HTML5 which interacts with number of backend services. In order to deploy this application in PCF , should this be converted to a Spring Boot app? Or is there a way to use any of available buildpacks to deploy this UI app in PCF?
In case there is no need to deploy backend services, I would go with the cloudfoundry static buildpack.
http://docs.cloudfoundry.org/buildpacks/staticfile/index.html
Otherwise you will need to decide how you are going to deploy the backend services for this application. There are a number of buildpacks available that could be used for deploying the backend services and delivering the frontend content within the same app (one of them being, as you mentioned the java buildpack that can be used to deploy a spring boot app). Here is a list of available buildpacks:
http://docs.cloudfoundry.org/buildpacks/
Its not needed to convert your application to spring boot, but doing so will definitely make life easier for you, trust me. Once u convert ur app to a spring boot right, you can remote debug ur application by jst running ur app as a spring boot app.

How to integrate Spring application with Mule ESB

I want to integrate my spring (3.0) application with Mule ESB (Mule3) and make available those service for different clients (.Net, GWT etc). For accomplish this, whether I should deploy my Spring application as separate component and define Endpoint on Mule or I can deploy my spring application inside the Mule and provide those services to outside clients. If anyone know some ideas or any sample reference projects related to this problem, can please update me. Thanks.
I would recommend integrating Mule into your Spring application. That is, adding the Mule jar files to your app and using it as a library. Doing it this way Mule adds a child context to your main Spring application context and has access to your beans so they can be used as services.
The Using Mule with Spring and Spring Application Contexts pages are the places to start learning about how to do this.

Resources