Version 8 (modified by meddle, 16 years ago) (diff) |
---|
Analysis
Overview
Build web service API with the most appropriate technology for the requirements of the sophie 2 server. The services should be accessible from the client's connector.
Task requirements
- choose the technologies to use for the web service implementation.
- build the basic facade just for the user manipulation.
- build web service providing user manipulation.
Task result
- web service implementation accessible on the server.
Implementation idea
- create dummyFacade that just calling some of the user service methods in org.sophie2.server.facade
- use Servlets(REST) for now
- try to post as result to the web service method calls XMLs, representing objects and data
- for the generation of the XMLs think of the most appropriate technology to use(FreeMarker, Velocity, ObjectToXML generators like JAXB and others)
Related
How to demo
Make request to the url that the implemented web service is listening and see the result.
Design
- The XMLManagementService is used to convert ProObjects and basic types to XML result. It uses the Velocity template engine (for details).
- For now the UserManager and it's server side implementation are basic Facade, which uses directly the Core's UserService methods.
- The UserWebService is HttpServlet that acts like an REST web service. It receives GET parameters on it's url, the first is the name of the method to call, and the others it's arguments. UserWebService invokes the UserManager server implementation methods and returns the results in the form of an XML documents by it's response using the XMLManagmentService.
- For the first revision there will be no escaping of invalid XML characters and security logic like encoding/decoding of passwords and mail addresses.
- For the first revision the facade will be simple but in the future the web services will grant access to the whole Facade
- The XML converting of ProObjects containing references to other ProObject will be implemented at later revision.
Implementation
(Implementation results should be described and linked here (from the wiki or the repository))
Testing
Comments
(Write comments for this or later revisions here.)