Notice: This Wiki is now read only and edits are no longer possible. Please see: https://gitlab.eclipse.org/eclipsefdn/helpdesk/-/wikis/Wiki-shutdown-plan for the plan.
Difference between revisions of "EclipseLink/Examples/MOXy/MOXy JSON Provider"
< EclipseLink | Examples | MOXy
Line 80: | Line 80: | ||
===WEB-INF/web.xml=== | ===WEB-INF/web.xml=== | ||
− | |||
− | |||
A web.xml file is used to configure the Application class: | A web.xml file is used to configure the Application class: | ||
+ | <div style="width:850px"> | ||
+ | <source lang="xml"> | ||
<?xml version="1.0" encoding="UTF-8"?> | <?xml version="1.0" encoding="UTF-8"?> | ||
<web-app xmlns="http://java.sun.com/xml/ns/javaee" | <web-app xmlns="http://java.sun.com/xml/ns/javaee" |
Revision as of 16:17, 15 June 2012
MOXy JSON Provider
MOXy now includes an implementation (MOXyJsonProvider) that can be used directly or extended to make the integration even easier.
Using MOXyJsonProvider
Default Behaviour
You can use a JAX-RS Application class to specify that MOXyJsonProvider should be used with your JAX-RS application.
package org.example; import java.util.*; import javax.ws.rs.core.Application; import org.eclipse.persistence.jaxb.rs.MOXyJsonProvider; public class CustomerApplication extends Application { @Override public Set<Class<?>> getClasses() { HashSet<Class<?>> set = new HashSet<Class<?>>(2); set.add(MOXyJsonProvider.class); set.add(CustomerService.class); return set; } }
Configuration Options
You can also use a JAX-RS Application class to specify an instance of MOXyJsonProvider to be used with your JAX-RS application. This approach allows you customize the different configuration options offered by the MOXyJsonProvider.
package org.example; import java.util.*; import javax.ws.rs.core.Application; import org.eclipse.persistence.jaxb.rs.MOXyJsonProvider; public class CustomerApplication extends Application { @Override public Set<Class<?>> getClasses() { HashSet<Class<?>> set = new HashSet<Class<?>>(1); set.add(ExampleService.class); return set; } @Override public Set<Object> getSingletons() { MOXyJsonProvider moxyJsonProvider = new MOXyJsonProvider(); moxyJsonProvider.setAttributePrefix("@"); moxyJsonProvider.setFormattedOutput(true); moxyJsonProvider.setIncludeRoot(true); moxyJsonProvider.setMarshalEmptyCollections(false); moxyJsonProvider.setValueWrapper("$"); Map<String, String> namespacePrefixMapper = new HashMap<String, String>(1); namespacePrefixMapper.put("http://www.example.org/customer", "cust"); moxyJsonProvider.setNamespacePrefixMapper(namespacePrefixMapper); moxyJsonProvider.setNamespaceSeparator(':'); HashSet<Object> set = new HashSet<Object>(1); set.add(moxyJsonProvider); return set; } }
WEB-INF/web.xml
A web.xml file is used to configure the Application class:
<?xml version="1.0" encoding="UTF-8"?> <web-app xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"> <servlet> <servlet-name>Jersey Web Application</servlet-name> <servlet-class>com.sun.jersey.spi.container.servlet.ServletContainer </servlet-class> <load-on-startup>1</load-on-startup> <init-param> <param-name>javax.ws.rs.Application</param-name> <param-value>org.example.CustomerApplication</param-value> </init-param> </servlet> <servlet-mapping> <servlet-name>Jersey Web Application</servlet-name> <url-pattern>/rest/*</url-pattern> </servlet-mapping> <persistence-context-ref> <persistence-context-ref-name>persistence/em</persistence-context-ref-name> <persistence-unit-name>CustomerService</persistence-unit-name> </persistence-context-ref> </web-app>