[Building Sakai] sakai 2.9.3 Portfolios error

Sanghyun Jeon euksa99 at gmail.com
Tue Sep 24 10:46:09 PDT 2013


Just letting you know I think it might be related with our local cert.
Unfortunately we are still investigating it.


 Cannot find CatalogManager.properties
2013-09-24 10:34:08,981  WARN ajp-bio-8009-exec-9
org.sakaiproject.portal.util.ErrorReporter - Bug Report bug-id:
50b12178-90b2-4ace-b2ac-3180fb7fcb42 user: admin usage-session:
689ef1f3-2324-465b-9d09-7e6d6dc1eeef time: Sep 24, 2013 10:34:08 user
comment: null stack trace
org.sakaiproject.portal.api.PortalHandlerException:
org.sakaiproject.tool.api.ToolException: org.apache.jasper.JasperException:
An exception occurred processing JSP page /freeForm/pageProperties.jsp at
line 158

155:                                                    <h:commandButton
actionListener="#{freeForm.processActionManageItems}"
156:
              value="#{msgs.manage_items}"/>
157:                                            </h:panelGrid>
158:                            <ospx:xmlDocument
factory="#{freeForm.factory}"
159:
 xmlFile="#{freeForm.currentPage.xmlFile}"
160:
 var="freeForm.currentPage.regionMap" rendered
="#{freeForm.currentPage.xmlFileNotNull}"/>
161:                    </f:subview>


Stacktrace:
    at
org.sakaiproject.portal.charon.SkinnableCharonPortal.doGet(SkinnableCharonPortal.java:894)
caused by: org.sakaiproject.tool.api.ToolException:
org.apache.jasper.JasperException: An exception occurred processing JSP
page /freeForm/pageProperties.jsp at line 158

155:                                                    <h:commandButton
actionListener="#{freeForm.processActionManageItems}"
156:
              value="#{msgs.manage_items}"/>
157:                                            </h:panelGrid>
158:                            <ospx:xmlDocument
factory="#{freeForm.factory}"
159:
 xmlFile="#{freeForm.currentPage.xmlFile}"
160:
 var="freeForm.currentPage.regionMap" rendered
="#{freeForm.currentPage.xmlFileNotNull}"/>
161:                    </f:subview>


Stacktrace:
    at
org.sakaiproject.spring.util.SpringTool.sendToHelper(SpringTool.java:280)
caused by: org.apache.jasper.JasperException: An exception occurred
processing JSP page /freeForm/pageProperties.jsp at line 158

155:                                                    <h:commandButton
actionListener="#{freeForm.processActionManageItems}"
156:
              value="#{msgs.manage_items}"/>
157:                                            </h:panelGrid>
158:                            <ospx:xmlDocument
factory="#{freeForm.factory}"
159:
 xmlFile="#{freeForm.currentPage.xmlFile}"
160:
 var="freeForm.currentPage.regionMap" rendered
="#{freeForm.currentPage.xmlFileNotNull}"/>
161:                    </f:subview>


Stacktrace:
    at
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:455)
caused by: javax.servlet.ServletException: javax.servlet.jsp.JspException:
javax.net.ssl.SSLHandshakeException:
sun.security.validator.ValidatorException: PKIX path building failed:
sun.security.provider.certpath.SunCertPathBuilderException: unable to find
valid certification path to requested target
    at
org.apache.jasper.runtime.PageContextImpl.handlePageException(PageContextImpl.java:841)
caused by: javax.net.ssl.SSLHandshakeException:
sun.security.validator.ValidatorException: PKIX path building failed:
sun.security.provider.certpath.SunCertPathBuilderException: unable to find
valid certification path to requested target
    at sun.security.ssl.SSLSocketImpl.fatal(SSLSocketImpl.java:1884)
caused by: sun.security.validator.ValidatorException: PKIX path building
failed: sun.security.provider.certpath.SunCertPathBuilderException: unable
to find valid certification path to requested target
    at
sun.security.validator.PKIXValidator.engineValidate(PKIXValidator.java:292)
caused by: sun.security.provider.certpath.SunCertPathBuilderException:
unable to find valid certification path to requested target
    at
sun.security.provider.certpath.SunCertPathBuilder.engineBuild(SunCertPathBuilder.java:196)
    at java.security.cert.CertPathBuilder.build(CertPathBuilder.java:268)
    at sun.security.validator.PKIXValidator.doBuild(PKIXValidator.java:380)
    at
sun.security.validator.PKIXValidator.engineValidate(PKIXValidator.java:292)
    at sun.security.validator.Validator.validate(Validator.java:260)
    at
sun.security.ssl.X509TrustManagerImpl.validate(X509TrustManagerImpl.java:326)
    at
sun.security.ssl.X509TrustManagerImpl.checkTrusted(X509TrustManagerImpl.java:231)
    at
sun.security.ssl.X509TrustManagerImpl.checkServerTrusted(X509TrustManagerImpl.java:126)
    at
sun.security.ssl.ClientHandshaker.serverCertificate(ClientHandshaker.java:1323)
    at
sun.security.ssl.ClientHandshaker.processMessage(ClientHandshaker.java:153)
    at sun.security.ssl.Handshaker.processLoop(Handshaker.java:868)
    at sun.security.ssl.Handshaker.process_record(Handshaker.java:804)
    at sun.security.ssl.SSLSocketImpl.readRecord(SSLSocketImpl.java:1016)
    at
sun.security.ssl.SSLSocketImpl.performInitialHandshake(SSLSocketImpl.java:1312)
    at
sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1339)
    at
sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1323)
    at
sun.net.www.protocol.https.HttpsClient.afterConnect(HttpsClient.java:563)
    at
sun.net.www.protocol.https.AbstractDelegateHttpsURLConnection.connect(AbstractDelegateHttpsURLConnection.java:185)
    at
sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1300)
    at
sun.net.www.protocol.https.HttpsURLConnectionImpl.getInputStream(HttpsURLConnectionImpl.java:254)
    at java.net.URL.openStream(URL.java:1037)
    at org.apache.xml.resolver.Catalog.parseCatalogFile(Catalog.java:852)
    at
org.apache.xml.resolver.Catalog.parsePendingCatalogs(Catalog.java:756)
    at org.apache.xml.resolver.Catalog.parseCatalog(Catalog.java:604)
    at
org.theospi.jsf.impl.XmlDocumentHandler.resolveEntity(XmlDocumentHandler.java:144)
    at
com.sun.org.apache.xerces.internal.util.EntityResolverWrapper.resolveEntity(EntityResolverWrapper.java:110)
    at
com.sun.org.apache.xerces.internal.impl.XMLEntityManager.resolveEntityAsPerStax(XMLEntityManager.java:985)
    at
com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl$DTDDriver.dispatch(XMLDocumentScannerImpl.java:1152)
    at
com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl$DTDDriver.next(XMLDocumentScannerImpl.java:1050)
    at
com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl$PrologDriver.next(XMLDocumentScannerImpl.java:964)
    at
com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl.next(XMLDocumentScannerImpl.java:606)
    at
com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl.next(XMLNSDocumentScannerImpl.java:116)
    at
com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(XMLDocumentFragmentScannerImpl.java:511)
    at
com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:846)
    at
com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:775)
    at
com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(XMLParser.java:123)
    at
com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(AbstractSAXParser.java:1210)
    at
com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl$JAXPSAXParser.parse(SAXParserImpl.java:628)
    at
com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl.parse(SAXParserImpl.java:332)
    at javax.xml.parsers.SAXParser.parse(SAXParser.java:195)
    at
org.theospi.jsf.tag.XmlDocumentTag.findComponent(XmlDocumentTag.java:138)
    at javax.faces.webapp.UIComponentTag.doStartTag(UIComponentTag.java:451)
    at
org.apache.jsp.freeForm.pageProperties_jsp._jspx_meth_ospx_005fxmlDocument_005f0(pageProperties_jsp.java:2235)
    at
org.apache.jsp.freeForm.pageProperties_jsp._jspx_meth_f_005fsubview_005f1(pageProperties_jsp.java:2133)
    at
org.apache.jsp.freeForm.pageProperties_jsp._jspx_meth_ospx_005fxheaderdrawer_005f1(pageProperties_jsp.java:2102)
    at
org.apache.jsp.freeForm.pageProperties_jsp._jspx_meth_ospx_005fxheader_005f1(pageProperties_jsp.java:2052)
    at
org.apache.jsp.freeForm.pageProperties_jsp._jspx_meth_h_005fform_005f0(pageProperties_jsp.java:354)
    at
org.apache.jsp.freeForm.pageProperties_jsp._jspx_meth_sakai_005fview_005f0(pageProperties_jsp.java:269)
    at
org.apache.jsp.freeForm.pageProperties_jsp._jspx_meth_f_005fview_005f0(pageProperties_jsp.java:239)
    at
org.apache.jsp.freeForm.pageProperties_jsp._jspService(pageProperties_jsp.java:205)
    at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:728)
    at
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:432)
    at
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:390)
    at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:334)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:728)
    at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)
    at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
    at
org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:749)
    at
org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:487)
    at
org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:412)
    at
org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:339)
    at
com.sun.faces.context.ExternalContextImpl.dispatch(ExternalContextImpl.java:346)
    at
com.sun.faces.application.ViewHandlerImpl.renderView(ViewHandlerImpl.java:152)
    at
org.sakaiproject.jsf.app.SakaiViewHandler.renderView(SakaiViewHandler.java:159)
    at
com.sun.faces.lifecycle.RenderResponsePhase.execute(RenderResponsePhase.java:107)
    at com.sun.faces.lifecycle.LifecycleImpl.phase(LifecycleImpl.java:268)
    at com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:137)
    at javax.faces.webapp.FacesServlet.service(FacesServlet.java:214)
    at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)
    at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
    at
org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:749)
    at
org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:487)
    at
org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:412)
    at
org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:339)
    at
org.theospi.portfolio.shared.control.servlet.HelperAwareJsfTool.dispatch(HelperAwareJsfTool.java:161)
    at org.sakaiproject.jsf.util.JsfTool.doGet(JsfTool.java:241)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:621)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:728)
    at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)
    at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
    at org.sakaiproject.util.RequestFilter.doFilter(RequestFilter.java:634)
    at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
    at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
    at
org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:749)
    at
org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:487)
    at
org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:379)
    at
org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:339)
    at
org.sakaiproject.tool.impl.ActiveToolComponent$MyActiveTool.help(ActiveToolComponent.java:581)
    at
org.sakaiproject.spring.util.SpringTool.sendToHelper(SpringTool.java:280)
    at org.sakaiproject.spring.util.SpringTool.dispatch(SpringTool.java:143)
    at org.sakaiproject.spring.util.SpringTool.doGet(SpringTool.java:294)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:621)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:728)
    at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)
    at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
    at org.sakaiproject.util.RequestFilter.doFilter(RequestFilter.java:634)
    at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
    at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
    at
org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:749)
    at
org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:487)
    at
org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:379)
    at
org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:339)
    at
org.sakaiproject.tool.impl.ActiveToolComponent$MyActiveTool.forward(ActiveToolComponent.java:511)
    at
org.sakaiproject.portal.charon.SkinnableCharonPortal.forwardTool(SkinnableCharonPortal.java:1483)
    at
org.sakaiproject.portal.charon.handlers.ToolHandler.doTool(ToolHandler.java:213)
    at
org.sakaiproject.portal.charon.handlers.ToolHandler.doGet(ToolHandler.java:96)
    at
org.sakaiproject.portal.charon.SkinnableCharonPortal.doGet(SkinnableCharonPortal.java:894)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:621)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:728)
    at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)
    at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
    at org.sakaiproject.util.RequestFilter.doFilter(RequestFilter.java:695)
    at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
    at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
    at
org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:222)
    at
org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123)
    at
org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:502)
    at
org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171)
    at
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:99)
    at
org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:953)
    at
org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
    at
org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:408)
    at org.apache.coyote.ajp.AjpProcessor.process(AjpProcessor.java:200)
    at
org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:589)
    at
org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:310)
    at
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
    at
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
    at java.lang.Thread.run(Thread.java:724)

Tool Placement:
No Placement



On Tue, Sep 24, 2013 at 8:59 AM, Sanghyun Jeon <euksa99 at gmail.com> wrote:

> I hope I found duplicated jars because I need to resolve this issue:
> Below is what we have currently. Please let me know if I miss
> anything..and thank you in advance.
>
> shared/lib
> -rw-r--r--. 1 root root   83329 Sep 18 14:34 OkiOSID-2.0.jar
> -rw-r--r--. 1 root root   80266 Sep 19 10:49 osp-common-api-2.9.3.jar
> -rw-r--r--. 1 root root    9212 Sep 19 10:49 osp-glossary-api-2.9.3.jar
> -rw-r--r--. 1 root root   28513 Sep 19 10:49 osp-glossary-help-2.9.3.jar
> -rw-r--r--. 1 root root    8504 Sep 19 10:49 osp-integration-api-2.9.3.jar
> -rw-r--r--. 1 root root   44104 Sep 19 10:49 osp-matrix-api-2.9.3.jar
> -rw-r--r--. 1 root root   66805 Sep 19 10:49 osp-matrix-help-2.9.3.jar
> -rw-r--r--. 1 root root    9874 Sep 19 10:49 osp-portal-api-2.9.3.jar
> -rw-r--r--. 1 root root   35897 Sep 19 10:49 osp-presentation-api-2.9.3.jar
> -rw-r--r--. 1 root root  147530 Sep 19 10:49
> osp-presentation-help-2.9.3.jar
> -rw-r--r--. 1 root root   28594 Sep 19 10:49 osp-styles-help-2.9.3.jar
> -rw-r--r--. 1 root root   22458 Sep 19 10:49 osp-wizard-api-2.9.3.jar
> -rw-r--r--. 1 root root   62702 Sep 19 10:49 osp-wizard-help-2.9.3.jar
>
> common/lib
> -rw-r--r--. 1 root root  60686 Sep 18 14:04 commons-logging-1.1.1.jar
> -rw-r--r--. 1 root root 481535 Sep 18 14:09 log4j-1.2.16.jar
> -rw-r--r--. 1 root root 855948 Sep 13 09:31
> mysql-connector-java-5.1.26-bin.jar
> -rw-r--r--. 1 root root   2698 Sep 19 10:48 sakai-dav-common-2.9.3.jar
> -rw-r--r--. 1 root root   3853 Sep 19 10:48 sakai-dav-server-2.9.3.jar
> -rw-r--r--. 1 root root   2687 Sep 19 10:42 sakai-kernel-common-1.3.3.jar
>
>
>
> On Mon, Sep 23, 2013 at 7:42 PM, Steve Swinsburg <
> steve.swinsburg at gmail.com> wrote:
>
>> Just cleaning out webapps is insufficient for an upgrade.
>> Also clean out shared/lib and components and have a look in common/lib
>> for dupes too.
>>
>> You likely have duplicate jars, as Chris mentioned.
>>
>>
>> On Tue, Sep 24, 2013 at 8:56 AM, Sanghyun Jeon <euksa99 at gmail.com> wrote:
>>
>>> Yes it is a clean tomcat 7. Our previous version was 5 but we run rm -rf
>>> webapps/* before maven build.
>>>
>>> S
>>>
>>>
>>> On Mon, Sep 23, 2013 at 1:14 PM, Maurer, Christopher Wayne <
>>> chmaurer at iu.edu> wrote:
>>>
>>>>  Was this a clean tomcat or did it contain the previous version of
>>>> sakai?  Maybe you have older versions of the spring jars in tomcat's
>>>> shared/lib?
>>>>
>>>>  Chris
>>>>
>>>>   From: Sanghyun Jeon <euksa99 at gmail.com>
>>>> Date: Monday, September 23, 2013 4:08 PM
>>>> To: Christopher Maurer <chmaurer at iu.edu>
>>>> Cc: sakai-dev <sakai-dev at collab.sakaiproject.org>
>>>> Subject: Re: [Building Sakai] sakai 2.9.3 Portfolios error
>>>>
>>>>   Unfortunately, the current JAVA_OPTS are:
>>>> export JAVA_OPTS="-server -Xms1537m -Xmx3072m -XX:PermSize=256m
>>>> -XX:MaxPermSize=512m -XX:NewSize=768m -XX:MaxNewSize=1024m
>>>> -Djava.awt.headless=true -Dhttp.agent=Sakai
>>>> -Dorg.apache.jasper.compiler.Parser.STRICT_QUOTE_ESCAPING=false
>>>> -Dsun.lang.ClassLoader.allowArraySyntax=true
>>>>  -Dsakai.security=/opt/tomcat/sakai -Dsakai.home=/opt/tomcat/sakai"
>>>>
>>>>
>>>>  any other suggestions / advice?
>>>>
>>>>  S
>>>>
>>>>
>>>> On Mon, Sep 23, 2013 at 6:41 AM, Maurer, Christopher Wayne <
>>>> chmaurer at iu.edu> wrote:
>>>>
>>>>>  I wonder if maybe you are missing a java/tomcat setting?  Like this
>>>>> one:
>>>>>
>>>>> -Dorg.apache.jasper.compiler.Parser.STRICT_QUOTE_ESCAPING=false
>>>>>
>>>>>  Just a guess though.
>>>>>
>>>>>  Chris
>>>>>
>>>>>   From: Sanghyun Jeon <euksa99 at gmail.com>
>>>>> Date: Friday, September 20, 2013 2:10 PM
>>>>> To: sakai-dev <sakai-dev at collab.sakaiproject.org>
>>>>> Subject: [Building Sakai] sakai 2.9.3 Portfolios error
>>>>>
>>>>>   Hello,
>>>>>
>>>>>  We are currently upgrading Sakai 2.9.3 and we are experiencing null
>>>>> stack trace when Portfolios < Create New Portfolio < type title and check
>>>>> "Design your own portfoilo" and click "Create" < Add/Edit Content < Add
>>>>> Page < Save Changes.
>>>>>
>>>>>  We don't apply any local modification at this moment. If we miss
>>>>> anything, please educate us and thanks.
>>>>>
>>>>>
>>>>>
>>>>>
>>>>>
>>>>
>>>
>>> _______________________________________________
>>> sakai-dev mailing list
>>> sakai-dev at collab.sakaiproject.org
>>> http://collab.sakaiproject.org/mailman/listinfo/sakai-dev
>>>
>>> TO UNSUBSCRIBE: send email to
>>> sakai-dev-unsubscribe at collab.sakaiproject.org with a subject of
>>> "unsubscribe"
>>>
>>
>>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://collab.sakaiproject.org/pipermail/sakai-dev/attachments/20130924/f826815e/attachment.html 


More information about the sakai-dev mailing list