Still having ‘fun’ trying to get this web services stuff to work correctly. Currently I have CCSI running and I have Sled running, unfortunately I can’t run them on the same machine (or instance of JBoss) as I then run into error because of class loading etc. I found that if I replace the JBoss axis.jar with v1.2.1, then start up fails because of errors with CCSI.war, however, in order to get sled.war to start up correctly I must have the up to date version of axis in the JBoss lib directory – so that’s my conumdrum – how to get this working!
I’ve been googling and emailing a few people to try and find a solution to the problem – essentially I’m trying to fnd out how I can run the 2 apps on the same instance of JBoss (which I ought to be able to do) – and here’s how far I’ve got…
I found the page on the Jboss wiki (http://www.jboss.org/wiki/Wiki.jsp?page=ClassLoadingConfiguration) which is meant to explain how you can override classes. Unfortunately theres no actual example, they give the code snippet:
But I don’t know *exactly* what I shoud put instead of unique-archive-name, should it be ‘axis.jar’ or ‘lib/axis.jar’ etc, and also I don’t know if I’m meant to change the ‘dot.com’ to be ‘org.apache.axis’ or something else or not!
The other options I have are either upgrading to version 4.x of JBoss or to just leave as is and just Java api when the apps are running on the same box, and webservices if they are on seperate boxes. Upgrading is a bit of a non-starter – as it could quite easily introduce many more problem than I’ve already got – especially as I’d need to ensure that CopperCore, CCSI and Sled all ran fine underthe new environment. Took much work I think! Having them run on seperate boxes, or just using java if they are going to be on the same box is a fallback solution for me – I wouldn’t be that happy leaving it at that, because then I’ve not actually solved the problem – just got around it. I know that in a produciton environment if you had 2 java apps running on the same App server you wouldn’t need them to be communicating using web services, but for the purposes of this project, I’d at least like to be able to demonstrate that you can if you want.
Actually another option for me could be to see if I can get the CCSI.war to start up and run when the latest version of axis is in the JBoss lib directory. So I might try and have a look at that too.
If anyone out there has any bright ideas – please email me ASAP!
Think I’ve got it now. The Jboss server is using the axis.jar in the C:\coppercore\ccrt\jboss-3.2.6\server\default\lib directory, rather than the one in the Sled2 lib directory, which would explain why it couldn’t find the method because the axis.jar that’s included with that version of JBoss is an old one – not sure of the exact version number, but the one include with JBoss is about 1.2Mb and axis.jar for 1.2.1 is about 1.5Mb.
Getting the webservices running seems to be going in fits and starts at the moment. I have got WTP to create all what I think is the correct code for the webservice client, and I can run this fine as a standalone java app in Eclipse. However, when I then try to move to using it within Jboss in the Sled Player code, I keep getting the following message:
So I’m guessing that my version of Jboss doesn’t have the corrrect jar file somewhere – most likely that it’s not got Axis 1.2.1, I’ve tried to figure out which one is wrong, but not found it yet so I’ll keep trying 😉
At the beginning of last week Hubert & Harrie put the updated version of the CCSI module up on Sourceforge, so I have spent the last few days converting the Sled player to use the web services connection to the CCSi module, rather than the java API we were previously using. I had a bit of frustrating time getting it to call some of the Admin functions, but the problem ended up being that I had compiled the CCSI with an older version of Axis than the one I should have been using, once I’d compiled with Axis 1.2.1 it seems to be working ok. There is still a fair bit more work for me to do, so far I have only got the CopperCore and CopperCoreAdmin connections converted to using the CCSI webservices connection. Once I have got this tested and working fine, I can then move on to getting the other modules, APIS, Forum, Search etc moved over. For the Forum and Search I will need to create the web services adapters in the CCSI for it all to be running from web services API rather than a mixture of webservices and Java. I’m certainly learning more about using Eclipse, WTP and web services doing all this!
Have just come back from the JISC conference in Edinburgh where I attended the Learning Design strand. We’re still now sorting out what we can bid for in the latest JISC toolkit and demonstrator project calls – we have a few ideas as to what we could do, and just need to get these refined into an actual bid in time 😉
At the end of last week I finally got the ePET ePortfolio system up and running on my laptop, all seems to be running fine, though not sure at the moment whether or not I’ll be able to get time to link this up to the CCSI module and run with the Sled player. I’ve just come back from the JISC conference in Edinburgh, and Hubert and Harrie at OUNL have sent me the updates to the CCSI module so that it can run with a webservices connection, so I need to spend some time getting the Sled player running using this instead of the java api. The JISC meeting was useful and seems that there are a few people interested in taking the work we’ve done on the CCSI intergration layer forward, and also developing the Sled player further.
We are in the process of figuring out what we do next, especially since the latest JISC calls seem to preclude us from getting funding form them to develop Sled further – since the model appears to be that other organisations bid for funding to take up our work and we simply provide some support for them to do this.
Yesterday I was looking at switching the database that was used for CopperCore so that instead of using the default Hypersonic database it used an MSSQL database instead, I got most of the way in doing this, but then got a bit stuck when needing to add the JDBC jar path to the classpath for coppercore startup file, I tried a few different ways of doing this but didn’t actually get it working- will try again later.
I’ve also updated some of the CCSI adapters, as the ones that I originally created (to get it working to start with), had URLs and the Google search API key coded into the java code -which is obviously not the best thing to do. What I’ve done instead is move these parameters out to a properties file. I’ve put these changes back into Souceforge CVS and when I put out the next version of the Sled player, this will include these changes too.
The other thing I’m going to work on is creating a page or two on the Sled website to explain what the CCSI stuff is all about and how people could add new services or switch service provider.
I’ve now think I’ve fixed the problem when a blank page was returned when the user double clicked on a link. The error that was being generated was ‘javax.ejb.EJBException – Application error – tried to enter Stateful bean with different tx context’ and I think again that the root cause of this is java threading. All I’ve done is temporarily fix the Sled player so that it won’t display blank page to user -it will generate the correct content, but it doesn’t stop the errors appearing in the JBoss console – they are just being handled better!
I’ve updated the Sled demo site with this new version, and I’ll include this fix in the next release I put up on Sourceforge.
More results from the load testing. Previously I had just been testing with a server which only had 5 users registered on the LD system and 2 Units of Learning, and I was only load testing with 3 concurrent users. This morning I added more users and UoLs, so we had 20 users registered and 10 UoLs. I then tried the load testing but still with only 3 concurrent users.
For the first set of testing (with 5 users registered) we had average response times of 11-12 secs for Sled player and 2-3 secs for CopperCore player. Though as I mentioned earlier – it;s difficult to compare these two directly as they are measuring different things – I’m really looking at the relative differences, not the absolute figures. Then when I tested with 20 users registered on the server (ecah assigned to 10 UoLs) the speed decreased quite dramatically to 30-35 secs average for Sled and 9-10 secs for CopperCore – so both players were about 3 times slower with a very small increase in the number of users registered.
For info, I was doing this testing on an old laptop (about 4 years old – PII, 200MB ram) and with a default installation of CopperCore and Sled. I also restarted the CopperCore service before the start of each test.
We’ve also found another little problem that is affecting the player, and that is that if someone double clicks a link in the activity tree menu (so clicking again before the server has had chance to return anything after the first click) this is generating a blank page (just the Sled header and footer) – so I’ll need to see what is causing this problem!
I have uploaded the latest version of Sled (2.0.2) to Sourceforge – which includes the fixes described in my last couple of entries in my LD diary/blog