Posts tagged ‘joinin’

Friday 5 May 06

Thought of a really bad hack around the problems I’m having with the Membership service, and that is that I _could_ just connect the EnterpriseClient module up directly to the database (using the code I have from the JoinInDB service), but this would really be a last resort just to get something working. So if I don’t get anywhere early next week with the Membership service I’ll get this set up, at least then I’ll have something to demonstrate – but would be a far from ideal solution, as it negates the point of using the SDK!

Friday 5 May 06

 Have now got some the the Enterprise SDK working correctly, still working on getting the membership service working, but at least I’m making progress – see the full details on my JoinIn blog

Friday 5 May 06

Have just switched my axis version over to 1.3 in the hope that this would solve the problem with the Membership service, but that unfortunately hasn’t fixed the problem – I still get the same error message, so going back to Axis 1.1. I’ve added some more debug code (in the EnterpriseServer module) to try and track the problem, but the constructor method for the MembershipManagementImpl isn’t getting called, so I think there is something up with the actual service, rather than the code I’m using :-(

Friday 5 May 06

Been getting on well with implementing the Person and Group services, and got the main method done that we needed for these, but have come up against a bit of a problem when implementing the Membership service. I;ve posted a comment on the SF forum about this, but it’s essentially that the service doesn’t appear to the available, just get a null pointer error, and I can’t figure out why this would be. So hope that I can get this resolved soon.

Another question that’s come up is why the deleteMembership method only requires a sourcedId, I don;t quite get what this method then does. Does it delete all the memberships for this group (or for the person)? Isn’t there a way to just remove a person’s membership from a group – if so which method should be used?

Juliette had also raised a couple of queries regarding some of the Moodle integration….

1) Do we allow groups that don’t belong to groupings?
2) When adding a member to a group, should we check that the person is a member of the course?

Both of these are really specific to Moodle rather than the Enterprise side of things – so need to have a chat about these with her.

Tuesday 2 May 06

Made a fair bit more progress today, I’ve now got the readGroup and createGroup methods (doesn’t sound like very much though!!) – so all pleased about that, should get more straightforward to get the other methods that we need implemented.

All I need to figure out now is how to get at the raw XML that gets returned to the client, as I need this to return in the simplified service that Moodle will be connecting to.

Tuesday 2 May 06

Hurray!! – have now got the Enterprise Client connecting up correctly to an Enterprise server and returning group data from the database. This is thanks to Carol sending me the code that she’d got working. I still need to go through and check to see what was wrong with the code I was using.

Very pleased to have got this working now, though it’s only for the readGroup method, but hope it won’t be too difficult to extend this to the other methods.

Monday 1 May 06

Am still attempting to get the SDK working, though still not having any luck, so getting quite frustrated with it all! When the my client code calls the service it just returns an error saying there is a communications link failure – but the service and correct method is actually called (I can see from some of the debugging output that it’s getting to the right method), though the id is not being passed over.

If I try to call up the service in the browser (ie by looking at: http://localhost:8080/EnterpriseServer/services/GroupManagementServiceSyncSoap?method=readGroup) I just get the follwoing error returned:

Tried to invoke method public void uk.ac.cetis.enterprise.group.http.GroupManagementServiceSyncSoapSkeleton.readGroup(uk.ac.cetis.enterprise.group.messages._readGroupRequest,uk.ac.cetis.enterprise.iaf.messages._syncRequestHeaderInfo,uk.ac.cetis.enterprise.group.messages.holders._readGroupResponseHolder,uk.ac.cetis.enterprise.iaf.messages.holders._syncResponseHeaderInfoHolder) throws java.rmi.RemoteException with arguments uk.ac.cetis.enterprise.group.messages._readGroupRequest,uk.ac.cetis.enterprise.group.messages.holders._readGroupResponseHolder,uk.ac.cetis.enterprise.iaf.messages.holders._syncResponseHeaderInfoHolder,null.  The arguments do not match the signature.; nested exception is:
    java.lang.IllegalArgumentException: argument type mismatch

I’m not sure why this is! I’ve been sent an example application which uses Axis 1.3, but I’ve not been able to run this as I need to get the database set up first. I’m also a bit wary of spending a lot of time trying to get something else running, and my feeling is that if I can’t get this running this week, then we’ll just have to stick with the sample database application I wrote a few weeks ago, as we know this works and we’ve got plenty more to be getting on with on the project other than Enterprise :-(

Tuesday 25 April 06

Made some more progress today with using the Enterprise SDK as I’ve now solved the problem i was having with running Axis 1.1 on Tomcat 5.5. It turned out that in one of my web.xml files it was referring to a listener-class (org.apache.axis.transport.http.AxisHTTPSessionListener) which wasn’t found in axis 1.1 – hence the problem when tomcat tried to start up!! So all my own fault really!

I’ve now got the beginnings of my EnterpriseClient, but I’ve just got to now figure out how in the client I can get ‘hold’ of the whole xml string that has been returned from the EnterpriseServer, rather than just the component parts. Looking at the Plex example, using _responseHolder.value.getGroup() this returns a GroupDType object, which you can then extract parts from (eg getDataSource()), but I can’t see any way to just give the whole xml string that was returned by the EnterpriseServer in the first place. Will keep trying….!

Friday 21 April 06

Here are some diagrams of how we currently have things set up, and where we might go…

Current set up:

This is how we currently have things working, unfortunately it’s not using IMS Enterprise Services in the communication between modules, it is just returning strings which are IMS Enterprise XML

Option 1 (see posting below):

This is how we would ideally have the system set up, with an Enterprise Server in the centre, with a PHP library handling the interaction between Moodle and Enterprise Server.

Option 2 (see posting below):

This is how we’re most likely to end up, with another java application inbetween Enterprise Server and Moodle. This Enterprise Client would be a client to the enterprise server, but it would be a server in Moodles eyes. We’re still undecided yet as to whether this would have a SOAP or REST interface provided out to Moodle.

Friday 21 April 06

Had good couple of days up in Bolton with Scott and at the ELF developers forum. We spent one day going through how to get the Enterprise SDK running, and although it’s not yet completely working I do feel i understand a lot more about it, and we’ve got some sample code which interacts with a database now.

The reason we couldn’t get it actually running was a problem between the different versions of Axis. The cetis-ws-client was built using Axis 1.1, and I’ve been using Axis 1.2, differences in the ‘constants’ package stop them being compatible with each other. So I thought I would try to switch to v1.1, but it I try to run with this I get errors when trying to start up tomcat (5.5), not sure why this is. So the plan is to update the client code so it can use Axis 1.2 instead – hopefully it’s not too much to change ;-)

There are some other things for us to decide on too, mainly what to do about getting Moodle connected up to the Enterprise service and we’ve got a couple of options…

1) Build a PHP client for the Enterprise Service. With this option we’re really not sure how big a job this would be, it could be anything from couple of weeks to couple of months or more.

2) Build a client module which then provides a simpler interface for Moodle to connect to. This could be a ‘proper’ web service, or a rest type service.

My feeling is that we go for creating a rest client module for Moodle to connect to , as this ought to be the simplest to create. We need something simple and easy to do, as doing all this Enterprise stuff isn’t meant to be the focus of our project, and we’re in danger of spending all our time getting Enterprise Services working, rather than doing the grouping service!!