JSON4Jersey

From APIDesign

Jump to: navigation, search

The net.java.html.json has been primarily designed to run in a browser. However almost every application in a browser tries to communicate with some server. The application logic is then split into two distinct systems - yet certain parts of the code need to run on both sides (think about validation - prevalidate on client, re-validate on server, before database is modified). Can we use the same code in browser as well as on server?

Jersey Media HTML JSON

A new module has been donated to Jersey version 2.1. Just include it on your server own application path as

<dependency>
  <groupId>org.glassfish.jersey.media</groupId>
  <artifactId>html-json</artifactId>
  <version>2.6</version>
  <scope>runtime</scope>
</dependency>

and you can use classes generated by JSON4Brwsr's @Model annotation as Jersey entities. Here is a little demo for you to try:

$ hg clone https://hg.java.net/hg/html~demo
$ cd html~demo/chat/server/
$ mvn process-classes exec:java

The (Jersey and Grizzly based) server starts on port 8080. Just open your Chrome browser (there are some problems with Firefox and my use of XHR's POST method) and point it to http://localhost:8080. In a few seconds, you should see a chat application running via the Bck2Brwsr VM. The message is represented by a Message class and this class is the same on the server as well as in the browser. It is transmitted in a JSON format, but it can also contain additional (for example validation or presentation) logic.

Your Java code can now run on a server as well as get Bck2Brwsr!

Personal tools