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"> <author>meera</author> <namespace>json</namespace> <entity name="Student" local-service="true" remote-service="true"> <column name="studentId" type="long" primary="true" /> <column name="studentName" type="String" /> </entity> </service-builder> |
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.xmlfile
<servlet> <servlet-name>JSON Web Service Servlet</servlet-name> <servlet-class>com.liferay.portal.kernel.servlet.PortalClassLoaderServlet</servlet-class> <init-param> <param-name>servlet-class</param-name> <param-value>com.liferay.portal.servlet.JSONServlet</param-value> </init-param> <load-on-startup>0</load-on-startup> </servlet> <servlet-mapping> <servlet-name>JSON Web Service Servlet</servlet-name> <url-pattern>/api/jsonws/*</url-pattern> </servlet-mapping> <servlet-mapping> <servlet-name>JSON Web Service Servlet</servlet-name> <url-pattern>/api/secure/jsonws/*</url-pattern> </servlet-mapping> |
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
http://localhost:8080/LiferayCustomJsonWebService-portlet/api/jsonws/?serviceClassName=com.meera.json.service.StudentServiceUtil&serviceMethodName=getStudent&serviceParameters=[studentId]&studentId=1 |
Note: Change port number according to your environment and change portlet-contextname according to your portlet context name
The message in Liferay 6.1.1 is {"exception":"No JSON web service action associated with path /student/get-stutend and method GET for //LiferayCustomJsonWebService-portlet"}
ReplyDelete{"exception":"Please sign in to invoke this method"}
ReplyDeleteHow to resolve this issue ?
This was one of the greatest thing I have read. Thank you for sharing . Hope you continue writing educational post for every students.
ReplyDeletethank you... i will have such kind of plans.. thanks for your suggestion and keep in touch with liferaysavvy.com for latest updates..also go through following link for liferay 6.1x json web services..
ReplyDeletehttp://www.liferaysavvy.com/2013/11/liferay-custom-json-web-services-on.html