• Post Reply Bookmark Topic Watch Topic
  • New Topic
programming forums Java Mobile Certification Databases Caching Books Engineering Micro Controllers OS Languages Paradigms IDEs Build Tools Frameworks Application Servers Open Source This Site Careers Other Pie Elite all forums
this forum made possible by our volunteer staff, including ...
Marshals:
  • Campbell Ritchie
  • Jeanne Boyarsky
  • Ron McLeod
  • Paul Clapham
  • Liutauras Vilda
Sheriffs:
  • paul wheaton
  • Rob Spoor
  • Devaka Cooray
Saloon Keepers:
  • Stephan van Hulst
  • Tim Holloway
  • Carey Brown
  • Frits Walraven
  • Tim Moores
Bartenders:
  • Mikalai Zaikin

Java Standalone Program to JSP communication

 
Greenhorn
Posts: 7
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator
The following programs exist: 1. I have a java application which accepts bio potential data every second or two and stores it in the database. This is a socket server which accepts this data from multiple clients and spawns a new thread for processing it to store in the db. 2. I have a jsp page on tomcat server which reads historic client data from database (stored by application 1) and displays it on the page.

The socket server program in 1.) above is not running inside of tomcat server.

The new requirement now is : Display all of the human data coming in live on the jsp page.

Now the problem: I will now need to pass the live data from socket server (which is stand alone) to the jsp which is running on a tomcat server.

Possible solutions:

APPROACH 1: Run the socket server in the tomcat instead of stand alone and store the frequently incoming data in a java object so the jsp can access this object every second and display it on a graph.

PROBLEM : The stand alone java application does not need to be included in a tomcat server except for the fact that the jsp needs access to the live data. Also, I have read that this is not the best way.

APPROACH 2: Expose the stand alone java application as a web service and communicate with the jsp using REST architecture.

PROBLEM : The complication of using this method is that it will not have the flexibility offered by websockets or server sent events (SSE) of auto updating the latest data. The jsp will have to keep polling for new data every one second which is also not a very good option.

I need suggestions on which is a better method for accomplishing my task. Or is there a third better way which I have completely missed.
 
Bartender
Posts: 3648
16
Android Mac OS X Firefox Browser Java
  • Likes 1
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator
Welcome to the Ranch.

Interesting problem you got.

For approach 1, when you say "run socket server in tomcat instead of stand-alone", do you mean inside the web app? If this was what you meant, then no, it is not practical.

About fetching data, doesn't the JSP always have the latest data from the database (eg up to the last record in the table at the time of the query)? Does the socket server and web app use the same database?

Lastly, is it realistic to update the output page every second? The JSP output I presume is user triggered, if such page is updated (refreshed) every second, the page would be flickering all the time!

I can suggest: Run the stand-alone socket server OUTSIDE tomcat container in the same (physical) server. Have the JSP page access the database used by socket server to get the data. (this would just be a configuration issue)

Hope this helps.
 
Rancher
Posts: 43081
77
  • Likes 1
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator
I concur with not integrating the socket server with the web app. In fact, they should be entirely decoupled (so no web service either) - data gathering and data display are unrelated issues. You want either activity to continue even if the other is shut down for some reason.

Display of live data calls for some AJAXy thing on the web page - I am certain there are jQuery plugins that not only display live data, but can also be configured to update it every so often. That also avoids what K. Tsang refers to as "flickering", because the page would not reload.

You need to specify what "live" means, though - obviously, real-time is not possible, there will always be a delay. So the question is how big a delay is acceptable - a maximum delay of 2 seconds might need other approaches than one of 60 seconds.
 
aparna bhogu
Greenhorn
Posts: 7
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator
Thank you K. Tsang and Ulf Dittmer. As you both rightly pointed out, I can make the JSP read the database directly rather than using the more complicated approaches I was thinking of. Thank you so much for pointing me in the right direction. Your responses have been most helpful.
 
Sheriff
Posts: 67746
173
Mac Mac OS X IntelliJ IDE jQuery TypeScript Java iOS
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator
Except, of course, that database reading should not be done in the JSPs. Be sure to structure your web app correctly.
 
aparna bhogu
Greenhorn
Posts: 7
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator
Thank you for pointing that out Bear Bibeault. Will keep that in mind.
 
reply
    Bookmark Topic Watch Topic
  • New Topic