Forum LAMS for Tech-Heads - General Forum: LAMS2 - Sakai 2.3 Integration ready for testing


 
You may request notification for LAMS2 - Sakai 2.3 Integration ready for testing.
Search: 

1: LAMS2 - Sakai 2.3 Integration ready for testing
04/25/07 06:59 AM
[ Reply | Forward ]
G'day everyone,

We have now open the LAMS2 - Sakai integration for testing.

Similarly to the Moodle one, teachers within Sakai can seamlessly add LAMS lessons to their Sakai courses.

For this testing server, you can self sign-up and join the LAMS-Sakai course to start playing with the integration. If you haven't used Sakai before, you might want to have a look at this animation that will show you how to join Sakai course/site.

If you run Sakai and want to have a look at the code, it's available on CVS and also as a zip package for download.

Big Kudos to Anthony for his work on this.

Questions and comments, as usual, post them here.

Thanks,

Ernie

Posted by Ernie Ghiglione

2: Re: LAMS2 - Sakai 2.3 Integration ready for testing
By: sun jw
In response to 1 05/10/07 07:10 PM
[ Reply | Forward ]
hi all,
I have been trying to get LAMS2.0.2 and Sakai2.3.1 talking but it just isn't happening.
LAMS is working fine - installed on a RHEL4 server, Sakai is working fine - on another RHEL4 server.
After all the steps to integrate the two together, I go to "http://<mysakai_server>/mercury/" and login as admin, then go back to sakai.lamstwo via the mercury page, i could see the admin menu on the top, then clicking "New Lesson", and "Open Author" on the following page, i get an error like:

HTTP Status 502 - Login Failed - failed to fetch user info from the third party server
--------------------------------------------------------------------------------
type: Status report
message: Login Failed - failed to fetch user info from the third party server
description: This server received an invalid response from a server it consulted when acting as a proxy

or gateway (Login Failed - failed to fetch user info from the third party server).
--------------------------------------------------------------------------------
Apache Tomcat/5.5.9


My Environment:

Main Software
In the LAMS side:
jdk-1.5
mysql-5.0.18
jboss-4.0.2
lams_2.0-unix-beta.tar.gz
lams-unix-updater-2.0.2.tar.gz

On the SAKAI side:
jdk-1.5
mysql-5.0.18
tomcat-5.5.17
sakai-src_2-3-1.tar.gz
sakai-lamstwo.zip

Hardware
Lams2.0.2 and Sakai2.3.1 are installed on two separate physical machines, both are RHEL4.

Network
Lams2.0.2 ip: 172.16.129.210  port:8080
sakai231  ip: 172.16.129.211  port:8080
the firewall on both servers are disabled.

My Configration:
follow the page at http://wiki.lamsfoundation.org/display/lamsdocs/LAMS+v2.0+Integration+Setup+Step-by-Step+Guide

In the LAMS side:
1. login in LAMS as a sysadmin.
2. Select the "Sys Admin" link.
3. Select "Maintain Integrated Servers".
4. Setup the fields as:
Id: sakai
Key: sakai
Name: sakai
Description: sakai
Prefix: sk
Organisation: create new one(sakailams)
User Information URL: http://172.16.129.211:8080/sakai-lamstwo-tool/servlet/UserDataServlet?uid=%username%&ts=%timestamp%&hash=%hash%
Timeout URL: http://dummy.url/not.implemented

On the SAKAI side:
Add the following in sakai.properties:
lamstwo.serverId=sakai
lamstwo.serverKey=sakai
lamstwo.serverAddr=http://172.16.129.210:8080/lams/
lamstwo.requestSrc=Sakai


It appears that possibly the dynamic provisioning isn't working in one form or another? The username being used by Sakai actually exists within LAMS as i then put in the username to provide static provisioning - still no change



when click "new lesson"
in the Lams side, the error info from jboss as:

21:33:12,847 DEBUG [SingleSignOn] Process request for'/lams//services/LearningDesignRepositoryService'
21:33:12,847 DEBUG [SingleSignOn] Checking for SSO cookie
21:33:12,847 DEBUG [SingleSignOn] SSO cookie is not present
21:33:12,848 DEBUG [CustomizedOpenSessionInViewFilter] Using SessionFactory 'coreSessionFactory' for OpenSessionInViewFilter
21:33:12,848 DEBUG [CustomizedOpenSessionInViewFilter] Opening single Hibernate Session in OpenSessionInViewFilter
21:33:12,873 DEBUG [IntegrationService] http://172.16.129.211:8080/sakai-lamstwo-tool/servlet/UserDataServlet?uid=403c8370-f683-4382-00b3-d10e2e3667d3&ts=1178847192873&hash=17a43c80d0e23e509f4d3d8321a5e11df93ce184
21:33:12,900 DEBUG [LearningDesignRepositorySoapBindingImpl] Fail to fetch user data from external server:sakai - Unexpected return HTTP Status:401
org.lamsfoundation.lams.integration.UserInfoFetchException: Fail to fetch user data from external server:sakai - Unexpected return HTTP Status:401
at org.lamsfoundation.lams.integration.service.IntegrationService.getUserDataFromExtServer(IntegrationService.java:239)
at org.lamsfoundation.lams.integration.service.IntegrationService.createExtUserUseridMap(IntegrationService.java:177)
at org.lamsfoundation.lams.integration.service.IntegrationService.getExtUserUseridMap(IntegrationService.java:130)
at org.lamsfoundation.lams.integration.service.IntegrationService$$FastClassByCGLIB$$24924e31.invoke(<generated>)
at net.sf.cglib.proxy.MethodProxy.invoke(MethodProxy.java:149)
at org.springframework.aop.framework.Cglib2AopProxy$CglibMethodInvocation.invokeJoinpoint(Cglib2AopProxy.java:685)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:148)
at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:96)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:170)
at org.springframework.aop.framework.Cglib2AopProxy$DynamicAdvisedInterceptor.intercept(Cglib2AopProxy.java:623)
at org.lamsfoundation.lams.integration.service.IntegrationService$$EnhancerByCGLIB$$281dd714_2.getExtUserUseridMap(<generated>)
at org.lamsfoundation.lams.webservice.LearningDesignRepositorySoapBindingImpl.getLearningDesigns(LearningDesignRepositorySoapBindingImpl.java:161)
at org.lamsfoundation.lams.webservice.LearningDesignRepositorySoapBindingSkeleton.getLearningDesigns(LearningDesignRepositorySoapBindingSkeleton.java:115)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:585)
at org.apache.axis.providers.java.RPCProvider.invokeMethod(RPCProvider.java:397)
at org.apache.axis.providers.java.RPCProvider.processMessage(RPCProvider.java:186)
at org.apache.axis.providers.java.JavaProvider.invoke(JavaProvider.java:323)
at org.apache.axis.strategies.InvocationStrategy.visit(InvocationStrategy.java:32)
at org.apache.axis.SimpleChain.doVisiting(SimpleChain.java:118)
at org.apache.axis.SimpleChain.invoke(SimpleChain.java:83)
at org.apache.axis.handlers.soap.SOAPService.invoke(SOAPService.java:454)
at org.apache.axis.server.AxisServer.invoke(AxisServer.java:281)
at org.apache.axis.transport.http.AxisServlet.doPost(AxisServlet.java:699)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
at org.apache.axis.transport.http.AxisServletBase.service(AxisServletBase.java:327)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:810)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
at org.springframework.orm.hibernate3.support.OpenSessionInViewFilter.doFilterInternal(OpenSessionInViewFilter.java:174)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:77)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
at org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilter.java:81)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:178)
at org.jboss.web.tomcat.security.CustomPrincipalValve.invoke(CustomPrincipalValve.java:39)
at org.jboss.web.tomcat.security.SecurityAssociationValve.invoke(SecurityAssociationValve.java:153)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:407)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:407)
at org.jboss.web.tomcat.security.JaccContextValve.invoke(JaccContextValve.java:59)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:126)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:105)
at org.lamsfoundation.lams.integration.security.SingleSignOn.invoke(SingleSignOn.java:89)
at org.lamsfoundation.lams.integration.security.LoginRequestValve.invoke(LoginRequestValve.java:67)
at org.apache.catalina.valves.FastCommonAccessLogValve.invoke(FastCommonAccessLogValve.java:481)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:107)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:148)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:856)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol.java:744)
at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:527)
at org.apache.tomcat.util.net.MasterSlaveWorkerThread.run(MasterSlaveWorkerThread.java:112)
at java.lang.Thread.run(Thread.java:595)
21:33:12,905 DEBUG [CustomizedOpenSessionInViewFilter] Closing single Hibernate Session in OpenSessionInViewFilter




on the Sakai side the error info from tomcat as:

ERROR: Unable to retrieve user data: missing expected parameters (2007-05-11 09:11:28,352 http-8080-Processor22_org.lamsfoundation.lams.integrations.sakai.tool.servlet.UserDataServlet)
ERROR: Unable to retrieve learning designs from LAMS, RMI Remote Exception (2007-05-11 09:11:28,394 http-8080-Processor23_org.lamsfoundation.lams.integrations.sakai.logic.impl.LamstwoLogicImpl)
AxisFault
faultCode: {http://schemas.xmlsoap.org/soap/envelope/}Server.userException
faultSubcode:
faultString: java.rmi.RemoteException: Fail to fetch user data from external server:sakai - Unexpected return HTTP Status:401; nested exception is:
org.lamsfoundation.lams.integration.UserInfoFetchException: Fail to fetch user data from external server:sakai - Unexpected return HTTP Status:401
faultActor:
faultNode:
faultDetail:
{http://xml.apache.org/axis/}hostname:lams

java.rmi.RemoteException: Fail to fetch user data from external server:sakai - Unexpected return HTTP Status:401; nested exception is:
org.lamsfoundation.lams.integration.UserInfoFetchException: Fail to fetch user data from external server:sakai - Unexpected return HTTP Status:401
at org.apache.axis.message.SOAPFaultBuilder.createFault(SOAPFaultBuilder.java:222)
at org.apache.axis.message.SOAPFaultBuilder.endElement(SOAPFaultBuilder.java:129)
at org.apache.axis.encoding.DeserializationContext.endElement(DeserializationContext.java:1087)
at org.apache.xerces.parsers.AbstractSAXParser.endElement(Unknown Source)
at org.apache.xerces.impl.XMLNSDocumentScannerImpl.scanEndElement(Unknown Source)
at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl$FragmentContentDispatcher.dispatch(Unknown Source)
at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl.scanDocument(Unknown Source)
at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source)
at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source)
at org.apache.xerces.parsers.XMLParser.parse(Unknown Source)
at org.apache.xerces.parsers.AbstractSAXParser.parse(Unknown Source)
at org.apache.xerces.jaxp.SAXParserImpl$JAXPSAXParser.parse(Unknown Source)
at org.apache.xerces.jaxp.SAXParserImpl.parse(Unknown Source)
at org.apache.axis.encoding.DeserializationContext.parse(DeserializationContext.java:227)
at org.apache.axis.SOAPPart.getAsSOAPEnvelope(SOAPPart.java:696)
at org.apache.axis.Message.getSOAPEnvelope(Message.java:435)
at org.apache.axis.handlers.soap.MustUnderstandChecker.invoke(MustUnderstandChecker.java:62)
at org.apache.axis.client.AxisClient.invoke(AxisClient.java:206)
at org.apache.axis.client.Call.invokeEngine(Call.java:2784)
at org.apache.axis.client.Call.invoke(Call.java:2767)
at org.apache.axis.client.Call.invoke(Call.java:2443)
at org.apache.axis.client.Call.invoke(Call.java:2366)
at org.apache.axis.client.Call.invoke(Call.java:1812)
at org.lamsfoundation.lams.webservice.LearningDesignRepositorySoapBindingStub.getLearningDesigns(LearningDesignRepositorySoapBindingStub.java:128)
at org.lamsfoundation.lams.integrations.sakai.logic.impl.LamstwoLogicImpl.getLearningDesigns(LamstwoLogicImpl.java:355)
at org.lamsfoundation.lams.integrations.sakai.tool.jsf.LamstwoBean.processActionNew(LamstwoBean.java:273)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:585)
at org.apache.myfaces.el.MethodBindingImpl.invoke(MethodBindingImpl.java:129)
at org.apache.myfaces.application.ActionListenerImpl.processAction(ActionListenerImpl.java:63)
at javax.faces.component.UICommand.broadcast(UICommand.java:106)
at javax.faces.component.UIViewRoot._broadcastForPhase(UIViewRoot.java:90)
at javax.faces.component.UIViewRoot.processApplication(UIViewRoot.java:164)
at org.apache.myfaces.lifecycle.LifecycleImpl.invokeApplication(LifecycleImpl.java:316)
at org.apache.myfaces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:86)
at javax.faces.webapp.FacesServlet.service(FacesServlet.java:106)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
at org.sakaiproject.util.RequestFilter.doFilter(RequestFilter.java:501)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:672)
at org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:463)
at org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:398)
at org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:301)
at org.sakaiproject.jsf.util.JsfTool.dispatch(JsfTool.java:221)
at org.sakaiproject.jsf.util.JsfTool.doPost(JsfTool.java:256)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:709)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252)





any ideas?
Thanks for the reply, Any help would be appreciated.

Posted by sun jw

3: Re: Re: LAMS2 - Sakai 2.3 Integration ready for testing
In response to 2 05/14/07 06:29 PM
[ Reply | Forward ]
4: Re: LAMS2 - Sakai 2.3 Integration ready for testing
By: sun jw
In response to 1 05/18/07 09:53 PM
[ Reply | Forward ]
Hi Anthony.
Thanks for your reply. After i changed the User Information URL according to you, I go to "http://<mysakai_server>/mercury/" and login as admin, click the "New Lesson", i could see the the dropdown menu for workspaces, and then click the "Open Author", i could enter the lams system, everything goes well, but when i log into http://<mysakai_server>/portal/ as admin, create a worksite, add the tool "LAMS v2", then click the "New Lesson", i get an error from tomcat console as the attachment, and the dropdown menu for workspaces and sequences don't load, when i click the "Open Author", some error info coming as:


Sorry, there as been an error.
There is a problem processing this request. Close the browser window and try again. If the problem persists please contact your system administrator or the technical forums on http://lamscommunity.org/.

org.springframework.dao.InvalidDataAccessApiUsageException: object references an unsaved transient instance - save the transient instance before flushing: org.lamsfoundation.lams.usermanagement.UserOrganisation; nested exception is org.hibernate.TransientObjectException: object references an unsaved transient instance - save the transient instance before flushing: org.lamsfoundation.lams.usermanagement.UserOrganisation Hide detail
org.springframework.dao.InvalidDataAccessApiUsageException: object references an unsaved transient instance - save the transient instance before flushing: org.lamsfoundation.lams.usermanagement.UserOrganisation; nested exception is org.hibernate.TransientObjectException: object references an unsaved transient instance - save the transient instance before flushing: org.lamsfoundation.lams.usermanagement.UserOrganisation org.hibernate.TransientObjectException: object references an unsaved transient instance - save the transient instance before flushing: org.lamsfoundation.lams.usermanagement.UserOrganisation at org.hibernate.engine.ForeignKeys.getEntityIdentifierIfNotUnsaved(ForeignKeys.java:216) at org.hibernate.collection.AbstractPersistentCollection.getOrphans(AbstractPersistentCollection.java:680) at org.hibernate.collection.PersistentSet.getOrphans(PersistentSet.java:49) at org.hibernate.engine.CollectionEntry.getOrphans(CollectionEntry.java:311) at org.hibernate.engine.Cascades.deleteOrphans(Cascades.java:907) at org.hibernate.engine.Cascades.cascadeCollection(Cascades.java:891) at org.hibernate.engine.Cascades.cascade(Cascades.java:739) at org.hibernate.engine.Cascades.cascade(Cascades.java:817) at org.hibernate.event.def.AbstractFlushingEventListener.cascadeOnFlush(AbstractFlushingEventListener.java:121) at org.hibernate.event.def.AbstractFlushingEventListener.prepareEntityFlushes(AbstractFlushingEventListener.java:112) at org.hibernate.event.def.AbstractFlushingEventListener.flushEverythingToExecutions(AbstractFlushingEventListener.java:59) at org.hibernate.event.def.DefaultFlushEventListener.onFlush(DefaultFlushEventListener.java:26) at org.hibernate.impl.SessionImpl.flush(SessionImpl.java:716) at org.springframework.orm.hibernate3.SessionFactoryUtils$SpringSessionSynchronization.beforeCommit(SessionFactoryUtils.java:884) at org.springframework.transaction.support.AbstractPlatformTransactionManager.triggerBeforeCommit(AbstractPlatformTransactionManager.java:661) at org.springframework.transaction.support.AbstractPlatformTransactionManager.processCommit(AbstractPlatformTransactionManager.java:486) at org.springframework.transaction.support.AbstractPlatformTransactionManager.commit(AbstractPlatformTransactionManager.java:473) at org.springframework.transaction.interceptor.TransactionAspectSupport.doCommitTransactionAfterReturning(TransactionAspectSupport.java:267) at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:106) at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:170) at


could you have any idea?

sunjw
19/05/2007

Posted by sun jw

Attachments:
5: Re: Re: LAMS2 - Sakai 2.3 Integration ready for testing
In response to 4 05/20/07 09:16 PM
[ Reply | Forward ]
It sounds like LAMS is throwing an error when it is adding the user to the LAMS record that matches the new Sakai worksite. But I can't tell without looking at the LAMS logs.

Can you attach a copy of the LAMS logs here? Don't post them directly here - zip them up and attach the zip file.

The instructions for the logs are on the Creating DEBUG Logs page on the wiki.

Fiona

Posted by Fiona Malikoff

6: Re: LAMS2 - Sakai 2.3 Integration ready for testing
By: sun jw
In response to 1 05/21/07 07:59 AM
[ Reply | Forward ]
hi Anthony and Fiona,
Thanks for your replies. I redownloaded the sakai-lamstwo.zip today, after building, deploying it and configuring both on sakai and lams as before, everything goes well now. Thanks, and i will remember to follow the instructions for the logs next time.

Posted by sun jw

Reply to first post on this page
Back to LAMS for Tech-Heads - General Forum