Using LR 6.1 CE on Tomcat. I have custom services generated by the service builder using remote-service="true" attribute, out of the box JSON UI provided by Liferay is working great. I can browse to it: http://localhost:8080/my-portlet/api/jsonws/ and retrieve objects, for example:
1
2GET: http://localhost:8080/my-portlet/api/secure/jsonws/item/retrieve-items
3RESPONSE: [{"companyId":10154,"itemId":1,"groupId":10198,"name":"Test Item 1","userId":10196},{"companyId":10154,"itemId":2,"groupId":10198,"name":"Test Item 2","userId":10196}]
But when I try to submit a similarly encoded object back for creation, it fails to get parsed correctly and all values comes through as 0 or null, for example:
1POST: http://localhost:8080/athletics-portlet/api/secure/jsonws/exercise/create
2POST parameters:
3newExercise:{"companyId":10154,"groupId":10198,"name":"Test Item 3","userId":10196}
4 newExercise:com.amstatz.model.impl.ExerciseImpl ----> This parameter has '+' in front of it and is needed for JSON Web Service to know what kind of object to the request is.
5RESPONSE: {"exception":"com.liferay.portal.NoSuchRoleException: No Role exists with the key {companyId=0, name=Owner}"}
Also tried submitting all the parameters as separate form fields, but that didn't work either. Is there an easy way to accomplish this, especially from Java?
Tried using CXF to expose the service, but couldn't get past an issue with missing namespace handlers, even tried manually aggregating these files and placing them in every imaginable location but LR still couldn't find it when deploying.
I would like to write a client to submit and read data to my custom services generated by the Service Builder (JSON, SOAP or other solutions as long as security is integrated), but finding it very difficult to find any working examples outside of simple hello world that submits a string and gets a string back. Any help would be greatly appreciated.
Por favor, faça login para denunciar.