Redeploy '''student.web''' and create the sample Student again as shown above (but this time, use '''student-name''' in your JSON input). Now, when you run the '''findAll''' query again, you will see the modified JSON/XML format:

Overview

The following steps will be performed in setting up and running this example in your own environment:

Installation & Configuration

Install GlassFish 3.1.2.2

Check out student example from GIT

Database connectivity

GlassFish - Datasource configuration

Verify config

Deploy web application

Running the Example

View metadata

Create entity

Update entity

Query entity

Switch between XML and JSON

Customize XML/JSON representation using MOXy Bindings

Delete entity

Installation and Configuration

Download EclipseLink 2.4.2

Download EclipseLink 2.4.2 binaries from 2.4.2 Nightly Builds and replace the following files under $GLASSFISH_HOME/glassfish/modules with the corresponding jars you downloaded:

javax.persistence.jar

org.eclipse.persistence.antlr.jar

org.eclipse.persistence.asm.jar

org.eclipse.persistence.core.jar

org.eclipse.persistence.dbws.jar

org.eclipse.persistence.jpa.jar

org.eclipse.persistence.jpa.jpql.jar

org.eclipse.persistence.jpa.modelgen.jar

org.eclipse.persistence.moxy.jar

org.eclipse.persistence.oracle.jar

Make sure you clear the GlassFish osgi cache by removing the $GLASSFISH_HOME\glassfish\domains\<your_domain>\osgi-cache directory after you have replaced the bundles listed above, and before you restart GlassFish.

Note: If you want to see JPA-RS logs, add a logger for org.eclipse.persistence.jpars. Currently exceptions are logged at "FINER" log level, so configure the logger to FINER or FINEST. Use GlassFish Admin Console > Configurations > default-config > Logger Settings > Log Levels tab > Add Logger to add a logger for JPA-RS.

Clone examples from GIT

Configure a Datasource

Create an XA Datasource connection pool called JPARSStudentDS and define a new JDBC Resource using this connection pool. You can use any of the databases supported by EclipseLink. Your database driver should be placed under $GLASSFISH_HOME/glassfish/domains/<your_domain_folder>/lib/ext. Use the "Additional Properties" tab (shown below) to specify the database URL, User and Password (and any other mandatory properties that your database requires).

Enter domain directory, admin name and password based on your installation and hit Finish.

Deploy student.web

Right click on GlassFish (on the Servers tab), choose "Add and Remove", and select student.web in the available resources list. Hit Add and Finish.

You are now ready to run the example.

Running the Example

Launch Chrome and Postman

Please see Creating and sending requests using Postman if you are not familiar with creating and sending REST requests using Postman. If you are using another tool to construct REST requests, please make sure you set Accept header correctly. The Accept header is used by HTTP clients to tell the server what content types they'll accept. The server will then send back a response, which will include a Content-Type header telling the client what the content type of the returned content actually is. HTTP requests can also contain Content-Type headers. With POST or PUT requests, the client sends data to the server as part of the request, and the Content-Type header tells the server what the data actually is (and thus determines how the server will parse it). JPA-RS accepts application/json and application/xml and for now we will focus on JSON.

This will specify that the JSON/XML mappings for your JPA entity should be overridden by the mapping metadata in the MOXy bindings file. The bindings file changes element name of the Student'sname field to student-name. Additionally, it also changes the XML representation of name to be an XML attribute, instead of an element. The JSON representation shows a key named student-name, as attributes and elements are treated the same in JSON.

Redeploy student.web and create the sample Student again as shown above (but this time, use student-name in your JSON input). Now, when you run the findAll query again, you will see the modified JSON/XML format: