Skip to Content
Author's profile photo Brenton OCallaghan

Introducing JADS – A SAPUI5 Development Web Server

What is JADS

JADS is a by developers for developers light-weight web server designed to cater specifically for SAPUI5 development with OData proxying.

Background

I do quite a bit of work with SAPUI5/Fiori and web development and one of the challenges for every machine I work on is getting the environment setup – naturally every machine is slightly different so that can take some time but the basics never change – you will always need to:

– Be able to access a SAPUI5 installation (sometimes multiple)

– Be able to develop locally but proxy OData/REST calls to another server

– Be able to see web server logs when something is not quite right

JADS is not designed to be a production server but rather a local developer server where they can tweak these scenarios easily & quickly.

Where did JADS come from:

JADS was born out of an interest by me to try out Node.js, a lightweight runtime which is built on top of Chrome’s JavaScript run-time. I started to play with the framework on my commute over 2 days using the scenario of SAPUI5 development. Once I realized I was creating something that I might actually use on a daily basis I decided to get it to a stage where it worked and release it to the community.

Where is JADS now and where is it going

Right now, I am releasing JADS version 1 which works for standard web development and OData proxying to a SAP System. My next goals for features include:

– Specific support for the customization of SAP Fiori apps

– Pass-through of SAP Auth requests through the proxy to the client

– Adding a folder listing feature for directories

– Support for proxy PUT and POST requests (need to add the body payload)

I am open-sourcing the code behind JADS in the hope that if I have missed anything (guaranteed I have! 🙂 ), others can contribute to suit their scenarios. The JADS source can be found in my github repository https://github.com/bocallaghan/JADS

I hope this is useful for somebody else and any comments/suggestions are most welcome,

Brenton.

P.S. in case anybody is wondering – JADS = Just Another Development (web) Server

Assigned Tags

      14 Comments
      You must be Logged on to comment or reply to a post.
      Author's profile photo Midhun VP
      Midhun VP

      Great work Brenton. It will be really helpful to the developers. Very interesting.

      - Midhun VP

      Author's profile photo Brenton O'Callaghan
      Brenton O'Callaghan
      Blog Post Author

      Thanks Midhun! enjoy and shout if you have any comments!

      Author's profile photo vijaykumar ijeri
      vijaykumar ijeri

      Nice, Got goosebumps on reading. Specially "I started to play with the framework on my commute over 2 days using the scenario of SAPUI5 development. Once I realized I was creating something that I might actually use on a daily basis".

      Great work Brenton.

      Regards,

      Vijay

      Author's profile photo Brenton O'Callaghan
      Brenton O'Callaghan
      Blog Post Author

      Thanks Vijay!

      Oddly enough I find I do some of my best coding on my commute 😛 (weird I know!) Guess the passing scenery from the train is inspiring!

      Author's profile photo Jason Moors
      Jason Moors

      Thanks Brenton, will give a go, need to get away from my Tomcat comfort zone...

      Cheers,

      Jason

      Author's profile photo Jason Scott
      Jason Scott

      Nice little script Brenton - well done. I've noticed, however that instead of a 404 for a missing file it responds with a http500 for some reason... Any ideas?

      For example when you load a UI5 app you will always see those waste-of-time extra language resources file GET's. Normally they return a http404, but via your Node script its http500.

      Could be that the message bundle extensions are not in the supported mime types config: supportedMimeTypes. Will play around with it some more...

      Oh - just noticed it reports http500 for missing .js files as well instead of 404.

      Author's profile photo Brenton O'Callaghan
      Brenton O'Callaghan
      Blog Post Author

      Hey Jason,

      Thanks for replying - nice spot on the "not found" issue. I added some extra error catching to the whole thing and it went a bit too over zealous 🙂

      Just pushed a change to the repo so if you pull that issue should be fixed now.

      If you find anything else please do shout, or if you have any input feel free to add a merge request.

      Thanks again,

      Brenton.

      Author's profile photo Jason Scott
      Jason Scott

      Cool, thanks Brenton. Will pull down the latest and take a look.

      As per Sascha's comment - it would be great if you could publish this as a node module (npmjs.org), then we could easily use it in other projects such as the yeoman generator for UI5.   😉

      Regards...

      Author's profile photo Jitendra Kansal
      Jitendra Kansal

      Great discovery... superb work Brenton

      Author's profile photo Brenton O'Callaghan
      Brenton O'Callaghan
      Blog Post Author

      Thanks Jitendra!

      Author's profile photo Sascha Kiefer
      Sascha Kiefer

      Hi Brenton,

      we're experimenting with our approach to add that to our yeoman OpenUI5 generator.

      Is there any chance, that you wrap JADS into a node module and publish it? That would make our lives tremendously easier, cause we would not have to add a copy to our repository.

      Cheers,

      Sascha

      Author's profile photo Brenton O'Callaghan
      Brenton O'Callaghan
      Blog Post Author

      Hey Sascha,

      Sounds like a great idea - I've not put together a module yet but I'll definitely have a look - i'll let you know if I make any progress on it!

      Thanks for the feedback,

      Brenton

      Author's profile photo Brenton O'Callaghan
      Brenton O'Callaghan
      Blog Post Author

      Hey Sascha & Jason,

      I have just updated JADS to made it more module friendly and published it as a module - so if you use "npm install jads" now it should work.

      Let me know if you have any other comments,

      Thanks,

      Brenton.

      Author's profile photo Jason Scott
      Jason Scott

      Nice one. I wrapped your original script as a grunt task as well... So if you're interested in using your script as part of a build process you might try grunt-jads. Installable like your new module with "npm install grunt-jads".

      I can send you a pull request for it if you want.

      Regards...