[jbosstools-issues] [JBoss JIRA] (JBIDE-25303) Server adapter: support hot-deployment on OpenShift for SpringBoot app

Rob Stryker (JIRA) issues at jboss.org
Fri Dec 15 11:09:00 EST 2017


    [ https://issues.jboss.org/browse/JBIDE-25303?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13506309#comment-13506309 ] 

Rob Stryker commented on JBIDE-25303:
-------------------------------------

'Mark as deployable' will basically copy the entire folder or project you've selected, including any and all subfolders, exactly as-is. It will not ignore the src folders and just send the classes. It will copy the project exactly as it is structured in the project filesystem. It probably won't work for what you're trying to do. 

My opinion is as follows:  Either the project needs to be configured to make a properly formed slim jar, and let the server adapter somehow turn it into the fat jar (or send it to openshift for openshift to redeploy into a new fat jar), or, the project needs to be configured to create a fat jar itself. 

Option 1 is easily accomplished by adding a maven configurator, which adds a utility facet and whatever default mappings are required. However, the problem then becomes how to get this data up into openshift, since openshift has already built the fat jar out of the initial slim jar, and no longer has a way to deal with the slim jar structure. 

Option 2, in my opinion, is probably very difficult. Without a huge amount of work, the odds of webtools being able to generate a fat jar is probably very small, without a huge amount of work. 

I'm still a bit confused (as I've always been) about the idea of structuring the project into a pseudo-fat-jar-without-all-the-spring-pieces. This seems very strange to me. We're then not making a fat jar, and we're not making a slim jar. We're making some bastard hybrid. 

If I had to make a choice right now, I'd suggest you always make the project structured to create a slim jar. The server adapter should then manipulate the output how it wants to make sure it gets rsync'd properly. However, even this structure still requires a maven configurator to install the utility facet and make sure the slim jar is properly generated. 

> Server adapter: support hot-deployment on OpenShift for SpringBoot app
> ----------------------------------------------------------------------
>
>                 Key: JBIDE-25303
>                 URL: https://issues.jboss.org/browse/JBIDE-25303
>             Project: Tools (JBoss Tools)
>          Issue Type: Feature Request
>          Components: openshift
>    Affects Versions: 4.5.1.Final
>            Reporter: Aurélien Pupier
>            Assignee: Andre Dietisheim
>              Labels: openshift_v3, server_adapter
>             Fix For: 4.5.2.AM3
>
>         Attachments: fuse-on-openshift.zip, project-deployment-assembly.png, spring-boot-demo.zip
>
>
> currently, Springboot jar projects (such as Fuse Integration Services) are rsynced with a zipped jar file.
> The requirements are:
> - rsync unpacked jar
> - rsync without the jar name as folder
> - it will will work only if springboot devtool are included (so maybe need some dialog guiding user to do i in case it is not activated)
> use case "Develop SpringBoot application deployed on OpenShift as any other applications in JBoss Tools":
> - there is a SpringBoot app deployed on OpenShift
> - the developer want to develop evolution of the SpringBoot app
> -- when he/she modifies the project, the application needs to be automatically updated on OpenShift instance
> -- Remote java debug should be available when the OpenShift server adapter is in debug mode.
> Steps:
> # EXEC: create a project in your OpenShift server (ex. camel-ose-springboot)
> # EXEC: Import project within fuse-on-openshift.zip into your workspace
> # EXEC: open launch configuration and change: 
>    ** -Dkubernetes.master= so that it first your cdk instance
>    ** -Dkubernetes.namespace= to the name of the project that you create in step 1.
> # EXEC: run the launch config (that is included in the project), so that the project gets deployed to OpenShift (cdk)
> # ASSERT: your project in OpenShift now contains a service **camel-ose-springboot-xml**, the pod for it is running.
> # EXEC: in OpenShift Explorer: select this service and create a server adapter for it (*Server Adapter..* in the context menu for the service)
> # ASSERT: server adapter is created and is *[started]*
> # EXEC: in OpenShift Explorer: pick *Pod Log...* in the context menu for the pod of your service)
> # ASSERT: pod log is opened in "Console" view and shows an output with random numbers in the end 
> {code}
> simple-route - >>> 455
> simple-route - >>> 695
> simple-route - >>> 935
> {code}
> # EXEC: In Project Explorer: open class MyTransformer and change the transform method
> # ASSERT: "Console" view is opened and shows how the server adapter is publishing the MyTransformer class to the pod



--
This message was sent by Atlassian JIRA
(v7.5.0#75005)



More information about the jbosstools-issues mailing list