dini certification

76 views
Skip to first unread message

paulw...@gmail.com

unread,
Aug 17, 2021, 11:31:33 AM8/17/21
to DSpace Technical Support
Hello,

We are applying for dini certification, and we need an OAI-set for the open access documents.  I have attempted two things:

1. 
I have created a collection named Open Access and put one of our open access documents in it as a test.  This document belongs to another collection.  After running discovery to update the solr index, the document now appears in both places.

But in the oai inteface, the collection appears, but the document does not.

2.
I have followed Caudia Jürgen's instructions under

However, after revising xoai.xml, no Open Access Docs set appears in the list.

Can anyone who has been through this process give any pointers?

Best regards,
Paul Warner

Michael Plate

unread,
Aug 17, 2021, 11:39:09 AM8/17/21
to dspac...@googlegroups.com
Hi Paul,

Am 17.08.21 um 17:31 schrieb paulw...@gmail.com:
> Hello,
>
> We are applying for dini certification, and we need an OAI-set for the
> open access documents.  I have attempted two things:
>
> 1.
> I have created a collection named Open Access and put one of our open
> access documents in it as a test.  This document belongs to another
> collection.  After running discovery to update the solr index, the
> document now appears in both places.

do you really want that ? Or do you want just to have any oa doc in a set ?

>
> But in the oai inteface, the collection appears, but the document does not.
[…]

sounds like you missed updating the OAI cache:

[bin]/dspace oai -h

paulw...@gmail.com

unread,
Aug 18, 2021, 5:38:16 AM8/18/21
to DSpace Technical Support
Thanks, Michael, for the tip!  I ran a complete rebuild, and ran out of memory part way through.  I increased the amount allotted to Java in the dspace script (-Xmx) and it ran fine the second time.  It seemed to finish with the 103000 documents in our repository, then it started over, and at about 10000 hit a null pointer exception.  I don't know why it started over, and would like to understand - but it seems not to have broken anything.  I have a working oai system again.  This refresh did find the file in my test open access collection and display the metadata in the oai interface.

Anyway, more importantly, to answer your question, I would prefer to make the virtual set work (with all the open access documents in it) and avoid the maintenance of a separate oa collection holding duplicates of other collections.  However, having tried Claudia Jürgen's seemingly clear instructions, I still do not have the virtual set appearing in my oai list.  I have enclosed my xoai.xml - could someone take a look and tell me what I have done wrong?

Thanks!!

Best regards,
Paul
xoai.xml

paulw...@gmail.com

unread,
Aug 20, 2021, 4:42:46 AM8/20/21
to DSpace Technical Support
Hello,

FYI, we are running DSpace 6.3 with Postgresql.

Here is an update:

I have not solved the configuration problem with xoai.xml, in trying for a virtual set based on the presence of the string 'openAccess' in the metadata field dc.rights.  I fiddled and tried various things with the file, but I always end up with this error breaking the oai page:

Type Exception Report

Message OAI 2.0 wasn't correctly initialized, please check the log for previous errors

Description The server encountered an unexpected condition that prevented it from fulfilling the request.

Exception

javax.servlet.ServletException: OAI 2.0 wasn't correctly initialized, please check the log for previous errors
org.dspace.xoai.controller.DSpaceOAIDataProvider.contextAction(DSpaceOAIDataProvider.java:124)
sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
java.lang.reflect.Method.invoke(Method.java:498)
org.springframework.web.method.support.InvocableHandlerMethod.invoke(InvocableHandlerMethod.java:215)
org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:132)
org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:104)
org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandleMethod(RequestMappingHandlerAdapter.java:743)
org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:672)
org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:82)
org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:933)
org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:867)
org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:951)
org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:842)
javax.servlet.http.HttpServlet.service(HttpServlet.java:635)
org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:827)
javax.servlet.http.HttpServlet.service(HttpServlet.java:742)
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)

Root Cause

org.dspace.xoai.services.api.config.XOAIManagerResolverException: com.lyncode.xoai.dataprovider.exceptions.ConfigurationException: Metadata FormatConfiguration referred as oaidc does not exist
org.dspace.xoai.services.impl.context.DSpaceXOAIManagerResolver.getManager(DSpaceXOAIManagerResolver.java:32)
org.dspace.xoai.controller.DSpaceOAIDataProvider.contextAction(DSpaceOAIDataProvider.java:86)
sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
java.lang.reflect.Method.invoke(Method.java:498)
org.springframework.web.method.support.InvocableHandlerMethod.invoke(InvocableHandlerMethod.java:215)
org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:132)
org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:104)
org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandleMethod(RequestMappingHandlerAdapter.java:743)
org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:672)
org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:82)
org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:933)
org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:867)
org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:951)
org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:842)
javax.servlet.http.HttpServlet.service(HttpServlet.java:635)
org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:827)
javax.servlet.http.HttpServlet.service(HttpServlet.java:742)
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)

Root Cause

com.lyncode.xoai.dataprovider.exceptions.ConfigurationException: Metadata FormatConfiguration referred as oaidc does not exist
com.lyncode.xoai.dataprovider.core.ContextManager.<init>(ContextManager.java:63)
com.lyncode.xoai.dataprovider.core.XOAIManager.<init>(XOAIManager.java:57)
org.dspace.xoai.services.impl.context.DSpaceXOAIManagerResolver.getManager(DSpaceXOAIManagerResolver.java:30)
org.dspace.xoai.controller.DSpaceOAIDataProvider.contextAction(DSpaceOAIDataProvider.java:86)
sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
java.lang.reflect.Method.invoke(Method.java:498)
org.springframework.web.method.support.InvocableHandlerMethod.invoke(InvocableHandlerMethod.java:215)
org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:132)
org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:104)
org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandleMethod(RequestMappingHandlerAdapter.java:743)
org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:672)
org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:82)
org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:933)
org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:867)
org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:951)
org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:842)
javax.servlet.http.HttpServlet.service(HttpServlet.java:635)
org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:827)
javax.servlet.http.HttpServlet.service(HttpServlet.java:742)
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)

This error message is not helpful to me, and I do not see a way to debug based on this.  If someone can see it, please let me know!  All I can do is fiddle with the xml, and I have unfortunately come to the end of my ideas about that.  If I revert to the original xoai.xml, the error goes away.  Of course the oaidc format configuration is unchanged in both versions of xoai.xml.

However, I had some success with the exception when updating the oai index.  When running 

bin/dspace oai import -co

I had first gotten an out of memory error, which I mentioned above.  I raised the allotment for java in the dspace script, and that eliminated the memory error.  It allowed the process to go further however, to the point at which it ran into a null pointer exception:

java.lang.NullPointerException
        at org.dspace.xoai.app.XOAI.willChangeStatus(XOAI.java:441)
        at org.dspace.xoai.app.XOAI.index(XOAI.java:368)
        at org.dspace.xoai.app.XOAI.index(XOAI.java:280)
        at org.dspace.xoai.app.XOAI.indexAll(XOAI.java:227) the
        at org.dspace.xoai.app.XOAI.index(XOAI.java:134)
        at org.dspace.xoai.app.XOAI.main(XOAI.java:560)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:498)
        at org.dspace.app.launcher.ScriptLauncher.runOneCommand(ScriptLauncher.java:229)
        at org.dspace.app.launcher.ScriptLauncher.main(ScriptLauncher.java:81)

I looked at willChangeStatus in XOAI.java, and found it was checking the ResourcePolicy for the current item, and it was clear from the code that the null pointer exception occurred when it ran policy.getGroup().  I checked our resourcepolicy table in the database, and found 45 instances in which an entry had a null for the epersongroup_id column.  I do not know why this error happened, but these were special cases instantiated by my colleague (who is on vacation at the moment, so I cannot ask her.  :-)  ).  I added a check in the willChangeStatus method if policy.getGroup() were null, to print out the item uuid.  This confirmed that these items with the nulls in the resourcepolicy table were the culprits.  I filled these nulls with the Administrator group id, and was able to run the full import successfully.

But the unknown error(s) in xoai.xml are still causing the oai listSets page to crash with the error listed above.

I know it is the time of year when people are on vacation, and do not have time to check these pages.  But I have spent enough time on this problem, and I am ready to go back to my original idea, before I heard of virtual sets: I will create a collection Open Access and copy in the items that are open access.  Then I can run the oai import, and presumably all these items' metadata will appear in the oai page, and we will conform with the DINI requirement.  Uff.

Thanks for reading this to the end!  ;-)

Best regards,
Paul

Michael Plate

unread,
Aug 20, 2021, 5:23:30 AM8/20/21
to dspac...@googlegroups.com
Hi Paul,

Am 20.08.21 um 10:42 schrieb paulw...@gmail.com:
> Hello,
>
> FYI, we are running DSpace 6.3 with Postgresql.
>
> Here is an update:
>
> I have not solved the configuration problem with xoai.xml, in trying for
> a virtual set based on the presence of the string 'openAccess' in the
> metadata field dc.rights.

I can send it, but we have changed much of that file.


[…]
> Metadata FormatConfiguration referred as oaidc does not exist
[…]

look carefully for "oaidc" in xoai.mxl,e.g.

<Format ref="oaidc"/>

in the different Contexts - ours is currently only in the "driver" Context.
Cool :) .

CU

Michael


Reply all
Reply to author
Forward
0 new messages