SAP NetWeaver Cloud developers can now join the rebellion against Java Redeploys
ZeroTurnaround, the creative minds behind the Jolt-and-many-other-awards winning JRebel productivity tool, have taken a very special mission – to enable Java developers to break up with the application builds and redeploys. The tedious experience of building, transporting and redeploying Java applications is under heavy pressure to shrink to essentially… zero. Starting today – this rebellion has expanded also on SAP NetWeaver Cloud territory.
Rapid Application Development
I myself am fully convinced that seeing the results of just-developed code in real time will inevitably change the way how people develop software in Java. SAP NetWeaver Cloud on its own is an illustration how software can be delivered on a bi-weekly schedule. Joining the ZT-lead redeploy rebellion nicely complements the mission it has gotten from SAP’s CTO Vishal Sikka during SAP TechEd 2012 technical keynote in Madrid:
“You [Developers] focus on your cloud application, we [SAP] will do the rest!”
Of course on our side we take those goals very seriously. Only 2 weeks have passed since Matthias Steiner published his thoughts on what would be the right direction to invest in for organization aiming at higher productivity. His message is that huge productivity boost is achieved not by making click-around tools for very narrow set of scenarios, but by providing Developers with efficiency tools, which take care about all the needlessly boring and highly repetitive time-wasting day-to-day tasks. His article became one of the most viewed pages on SCN, accumulating close to 30K visitors in the course of it’s 2 weeks of existence. This is only to confirm a suspicion we were having – that developers are actually interested in SAP NetWeaver Cloud. I believe that JRebel Hotpatching Technology at developers’ fingertips greatly supports and complements all of that.
Open Source and Open Standards – why mention that here?
Our Chief Product Owner Harald Mueller has explained during the SAP TechEd 2012 Madrid show that
“SAP NetWeaver Cloud application runtime is based on Eclipse Virgo server. In order to be successfull and evolve the technology forward, SAP is actively contributing and closely working with the Virgo community.”
For those of you who have followed JRebel releases more closely – there is a very modest, almost invisible, but at the same time – critically essential part of the JRebel 5.1.1 release notes from earlier this week. It states the following:
Added support for Virgo 3.6
No big deal, some will say… I’m sure you’ve already connected the dots, right? Although minor looking – this one single release notes line plays a central role and I believe – sits in the base of JRebel integration with SAP NetWeaver Cloud. I don’t think I need to emphasize more on how critical to the success of a our development platform is the use of well established and proven OpenSource technologies.
Skeptics kicking in right away
“But wait a minute” some would say. “Doesn’t Hotspot JVM already support hot code replacement during debugging? So why not just use that (it’s for free after all, right)?”. Well – no! Here are some details on what features are supported on both ends, leaving it up to developers to be creative and figure out what productivity gains can now be accomplished.
Another prominent group of skeptics will inevitably raise the concern about reliability – will hotpatching work in all cases? As Mathias has outlined as well – silver bullets are nice, but unfortunately – also quite rare. You can take a look at the JRebel set of supported frameworks. In case your favorite one is not included (Come on! Admit it! Did you build it yourself and never gave it to anybody or what?) – you are still free to go back to the “redeploys kingdom”.
Early adopters are more than welcome
Setting up the environment seems to be non-trivial, however once achieved – the same frame can be used to JRebel-enable any application deployed to the cloud.
What doesn’t seem to be explained too much is how to actually get the JRebel Eclipse tools in place. I believe this is due to the fact that setting up JRebel Eclipse plugins is already well described in all possible details as part of the official JRebel product documentation. Just don’t forget to read carefully the How-to: Setting up JRebel wiht SAP NetWeaver Cloud to the end. Missing some of the final steps there will cost you lots of time and confusion.
I’ll blog in the next days about my own end-to-end experience in using JRebel on SAP NetWeaver Cloud – stay tuned!
Try It Out!
At the end – I feel obliged to remind again what we’ve been telling over and over again during all the 3 TechEd events in the course of the last 2 months: For every single feature of SAP NetWeaver Cloud – we constantly urge you to try it out and share your feedback. I admire the fact that the ZeroTurnaround team behind JRebel has adopted the same practice and is seeking to actively engage and get feedback from the developers’ community.
As Toomas Römer has outlined in his blog yesterday – the current SAP NetWeaver Cloud integration is in an early stage and is still not part of any official JRebel release. Both the tools and the server-side integration are accessible via the ZeroTurnaround early-access channel.
The obvious benefit of that approach is that it allows any user to:
- get a JRebel free trial license,
- follow the setup instructions here and here,
- experience the productivity gain on a SAP NetWeaver Cloud TRIAL account
- provide feedback back to ZeroTurnaround.
We’ll of course would be extremely happy if you also share your experience on our Cloud Developer Center discussion forum
After looking closer at JRebel release schedule – SAP NetWeaver Cloud will (probably) be supported in the final JRebel 5.1.2, which will (hopefully) come right around Christmas. An amazing Christmas present for the SAP NetWeaver Cloud developers’ community. I’m looking forward to see the release notes of this one. 😉
To ZT: Keep on rocking guys! Your fan club just increased with some new members 🙂 .
Great blog Krassi! Easy to read, but full of links and background info!
I just know developers will love the productivity kick they'll gain via JRebel.
Keep rockin' !!!
Thanks for the warm words Matthias! It's an amazing work that the ZeroTurnaround folks have done. I'm sure developers will love JRebel as once you get used to it - turning back to tideous deploy experience is a pain.
You should try it out yourself! I highly recommend it!
If drastically reduced turn-around times are not enough to convince you to give it a try... maybe this will? 😉
http://zeroturnaround.com/software/jrebel/jrebelrocks/
Hi Krassi,
Thanks for sharing this! I managed to make it running and it really rocks!
However I had some hard times until I saw it working. I’ll share my experience here, so that other guys do not fight the same issues again and again. Guess the tutorial can be extended as well.
No other issues and my app is being updated with new classes and methods in milliseconds 🙂
Great job guys! Thanks for this.
Cheers,
Vesselin
Very cool! Thanks for sharing this with the community.
Rui
Sensational! Supported!
Guys, I need your help. I cannot make it work. I did all the steps, paid special attention to Vesselin's comments, but still get one error that I cannot understand:
Connecting to https://XXXXXXtrial.hanatrial.ondemand.com/xxxxxxxx/
Security is not enabled
Sending Transaction command: begin
Opening connection to https://XXXXXXtrial.hanatrial.ondemand.com/xxxxxxxx/
Using proxy server proxy.wdf.sap.corp:8080
Using username and password: XXXXXX
Response headers: [x-rebel-response: ERR_SAP_CONNECTION, x-rebel-responseMessage: Error connecting to sap server: null, Content-Length: 0, Date: Thu, 15 Aug 2013 13:27:39 GMT, Server: SAP]
Content length: 0
Server responded with an error: Error connecting to sap server: null
com.zeroturnaround.jrebel.remoting.RemotingException: Server responded with an error: Error connecting to sap server: null
at com.zeroturnaround.jrebel.remoting.Transaction.begin(Transaction.java:122)
at org.zeroturnaround.eclipse.jrebel.remoting.builder.RemotingSyncPerformer.initSynchronization(RemotingSyncPerformer.java:56)
at org.zeroturnaround.eclipse.jrebel.remoting.builder.RemotingBuilder.synchronizeProject(RemotingBuilder.java:53)
at org.zeroturnaround.eclipse.jrebel.remoting.builder.RemotingBuilder.build(RemotingBuilder.java:30)
at org.eclipse.core.internal.events.BuildManager$2.run(BuildManager.java:726)
at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:42)
at org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:199)
at org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:239)
at org.eclipse.core.internal.events.BuildManager$1.run(BuildManager.java:292)
at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:42)
at org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:295)
at org.eclipse.core.internal.events.BuildManager.basicBuildLoop(BuildManager.java:351)
at org.eclipse.core.internal.events.BuildManager.build(BuildManager.java:374)
at org.eclipse.core.internal.events.AutoBuildJob.doBuild(AutoBuildJob.java:143)
at org.eclipse.core.internal.events.AutoBuildJob.run(AutoBuildJob.java:241)
at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53)
Ivan
Hi Ivan and @all others colleagues,
At first thanks for sharing such valuable knowledge.
Hope I'm not too late there) Did you manage this issue ? Looks like I have some similar issue but i's most related to the AUTH problem(Server responded with an error:ERR_SAP_AUTH_REQUIRED[ERR_SAP_AUTH_REQUIRED]). Here is my log:
2015-11-04 12:05:04.343 TRACE [Remoting:scn-moderation-api-web] [pool-8-thread-1] Connecting to https://saphcphelloactivitystreamdev.neo.ondemand.com/
2015-11-04 12:05:04.343 DEBUG [Remoting:scn-moderation-api-web] [pool-8-thread-1] Using security
2015-11-04 12:05:04.343 DEBUG [Remoting:scn-moderation-api-web] [pool-8-thread-1] Public key: 30818902818100b25bf1b9157209259a440c4d09d08b1aa072f18993652cbc42f138afd9708a5996e352ccb870ce093d08419efc6f5c60037c0f40d84914305a797bf9a98aab33a8a8a695a1c94a66d77a5db0ce10a4bfd39b67c295fad1b0bd0a03aeab3441c0d28f4367a8eb1785a9b2e5f0bfb0ded94f0ead5bc3d3a23f7f2c36666963160b0203010001
2015-11-04 12:05:04.343 DEBUG [Remoting:scn-moderation-api-web] [pool-8-thread-1] Performing handshake
2015-11-04 12:05:04.346 DEBUG [Remoting:scn-moderation-api-web] [pool-8-thread-1] Opening connection to https://saphcphelloactivitystreamdev.neo.ondemand.com/
2015-11-04 12:05:04.346 DEBUG [Remoting:scn-moderation-api-web] [pool-8-thread-1] Using proxy server proxy.wdf.sap.corp:8080
2015-11-04 12:05:04.388 DEBUG [Remoting:scn-moderation-api-web] [pool-8-thread-1] Response headers: [x-rebel-response: HANDSHAKE_OK, x-rebel-key: 94b8200dfeea8f5cccff364b07a12f3f526d91192bf69aaf02ea9aa56227494be70dbfc481b86433a05aacb04f494fc36ad6eac2e99f24e0190c0514d2d46b75f638af9b68291a1dfc80762dd6674d2af8194d1a2630734ebfd78c1cedd5c7cd451fc902eee7e31d91c142ce0de7ea3c08a473e341ae4bb6a5b30a97993cf406, Content-Length: 0, Date: Wed, 04 Nov 2015 09:05:04 GMT, Server: SAP, Strict-Transport-Security: max-age=31536000; includeSubDomains; preload]
2015-11-04 12:05:04.388 DEBUG [Remoting:scn-moderation-api-web] [pool-8-thread-1] Response code: 200
2015-11-04 12:05:04.391 DEBUG [Remoting:scn-moderation-api-web] [pool-8-thread-1] Handshake successful
2015-11-04 12:05:04.391 DEBUG [Remoting:scn-moderation-api-web] [pool-8-thread-1] Sending Transaction command: begin
2015-11-04 12:05:04.396 DEBUG [IdeCommon] [pool-8-thread-1] JVMUtil.findJavaExecutable() vmInstallLocation=E:\applications\IntelliJ IDEA Community Edition 14.1.3\jre\jre
2015-11-04 12:05:04.397 DEBUG [Remoting:scn-moderation-api-web] [pool-8-thread-1] Opening connection to https://saphcphelloactivitystreamdev.neo.ondemand.com/
2015-11-04 12:05:04.397 DEBUG [Remoting:scn-moderation-api-web] [pool-8-thread-1] Using proxy server proxy.wdf.sap.corp:8080
2015-11-04 12:05:04.423 DEBUG [Remoting:scn-moderation-api-web] [pool-8-thread-1] Response headers: [x-rebel-headers: d98b7470f114d742e72456fce2606a7a8ea92507ac53521e67d2cd6465840d69bc1f751799eb7d1bded67652912ba556f3518fa56213eb708c4ffc5a08e61a1a9a6ad7b17b5c09247b024229c0d678dfb7d3dbc89360a1db5d77447373f5b3825ae0ae1ecb895e2e68f31da767d1709d78fa4dca55403723b16d7f05b1a795150e24092b061667233dc2df51b6765c64d0f0dc6d9af0a0da8d9ec429b8a966ca1866a53c3cb390a49c8475bde745b960cf1213070d08451c14328092eb6c371f4e71bed11f74575d1d20585368fdc30d, Content-Length: 0, Date: Wed, 04 Nov 2015 09:05:04 GMT, Server: SAP, Strict-Transport-Security: max-age=31536000; includeSubDomains; preload]
2015-11-04 12:05:04.423 DEBUG [Remoting:scn-moderation-api-web] [pool-8-thread-1] Response code: 200
2015-11-04 12:05:04.423 DEBUG [Remoting:scn-moderation-api-web] [pool-8-thread-1] Content length: 0
2015-11-04 12:05:04.423 DEBUG [Remoting:scn-moderation-api-web] [pool-8-thread-1] Raw Headers: {date=Wed, 04 Nov 2015 09:05:04 GMT, content-length=0, server=SAP, x-rebel-headers=d98b7470f114d742e72456fce2606a7a8ea92507ac53521e67d2cd6465840d69bc1f751799eb7d1bded67652912ba556f3518fa56213eb708c4ffc5a08e61a1a9a6ad7b17b5c09247b024229c0d678dfb7d3dbc89360a1db5d77447373f5b3825ae0ae1ecb895e2e68f31da767d1709d78fa4dca55403723b16d7f05b1a795150e24092b061667233dc2df51b6765c64d0f0dc6d9af0a0da8d9ec429b8a966ca1866a53c3cb390a49c8475bde745b960cf1213070d08451c14328092eb6c371f4e71bed11f74575d1d20585368fdc30d, strict-transport-security=max-age=31536000; includeSubDomains; preload}
2015-11-04 12:05:04.423 DEBUG [Remoting:scn-moderation-api-web] [pool-8-thread-1] Decrypted Headers: {x-rebel-response=ERR_SAP_AUTH_REQUIRED, www-authenticate=Basic realm="JRebel Remoting Access"}
2015-11-04 12:05:04.423 ERROR [Remoting:scn-moderation-api-web] [pool-8-thread-1] Server responded with an error:ERR_SAP_AUTH_REQUIRED[ERR_SAP_AUTH_REQUIRED]
2015-11-04 12:05:04.424 ERROR [Remoting:scn-moderation-api-web] [pool-8-thread-1] [6.2.2 (201507291221) legacy|IC-141.1010] com.zeroturnaround.jrebel.remoting.RemotingException: Unknown response.
at com.zeroturnaround.jrebel.remoting.Transaction.begin(JRebelRemoting:144)
at com.zeroturnaround.javarebel.idea.plugin.remoting.RemotingEngine.synchronize(RemotingEngine.java:297)
at com.zeroturnaround.javarebel.idea.plugin.remoting.RemotingEngine.access$800(RemotingEngine.java:39)
at com.zeroturnaround.javarebel.idea.plugin.remoting.RemotingEngine$4.run(RemotingEngine.java:268)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at java.lang.Thread.run(Thread.java:745)
2015-11-04 12:05:04.424 DEBUG [Remoting:scn-moderation-api-web] [pool-8-thread-1] [6.2.2 (201507291221) legacy|IC-141.1010] com.zeroturnaround.jrebel.remoting.RemotingException: Unknown response.
at com.zeroturnaround.jrebel.remoting.Transaction.begin(JRebelRemoting:144)
at com.zeroturnaround.javarebel.idea.plugin.remoting.RemotingEngine.synchronize(RemotingEngine.java:297)
at com.zeroturnaround.javarebel.idea.plugin.remoting.RemotingEngine.access$800(RemotingEngine.java:39)
at com.zeroturnaround.javarebel.idea.plugin.remoting.RemotingEngine$4.run(RemotingEngine.java:268)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at java.lang.Thread.run(Thread.java:745)
In case if anyone managed to resolve it feel free to share the solution with me.
Thanks in advance, Dzmitry.
Resolved it by removing -DsapAuthentification vm property. Nevermind.