Remove Axis web services

StatusDECIDED
Stakeholders
OutcomeWe can remove Axis web services from trunk, which will be reflected in Sakai 11 and later.
Due date
OwnerUnlicensed user 

Background

Proposal:
Permanently remove Axis web services from Sakai [1] , replacing with CXF [2] .

Rationale:
Apache Axis 1.4 hasn't been updated in about 8 years, and several of us have run into annoying problems with Axis1 especially compilation issues while the web services are being accessed during a restart.
At Apereo Unconf in Phoenix, the possibility was mentioned of creating stubs for all existing methods (except method overrides) in CXF using wsdl2java. Then several of us volunteered to help out and move old code into a new CXF project.

We want to reserve the use of rpc style webservices to help with legacy support. Soap encoding is no longer supported by any modern framework out there but our testing has shown the rpc/literal style which CXF does support appears to work with legacy client code (at least what we've tested). In addition since exposing the same logic as Rest is trivial (simple annotations) we are doing that as well. This way any new client code can use that method. In theory switching over to using this should only require that clients update the wsdl location (or even some rewrite rules in your load balancer could do that), and then deal with any method names that might be different now because overloading of names is not allowed.

Implications:

You will be able to continue using webservices (with the same name and parameters) with perl-soap with very, very minor changes needed in your part.

The sakai connector portlet will need to be updated.



More technical details details:
The endpoints follow this convention, prefix soap in path to get rpc/liternal services, /rest to get the rest style:



So http://localhost:8080/sakai-axis/SakaiScript.jws?wsdl now becomes:



http://localhost:8080/sakai-ws/soap/sakai?wsdl



a rest call might be like this:



http://localhost:8080/sakai-ws/rest/sakai/addNewUser?sessionid=40d2075f-a3d9-4a3f-b93f-f61df97e07d9&eid=blah&=firstname=john&lastname=bush&email=asdf@asdfasdfasdf.com&type=registered&password=yourmom



append the service name + method name (case sensitive) and then pass in params as query parameters. We need to do some work to support http status codes and maybe json vs xml in rest services, but that is easy with cxf from here on out.



Full wsdl list:

http://localhost:8080/sakai-ws/soap/sakai?wsdl

http://localhost:8080/sakai-ws/soap/shortenedurl?wsdl

http://localhost:8080/sakai-ws/soap/assignments?wsdl

http://localhost:8080/sakai-ws/soap/contenthosting?wsdl

http://localhost:8080/sakai-ws/soap/messageforums?wsdl

http://localhost:8080/sakai-ws/soap/job?wsdl

http://localhost:8080/sakai-ws/soap/login?wsdl

http://localhost:8080/sakai-ws/soap/testsandquizzes?wsdl

http://localhost:8080/sakai-ws/soap/portallogin?wsdl

The RemoteHostFilter is still on all calls so this stuff is secured in the same was axis was via webservices.allow properties. To enable broadly for development:

webservices.allowlogin=true


webservices.allow = .*


Community input and Decision making:
A material objection raised by a Sakai PMC member will block this proposal. Other opinions are welcome, indeed encouraged. Silence equals consent. Input must be received by Wednesday, November 26, 2014, close of business, your time zone.

[1] Remove Axis - https://jira.sakaiproject.org/browse/SAK-28043

[2] CXF - https://jira.sakaiproject.org/browse/SAK-25678

Action items

  •