Home eXo REST Services in eXoPlatform 4.X with Jersey Framework
formats

REST Services in eXoPlatform 4.X with Jersey Framework

Published on May 1, 2014, by in eXo.

Hello Open Source Gurus,
This blog is all about how to make web service in eXo platform using Jersey Framework.
Please find the list of things that you are going to need before implementation of web-services.

Prerequisites for Rest Services in eXoPlatform 4.0

  • eXo Platform 4.X
  • Maven configured

Please follow the below steps for execution of web service 

Step 1 : GoTo eclispe -> file -> new -> other

image1

Step 2 : type maven keyword and select maven project from select wizard and click on next.

image2

Step 3: mark the create simple project(skip archtype selection).

image3

Step 4 : Please fill out all the details as shown in image.

Note : packaging should be selected as war only.

image4

 

Step 5 : Now open your pom.xml and add eXo repository entry in it

<repositories>

<repository>

<id>repository.exoplatform.org</id>

<url>https://repository.exoplatform.org/public</url>

</repository>

</repositories>

 

Step 6 : Also add following dependencies in your pom.xml file.

           <properties>

                 <org.hibernate-version>3.5.6-Final</org.hibernate-version>

                             </properties>

<dependencies>

<!commons dependency>

               <dependency>

          <groupId>commons-beanutils</groupId>

          <artifactId>commons-beanutils</artifactId>

          <version>1.8.3</version>

               </dependency>

               <dependency>

             <groupId>commons-collections</groupId>

                                   <artifactId>commons-collections</artifactId>

                                   <version>3.2.1</version>

              </dependency>

              <dependency>

             <groupId>commons-configuration</groupId>

             <artifactId>commons-configuration</artifactId>

             <version>1.7</version>

               </dependency>

                <dependency>

             <groupId>commons-digester</groupId>

             <artifactId>commons-digester</artifactId>

              <version>1.8.1</version>

                  </dependency>

                  <dependency>

              <groupId>commons-fileupload</groupId>

                                      <artifactId>commons-fileupload</artifactId>

               <version>1.2.2</version>

                 </dependency>

                 <dependency>

                <groupId>commons-io</groupId>

                                          <artifactId>commons-io</artifactId>

                <version>2.0.1</version>

        </dependency>

         <dependency>

                <groupId>commons-lang</groupId>

                <artifactId>commons-lang</artifactId>

                <version>2.6</version>

         </dependency>

                        <dependency>

               <groupId>commons-logging</groupId>

               <artifactId>commons-logging</artifactId>

                <version>1.1.1</version>

                       </dependency>

<!commons dependency>

<!Exo -Portal Dependency>

                       <dependency>

                <groupId>org.exoplatform.ecms</groupId>

                                          <artifactId>exoecms-core-publication</artifactId>

                                          <version>2.3.4</version>

                                         <scope>provided</scope>

         </dependency>

         <dependency>

                 <groupId>org.exoplatform.ecms</groupId>

                 <artifactId>exoecmscore-services</artifactId>

                 <version>2.3.4</version>

                 <scope>provided</scope>

         </dependency>

         <dependency>

                 <groupId>org.exoplatform.ecms</groupId>

                 <artifactId>exoecms-core-webui</artifactId>

                  <version>2.3.4</version>

                  <scope>provided</scope>

                        </dependency>

         <dependency>

                <groupId>org.exoplatform.social</groupId>

                <artifactId>exo.social.component.core</artifactId>

                <version>1.2.8</version>

                <scope>provided</scope>

                       </dependency>

         <dependency>

             <groupId>org.exoplatform.kernel</groupId>

             <artifactId>exo.kernel.container</artifactId>

             <version>2.3.8-GA</version>

             <scope>provided</scope>

                       </dependency>

                       <dependency>

              <groupId>org.exoplatform.core</groupId>

                                    <artifactId>exo.core.component.organization.api</artifactId>

                                    <version>2.3.8-GA</version>

              <scope>provided</scope>

         </dependency>

                        <dependency>

              <groupId>org.exoplatform.portal</groupId>

              <artifactId>exo.portal.component.portal</artifactId>

              <version>3.4.0.Final</version>

              <scope>provided</scope>

              <exclusions>

                   <exclusion>

                           <artifactId>wci-wci</artifactId>

                           <groupId>org.gatein.wci</groupId>

                  </exclusion>

              </exclusions>

         </dependency>

          <dependency>

                 <groupId>org.exoplatform.portal</groupId>

                 <artifactId>exo.portal.webui.portal</artifactId>

                                             <version>3.4.0.Final</version>

                 <scope>provided</scope>

                 <exclusions>

                     <exclusion>

                         <artifactId>wci-wci</artifactId>

                         <groupId>org.gatein.wci</groupId>

                     </exclusion>

                                            </exclusions>

                         </dependency>

                           <dependency>

                                            <groupId>org.exoplatform.forum</groupId>

                                            <artifactId>forum-application-common</artifactId>

                 <version>4.0.0</version>

                                             <scope>provided</scope>

                                       <exclusions>

                    <exclusion>

                      <artifactId>wci-wci</artifactId>

                      <groupId>org.gatein.wci</groupId>

                    </exclusion>

               </exclusions>

                          </dependency>

                          <dependency>

                  <groupId>org.exoplatform.social</groupId>

                  <artifactId>social-component-webui</artifactId>

                                                <version>4.0.0</version>

                                                <scope>provided</scope>

                          </dependency>

          <dependency>

                <groupId>org.exoplatform.forum</groupId>

                <artifactId>forum-forum-service</artifactId>

                <version>4.0.0</version>

                <scope>provided</scope>

         </dependency>

                        <dependency>

                <groupId>org.exoplatform.social</groupId>

                <artifactId>social-component-common</artifactId>

                <version>4.0.0</version>

                <scope>provided</scope>

         </dependency>

                       <dependency>

              <groupId>org.exoplatform.calendar</groupId>

              <artifactId>calendar-service</artifactId>

                                      <version>4.0.0</version>

              <scope>provided</scope>

                      </dependency>

         <dependency>

                                     <groupId>org.exoplatform.ws</groupId>

              <artifactId>exo.ws.rest.core</artifactId>

              <version>2.2.6-GA</version>

              <scope>provided</scope>

         </dependency>

<!Exo -Portal Dependency>

<!— Hibernate dependency>

         <dependency>

              <groupId>org.hibernate</groupId>

                                    <artifactId>hibernate-commons-annotations</artifactId>

              <version>3.2.0.Final</version>

         </dependency>

                        <dependency>

               <groupId>org.hibernate.javax.persistence</groupId>

               <artifactId>hibernate-jpa-2.0-api</artifactId>

               <version>1.0.0.Final</version>

                       </dependency>

         <dependency>

               <groupId>org.hibernate</groupId>

               <artifactId>hibernate</artifactId>

               <version>3.2.0.ga</version>

                                       <scope>provided</scope>

         </dependency>

                        <dependency>

             <groupId>org.hibernate</groupId>

             <artifactId>hibernate-annotations</artifactId>

             <version>${org.hibernate-version}</version>

         </dependency>

<!— Hibernate dependency>

<!— slf4j and log4j dependency>

         <dependency>

              <groupId>log4j</groupId>

              <artifactId>log4j</artifactId>

              <version>1.2.15</version>

              <exclusions>

                 <exclusion>

                      <groupId>javax.mail</groupId>

                      <artifactId>mail</artifactId>

                 </exclusion>

               <exclusion>

                      <groupId>javax.jms</groupId>

                                                         <artifactId>jms</artifactId>

               </exclusion>

               <exclusion>

                    <groupId>com.sun.jdmk</groupId>

                    <artifactId>jmxtools</artifactId>

               </exclusion>

                                        <exclusion>

                    <groupId>com.sun.jmx</groupId>

                    <artifactId>jmxri</artifactId>

                </exclusion>

            </exclusions>

             <scope>runtime</scope>

               </dependency>

<!— slf4j and log4j dependency>

<!servlet dependency>

               <dependency>

                            <groupId>javax.servlet</groupId>

                            <artifactId>servlet-api</artifactId>

                            <version>2.5</version>

                            <scope>provided</scope>

               </dependency>

<!servlet dependency>

</dependencies>

 

Step 7 : Add below mentioned Jersey framework and its related jar files in src\main\webapp\WEB-INF\lib directory.

  • jackson-core-2.0.2.jar
  • jackson-core-asl-1.9.7.jar
  • jacksondatatypejson-org-2.0.2.jar
  • jackson-mapper-asl-1.9.7.jar
  • javassist-core-3.12.0.GA.jar
  • jaxbimpl-2.2.4-1.jar
  • jaxbapi-2.2.4.jar
  • jersy-bundle-1.16.jar
  • jersy-core-1.16.jar
  • jersyjson-1.16.jar
  • jersy-multipart-1.16.jar
  • jersy-server-1.16.jar
  • jsonjava-1.16.jar

 

After adding above jar file the directory structure should look like :

image5

Step 8 : Now, we need to add jar files in java build-path as shown in image.

iamge6

iamge7

Step 9 : please add below code snippet of Jersey servlet and servlet mapping in web.xml.

<?xmlversion=“1.0”encoding=“UTF-8”?>

<web-appversion=“2.5”xmlns=“http://java.sun.com/xml/ns/javaee”

xmlns:xsi=“http://www.w3.org/2001/XMLSchema-instance”

xsi:schemaLocation=“http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd”>

      <servlet>

         <servlet-name>Jersey REST Service</servlet-name>

         <servlet-class>com.sun.jersey.spi.container.servlet.ServletContainer</servlet-class>

                       <initparam>

            <param-name>com.sun.jersey.config.property.packages</param-name>

            <param-value>com.scalsys.rest</param-value>

         </init-param>

            <load-on-startup>1</load-on-startup>

      </servlet>

      <servlet-mapping>

          <servlet-name>Jersey REST Service</servlet-name>

          <url-pattern>/rest/*</url-pattern>

      </servlet-mapping>

</web-app>

 

Step 10 : create a java class ExoRESTService under package com.scalsys which will expose REST service and put below code in your class.

package com.scalsys.rest;

import javax.ws.rs.GET;

import javax.ws.rs.Path;

import javax.ws.rs.PathParam;

import javax.ws.rs.Produces;

import javax.ws.rs.core.MediaType;

import javax.ws.rs.core.Response;

import org.exoplatform.services.rest.resource.ResourceContainer;

@Path(“/user/”)

@Produces(MediaType.APPLICATION_JSON)

publicclass ExoRESTService implements ResourceContainer {

@Path(“/name/{name}/”)

@GET

public Response getName(@PathParam(“name”) String name) throws Exception {

return Response.ok(“Hello ” + name + “ !“).build();

}

}

 

Step 11 : Now for deploying code open cmd and go to the project path and do “mvn clean install”.

image8

image9

Step 12 : once the Build is successful you need to copy war file to webapps directory of eXo platform.

image10

image11

Step 13 : open browser and access URL

http://localhost:8080/eXoRESTWSWithJersy-1.0/rest/user/name/divyang

you will see output as

Hello divyang !

Share!Share on FacebookShare on Google+Share on LinkedInTweet about this on TwitterFlattr the authorDigg thisPin on PinterestEmail this to someoneShare on StumbleUponShare on RedditShare on TumblrBuffer this pagePrint this page
Copyright © 2017 - Scalsys. All Rights Reserved