DSpace 的 OAI servlet 使用了错误的 baseUrl

DSpace's OAI servlet uses wrong baseUrl

我使用以下名为 OAIHandler.xml 的 Tomcat 上下文描述符来部署 DSpace 5.4 的 OAI servlet:

<?xml version="1.0" encoding="utf-8"?>
<!-- inside file ${DSPACE_CATALINA_BASE}/conf/Catalina/localhost/OAIHandler.xml
<Context docBase="c:/dspace/webapps/oai">
</Context>

因此,由于文件名为 OAIHandler.xml,Tomcat 将 OAI servlet 部署在 http://localhost:8080/OAIHandler.

访问 URL(例如 http://localhost:8080/OAIHandler/request?verb=Identify)有效 - 页面看起来不错。但是此页面上的链接不使用 http://localhost:8080/OAIHandler/...,而是使用 http://localhost:8080/oai/...

我没有在 /oai 部署任何 servlet,因此这些链接指向任何地方。

我注意到配置文件 config/modules/oai.cfg 可以有一个 属性 dspace.oai.url,所以我将它设置为 http://localhost:8080/OAIHandler - 但我的问题仍然存在。

我查看了 OAI servlet (static/style.xsl) 使用的 XSLT 样式表。它使用 XSLT 表达式 /oai:OAI-PMH/oai:request/text() 来构造链接的开始部分。相关 XML 部分确实说 <request verb="Identify">http://localhost:8080/oai/request</request> 而不是预期的 <request verb="Identify">http://localhost:8080/OAIHandler/request</request>.

谁能帮我指出导致生成错误 <request> XML 元素的错误配置 and/or Java 类?

听起来您检查了正确的文件。可以快速尝试的一件事是清除您的 oai 缓存。 运行 .../dspace/bin/dspace oai clean-cache 强制重建缓存中的页面。