cancel
Showing results for 
Search instead for 
Did you mean: 

Bug in Web Repository Manager ?

Former Member
0 Kudos

Hi experts,

I have set up a Web RM to crawl and index a web site on an intranet. The web site contains news, and the url follow a "Year/Month/Day" pattern, for instance "/web_rm_news/web_site_news/Year_2006/Month_2006.06/Day_2006.06.01/news_1.htm" is the URL to access news_1 from the web repository.

I want to create one index per month, so I set up "/Year_2006/Month_2006.06/" as starting page of my repository. The crawler fetches the page of the month and on that page follows a link for each day, which is like "/Year_2006/Month_2006.06/Day_2006.06.01". The error occurs there : the RM returns an error code "403 : not authorized".

To test the behaviour, enter the URL directly in the browser : "http://<server>:<port>/irj/servlet/prt/portal/prtroot/com.sap.km.cm.docs/web_rm_news/web_site_news/Year_2006/Month_2006.06/Day_2006.06.03" and I get the same 403 error. I need to add a "/" at the end or the URL to get it to work !

This behaviour normally never happens on standard web sites, you don't need to add a "/" at the end of the URL so that the browser automatically fetches the "index.htm" file.

Is that a known bug of the Web RM ? Or did I miss something in its configuration ?

Thanks a lot for your help.

Best Regards,

Nicolas

Edit : The server is SPS16

Accepted Solutions (1)

Accepted Solutions (1)

Former Member
0 Kudos

When you see the 403 error page returned by KM to the browser, do a "show source". That should reveal where the access was actually denied.

Best regards, Julian

Former Member
0 Kudos

Julian,

Here is the body of the error page, with the stacktrace :

<body>

<h1>403</h1>

<p>The requested operation is forbidden for this resource. You do not have the permissions required to access this resource.</p>

<div style="display: none;">

<h2>stack trace</h2>

<p>

<pre>com.sapportals.wcm.protocol.webdav.server.WDServletException: Forbidden

at com.sapportals.wcm.protocol.webdav.server.WDGetHandler.handle(WDGetHandler.java:114)

at com.sapportals.wcm.protocol.webdav.server.WDServlet.doGet(WDServlet.java:777)

at com.sapportals.wcm.protocol.webdav.server.WDServlet.service(WDServlet.java:458)

at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)

at com.sapportals.wcm.portal.proxy.PCProxyServlet.service(PCProxyServlet.java:331)

at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)

at com.sapportals.portal.prt.core.broker.ServletComponentItem$ServletWrapperComponent.doContent(ServletComponentItem.java:110)

at com.sapportals.portal.prt.component.AbstractPortalComponent.serviceDeprecated(AbstractPortalComponent.java:209)

at com.sapportals.portal.prt.component.AbstractPortalComponent.service(AbstractPortalComponent.java:114)

at com.sapportals.portal.prt.core.PortalRequestManager.callPortalComponent(PortalRequestManager.java:328)

at com.sapportals.portal.prt.core.PortalRequestManager.dispatchRequest(PortalRequestManager.java:136)

at com.sapportals.portal.prt.core.PortalRequestManager.dispatchRequest(PortalRequestManager.java:189)

at com.sapportals.portal.prt.component.PortalComponentResponse.include(PortalComponentResponse.java:215)

at com.sapportals.portal.prt.pom.PortalNode.service(PortalNode.java:646)

at com.sapportals.portal.prt.core.PortalRequestManager.callPortalComponent(PortalRequestManager.java:328)

at com.sapportals.portal.prt.core.PortalRequestManager.dispatchRequest(PortalRequestManager.java:136)

at com.sapportals.portal.prt.core.PortalRequestManager.dispatchRequest(PortalRequestManager.java:189)

at com.sapportals.portal.prt.core.PortalRequestManager.runRequestCycle(PortalRequestManager.java:753)

at com.sapportals.portal.prt.connection.ServletConnection.handleRequest(ServletConnection.java:240)

at com.sapportals.portal.prt.dispatcher.Dispatcher$doService.run(Dispatcher.java:545)

at java.security.AccessController.doPrivileged(Native Method)

at com.sapportals.portal.prt.dispatcher.Dispatcher.service(Dispatcher.java:405)

at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)

at com.sap.engine.services.servlets_jsp.server.servlet.InvokerServlet.service(InvokerServlet.java:156)

at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)

at com.sap.engine.services.servlets_jsp.server.HttpHandlerImpl.runServlet(HttpHandlerImpl.java:390)

at com.sap.engine.services.servlets_jsp.server.HttpHandlerImpl.handleRequest(HttpHandlerImpl.java:264)

at com.sap.engine.services.httpserver.server.RequestAnalizer.startServlet(RequestAnalizer.java:347)

at com.sap.engine.services.httpserver.server.RequestAnalizer.startServlet(RequestAnalizer.java:325)

at com.sap.engine.services.httpserver.server.RequestAnalizer.invokeWebContainer(RequestAnalizer.java:887)

at com.sap.engine.services.httpserver.server.RequestAnalizer.handle(RequestAnalizer.java:241)

at com.sap.engine.services.httpserver.server.Client.handle(Client.java:92)

at com.sap.engine.services.httpserver.server.Processor.request(Processor.java:148)

at com.sap.engine.core.service630.context.cluster.session.ApplicationSessionMessageListener.process(ApplicationSessionMessageListener.java:33)

at com.sap.engine.core.cluster.impl6.session.MessageRunner.run(MessageRunner.java:41)

at com.sap.engine.core.thread.impl3.ActionObject.run(ActionObject.java:37)

at java.security.AccessController.doPrivileged(Native Method)

at com.sap.engine.core.thread.impl3.SingleThread.execute(SingleThread.java:100)

at com.sap.engine.core.thread.impl3.SingleThread.run(SingleThread.java:170)</pre>

</p>

<h2>contained exception</h2>

<p>Forbidden</p>

<p>

<pre>com.sapportals.wcm.repository.AccessDeniedException: Forbidden

at com.sapportals.wcm.repository.ResourceException.fillInStackTrace(ResourceException.java:399)

at java.lang.Throwable.&lt;init&gt;(Throwable.java:195)

at java.lang.Exception.&lt;init&gt;(Exception.java:41)

at com.sapportals.wcm.WcmException.&lt;init&gt;(WcmException.java:59)

at com.sapportals.wcm.util.content.ContentException.&lt;init&gt;(ContentException.java:38)

at com.sapportals.wcm.repository.ResourceException.&lt;init&gt;(ResourceException.java:162)

at com.sapportals.wcm.repository.AccessDeniedException.&lt;init&gt;(AccessDeniedException.java:76)

at com.sapportals.wcm.protocol.webdav.WDHttp.exception(WDHttp.java:107)

at com.sapportals.wcm.protocol.webdav.WDHttp.exception(WDHttp.java:78)

at com.sapportals.wcm.repository.manager.web.cache.WebCache.retrieve(WebCache.java:933)

at com.sapportals.wcm.repository.manager.web.cache.WebCache.retrieve(WebCache.java:895)

at com.sapportals.wcm.repository.manager.web.cache.WebCache.discover(WebCache.java:758)

at com.sapportals.wcm.repository.manager.web.cache.WebCache.getResource(WebCache.java:1101)

at com.sapportals.wcm.repository.manager.web.cache.WebCache.getResource(WebCache.java:318)

at com.sapportals.wcm.repository.manager.web.cache.WebCacheFactory$LiveCache.getResource(WebCacheFactory.java:315)

at com.sapportals.wcm.repository.manager.web.cache.WebMetaCache.getResource(WebMetaCache.java:203)

at com.sapportals.wcm.repository.manager.web.WebRepositoryManager.getResource(WebRepositoryManager.java:93)

at com.sapportals.wcm.repository.RMAdapter.getResource(RMAdapter.java:227)

at com.sapportals.wcm.repository.runtime.CmAdapter.findResource(CmAdapter.java:1349)

at com.sapportals.wcm.repository.runtime.CmAdapter.findManagerAndResource(CmAdapter.java:1322)

at com.sapportals.wcm.repository.runtime.CmAdapter.getResourceImpl(CmAdapter.java:979)

at com.sapportals.wcm.repository.runtime.CmAdapter.getResource(CmAdapter.java:192)

at com.sapportals.wcm.protocol.webdav.server.WDContext.getResource(WDContext.java:576)

at com.sapportals.wcm.protocol.webdav.server.WDContext.getResourceOrRedirect(WDContext.java:609)

at com.sapportals.wcm.protocol.webdav.server.WDGetHandler.handle(WDGetHandler.java:108)

at com.sapportals.wcm.protocol.webdav.server.WDServlet.doGet(WDServlet.java:777)

at com.sapportals.wcm.protocol.webdav.server.WDServlet.service(WDServlet.java:458)

at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)

at com.sapportals.wcm.portal.proxy.PCProxyServlet.service(PCProxyServlet.java:331)

at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)

at com.sapportals.portal.prt.core.broker.ServletComponentItem$ServletWrapperComponent.doContent(ServletComponentItem.java:110)

at com.sapportals.portal.prt.component.AbstractPortalComponent.serviceDeprecated(AbstractPortalComponent.java:209)

at com.sapportals.portal.prt.component.AbstractPortalComponent.service(AbstractPortalComponent.java:114)

at com.sapportals.portal.prt.core.PortalRequestManager.callPortalComponent(PortalRequestManager.java:328)

at com.sapportals.portal.prt.core.PortalRequestManager.dispatchRequest(PortalRequestManager.java:136)

at com.sapportals.portal.prt.core.PortalRequestManager.dispatchRequest(PortalRequestManager.java:189)

at com.sapportals.portal.prt.component.PortalComponentResponse.include(PortalComponentResponse.java:215)

at com.sapportals.portal.prt.pom.PortalNode.service(PortalNode.java:646)

at com.sapportals.portal.prt.core.PortalRequestManager.callPortalComponent(PortalRequestManager.java:328)

at com.sapportals.portal.prt.core.PortalRequestManager.dispatchRequest(PortalRequestManager.java:136)

at com.sapportals.portal.prt.core.PortalRequestManager.dispatchRequest(PortalRequestManager.java:189)

at com.sapportals.portal.prt.core.PortalRequestManager.runRequestCycle(PortalRequestManager.java:753)

at com.sapportals.portal.prt.connection.ServletConnection.handleRequest(ServletConnection.java:240)

at com.sapportals.portal.prt.dispatcher.Dispatcher$doService.run(Dispatcher.java:545)

at java.security.AccessController.doPrivileged(Native Method)

at com.sapportals.portal.prt.dispatcher.Dispatcher.service(Dispatcher.java:405)

at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)

at com.sap.engine.services.servlets_jsp.server.servlet.InvokerServlet.service(InvokerServlet.java:156)

at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)

at com.sap.engine.services.servlets_jsp.server.HttpHandlerImpl.runServlet(HttpHandlerImpl.java:390)

at com.sap.engine.services.servlets_jsp.server.HttpHandlerImpl.handleRequest(HttpHandlerImpl.java:264)

at com.sap.engine.services.httpserver.server.RequestAnalizer.startServlet(RequestAnalizer.java:347)

at com.sap.engine.services.httpserver.server.RequestAnalizer.startServlet(RequestAnalizer.java:325)

at com.sap.engine.services.httpserver.server.RequestAnalizer.invokeWebContainer(RequestAnalizer.java:887)

at com.sap.engine.services.httpserver.server.RequestAnalizer.handle(RequestAnalizer.java:241)

at com.sap.engine.services.httpserver.server.Client.handle(Client.java:92)

at com.sap.engine.services.httpserver.server.Processor.request(Processor.java:148)

at com.sap.engine.core.service630.context.cluster.session.ApplicationSessionMessageListener.process(ApplicationSessionMessageListener.java:33)

at com.sap.engine.core.cluster.impl6.session.MessageRunner.run(MessageRunner.java:41)

at com.sap.engine.core.thread.impl3.ActionObject.run(ActionObject.java:37)

at java.security.AccessController.doPrivileged(Native Method)

at com.sap.engine.core.thread.impl3.SingleThread.execute(SingleThread.java:100)

at com.sap.engine.core.thread.impl3.SingleThread.run(SingleThread.java:170)</pre>

</p>

</div>

</body>

Hope that helps.

Best Regards,

Nicolas

Former Member
0 Kudos

It seems to me that the remote server is sending back a 401 or 403 message, thus the exception in KM.

Former Member
0 Kudos

Julian,

I don't think so because when I enter the fetched URL (without "/" at the end) directly in the browser, the page is correctly displayed. I don't get this 403 error.

Is there a way of automatically adding the "/" at the end of the URL then ? Can we configure the crawler in that way ?

Best Regards,

Nicolas

Former Member
0 Kudos

Hard to say without an HTTP trace. You may not see an error in the browser because you are already authenticated (cookie?).

Anyway, if you think there's problem, you'll have to open a support case.

Former Member
0 Kudos

Hello Julian,

Thanks for helping me.

What is strange to me is that the crawler can fetch the URL ending by a "/" and cannot fetch the same URL without the "/" at the end.

On the other hand, I can fetch both URLs either with the browser or with an HTTP client deployed on the portal using a Portal Component.

I opened a support case, and they are investivating detailled logs. I keep you posted on that as soon as I know more.

Regards,

Nicolas

Former Member
0 Kudos

You wouldn't happen to be using Apache as a proxy would you?

Try putting 'UseCanonicalName Off' into your server

configuration. I found that one off an Apache board went we were looking into using it.

Former Member
0 Kudos

Investigation going on...

Issue might come from IIS according to the remote server admin. Keep you posted as soon as I get news.

Nicolas

Former Member
0 Kudos

Are you using Apache or IIS 6.0?

Answers (0)