Tuesday, November 27, 2012

Expose Liferay Custom JSON web Services in Plug-in Environment

Download plugin portlet from following URL

Following is the step by step description of generating a custom liferay plugin service and exposing it as JSON Web Service.

STEP: 1 Create a liferay plugin project and create new service

Here is the sample service.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE service-builder PUBLIC "-//Liferay//DTD Service Builder 6.0.0//EN" "http://www.liferay.com/dtd/liferay-service-builder_6_0_0.dtd">
<service-builder package-path="com.meera.json">

<entity name="Student" local-service="true" remote-service="true">
            <column name="studentId" type="long" primary="true" />
            <column name="studentName" type="String" />

Make sure remote-service=”true” in entity tag declaration.

STEP: 2  Build the service.
STEP: 3 write you custom method implementation in StudentServiceImpl.java

public com.meera.json.model.Student getStudent(long studentId)
      throws com.liferay.portal.kernel.exception.PortalException,
            com.liferay.portal.kernel.exception.SystemException {
      return StudentLocalServiceUtil.getStudent(studentId);

Note: Here I am using existed method only don’t confuse. You can write your custom method implementation instead of my method.

STEP: 4 build the service using command ant build-service from your eclipse ant view

STEP: 5 Add the following <servlet> and <servlet-mapping> Entries to portlet’s  web.xml file

<servlet-name>JSON Web Service Servlet</servlet-name>
<servlet-name>JSON Web Service Servlet</servlet-name>
<servlet-name>JSON Web Service Servlet</servlet-name>

STEP: 6 deploy the portlet using ant deploy command from eclipse ant view

STEP: 7 to access your json web services enter the following url –
Note: if you access above url you will get blank page in browser but don’t worry. Make sure no exception will be occurred in console. Go through following url
Following is full URL to get json data according to my example


Note: Change port number according to your environment and change portlet-context name according to your portlet context name

Popular Posts

Recent Posts

Recent Posts Widget