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

Andre Dietisheim (JIRA) issues at jboss.org
Wed Dec 6 12:27:04 EST 2017


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

Andre Dietisheim edited comment on JBIDE-25303 at 12/6/17 12:26 PM:
--------------------------------------------------------------------

[~aurelien.pupier] I tried to explain that in my [comment|https://issues.jboss.org/browse/JBIDE-25303?focusedCommentId=13497490&page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#comment-13497490]. The example fuse-on-openshift (as it is now once imported into Eclipse) compiles classes into <project>/target/classes, there is no BOOT-INF in it. On the other hand, the pod expects changed classes in <deployment-root>/BOOT-INF/classes. The BOOT-INF comes from the fact that it is unpacking the jar that it got from the fabric8-maven plugin. Both paths (project-, pod-) dont match. So the question is how to have the project to "package" classes into BOOT-INF/classes so that the adapter has the same path on both ends. [~rob.stryker] was suggeting the configuration in the "Deployment Assembly" that i pointed out above. He also mentioned that there are m2e-wtp bridges that could fullfill this.
[~jeffmaury] doesnt seem to agree on the assembly approach. To me the configuration for the "Deployment Assembly" does exactly that, it makes sure that the temp directory, that the server adapter syncs to the pod, has the correct structure with a BOOT-INF/classes.
[~rob.stryker] Toughts?



was (Author: adietish):
[~aurelien.pupier] I tried to explain that in my [comment|https://issues.jboss.org/browse/JBIDE-25303?focusedCommentId=13497490&page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#comment-13497490]. The example fuse-on-openshift (as it is now once imported into Eclipse) compiles classes into <project>/target/classes, there is no BOOT-INF in it. On the other hand, the pod expects changed classes in <deployment-root>/BOOT-INF/classes. The BOOT-INF comes from the fact that it is unpacking the jar that it got from the fabric8-maven plugin. Both paths (project-, pod-) dont match. So the question is how to have the project to "package" classes into BOOT-INF/classes so that the adapter has the same path on both ends. [~rob.stryker] was suggeting the configuration in the "Deployment Assembly" that i pointed out above. He also mentioned that there are m2e-wtp bridges that could fullfill this. [~jeffmaury] doesnt seem to agree on the assembly approach. To me the configuration for the "Deployment Assembly" does exactly that, it makes sure that the temp directory, that the server adapter syncs to the pod, has the correct structure with a BOOT-INF/classes.
[~rob.stryker] Toughts?


> 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.AM2
>
>         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