Details
-
Bug
-
Resolution: Obsolete
-
Low
-
1.6.5
Description
Steps to reproduce
1) Setup Crowd Authentication to a crowd instance.
2) In the Crowd URL remove the trailing "/"
I.e. if the URL is
http://192.168.3.59:8095/crowd/services/
then specify
http://192.168.3.59:8095/crowd/services
3) Then press Re-Sync
You will get an error as follows:
2009-01-19 09:01:30,015 ERROR [btpool0-9] org.codehaus.xfire.transport.http.HttpChannel org.codehaus.xfire.transport.http.HttpChannel-sendViaClient - Server returned error code = 404 for URI : http://192.168.3.59:8095/crowd/servicesSecurityServer. Check server logs for details 2009-01-19 09:01:30,031 WARN [btpool0-9] fisheye.app com.cenqua.fisheye.user.crowd.CrowdAuth-listGroups - Problem communicating with Crowd org.codehaus.xfire.XFireRuntimeException: Could not invoke service.. Nested exception is org.codehaus.xfire.fault.XFireFault: Server returned error code = 404 for URI : http://192.168.3.59:8095/crowd/servicesSecurityServer. Check server logs for details org.codehaus.xfire.fault.XFireFault: Server returned error code = 404 for URI : http://192.168.3.59:8095/crowd/servicesSecurityServer. Check server logs for details at org.codehaus.xfire.fault.XFireFault.createFault(XFireFault.java:89) at org.codehaus.xfire.client.Invocation.invoke(Invocation.java:83) at org.codehaus.xfire.client.Invocation.invoke(Invocation.java:114) at org.codehaus.xfire.client.Client.invoke(Client.java:336) at org.codehaus.xfire.client.XFireProxy.handleRequest(XFireProxy.java:77) at org.codehaus.xfire.client.XFireProxy.invoke(XFireProxy.java:57) at $Proxy62.findAllGroupNames(Unknown Source) at com.atlassian.crowd.integration.service.soap.client.SecurityServerClientImpl.findAllGroupNames(SecurityServerClientImpl.java:1037) at com.cenqua.fisheye.user.crowd.CrowdAuth.listGroups(CrowdAuth.java:245) at com.cenqua.fisheye.user.UserManager.getGroupInfos(UserManager.java:805) at com.cenqua.fisheye.web.admin.actions.BaseAdminAction.getGroupInfoMap(BaseAdminAction.java:38) at com.cenqua.fisheye.web.admin.actions.BaseAdminAction.getGroupInfos(BaseAdminAction.java:31) 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 ognl.OgnlRuntime.invokeMethod(OgnlRuntime.java:830) at ognl.OgnlRuntime.getMethodValue(OgnlRuntime.java:1414) at ognl.ObjectPropertyAccessor.getPossibleProperty(ObjectPropertyAccessor.java:60) at ognl.ObjectPropertyAccessor.getProperty(ObjectPropertyAccessor.java:147) at com.opensymphony.xwork.util.OgnlValueStack$ObjectAccessor.getProperty(OgnlValueStack.java:57) at ognl.OgnlRuntime.getProperty(OgnlRuntime.java:2210) at com.opensymphony.xwork.util.CompoundRootAccessor.getProperty(CompoundRootAccessor.java:102) at ognl.OgnlRuntime.getProperty(OgnlRuntime.java:2210) at ognl.ASTProperty.getValueBody(ASTProperty.java:114) at ognl.SimpleNode.evaluateGetValueBody(SimpleNode.java:212) at ognl.SimpleNode.getValue(SimpleNode.java:258) at ognl.Ognl.getValue(Ognl.java:494) at ognl.Ognl.getValue(Ognl.java:458) at com.opensymphony.xwork.util.OgnlUtil.getValue(OgnlUtil.java:192) at com.opensymphony.xwork.util.OgnlValueStack.findValue(OgnlValueStack.java:224) at com.opensymphony.webwork.components.Component.findValue(Component.java:240) at com.opensymphony.webwork.components.ListUIBean.evaluateExtraParams(ListUIBean.java:52) at com.opensymphony.webwork.components.Select.evaluateExtraParams(Select.java:83) at com.opensymphony.webwork.components.UIBean.evaluateParams(UIBean.java:885) at com.opensymphony.webwork.components.UIBean.end(UIBean.java:591) at com.opensymphony.webwork.views.jsp.ComponentTagSupport.doEndTag(ComponentTagSupport.java:21) at org.apache.jsp.WEB_002dINF.jsp.admin.useradmin_jsp._jspx_meth_ww_select_0(useradmin_jsp.java:837) at org.apache.jsp.WEB_002dINF.jsp.admin.useradmin_jsp._jspService(useradmin_jsp.java:237) at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:93) at javax.servlet.http.HttpServlet.service(HttpServlet.java:820) at org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:487) at org.mortbay.jetty.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1144) at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:70) at org.mortbay.jetty.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1136) at com.cenqua.crucible.filters.CrucibleFilter.doFilter(CrucibleFilter.java:140) at org.mortbay.jetty.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1136) at com.cenqua.fisheye.web.filters.TotalityFilter.doFilter(TotalityFilter.java:192) at org.mortbay.jetty.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1136) at com.atlassian.security.auth.trustedapps.filter.TrustedApplicationsFilter.doFilter(TrustedApplicationsFilter.java:98) at org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:236) at org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:167) at org.mortbay.jetty.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1136) at org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:360) at org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:216) at org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:181) at org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:726) at org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:405) at org.mortbay.jetty.servlet.Dispatcher.forward(Dispatcher.java:285) at org.mortbay.jetty.servlet.Dispatcher.forward(Dispatcher.java:126) at com.opensymphony.webwork.dispatcher.ServletDispatcherResult.doExecute(ServletDispatcherResult.java:114) at com.opensymphony.webwork.dispatcher.WebWorkResultSupport.execute(WebWorkResultSupport.java:143) at com.opensymphony.xwork.DefaultActionInvocation.executeResult(DefaultActionInvocation.java:313) at com.opensymphony.xwork.DefaultActionInvocation.invoke(DefaultActionInvocation.java:208) at com.opensymphony.xwork.interceptor.AroundInterceptor.intercept(AroundInterceptor.java:31) at com.opensymphony.xwork.DefaultActionInvocation.invoke(DefaultActionInvocation.java:190) at com.cenqua.fisheye.web.admin.interceptors.LoginInterceptor.intercept(LoginInterceptor.java:30) at com.opensymphony.xwork.DefaultActionInvocation.invoke(DefaultActionInvocation.java:190) at com.opensymphony.xwork.interceptor.AroundInterceptor.intercept(AroundInterceptor.java:31) at com.opensymphony.xwork.DefaultActionInvocation.invoke(DefaultActionInvocation.java:190) at com.opensymphony.xwork.interceptor.AroundInterceptor.intercept(AroundInterceptor.java:31) at com.opensymphony.xwork.DefaultActionInvocation.invoke(DefaultActionInvocation.java:190) at com.opensymphony.xwork.interceptor.AroundInterceptor.intercept(AroundInterceptor.java:31) at com.opensymphony.xwork.DefaultActionInvocation.invoke(DefaultActionInvocation.java:190) at com.opensymphony.xwork.interceptor.AroundInterceptor.intercept(AroundInterceptor.java:31) at com.opensymphony.xwork.DefaultActionInvocation.invoke(DefaultActionInvocation.java:190) at com.opensymphony.xwork.interceptor.AroundInterceptor.intercept(AroundInterceptor.java:31) at com.opensymphony.xwork.DefaultActionInvocation.invoke(DefaultActionInvocation.java:190) at com.opensymphony.xwork.interceptor.ExceptionMappingInterceptor.intercept(ExceptionMappingInterceptor.java:186) at com.opensymphony.xwork.DefaultActionInvocation.invoke(DefaultActionInvocation.java:190) at com.opensymphony.xwork.DefaultActionProxy.execute(DefaultActionProxy.java:116) at com.opensymphony.webwork.dispatcher.DispatcherUtils.serviceAction(DispatcherUtils.java:273) at com.opensymphony.webwork.dispatcher.ServletDispatcher.service(ServletDispatcher.java:111) at javax.servlet.http.HttpServlet.service(HttpServlet.java:820) at org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:487) at org.mortbay.jetty.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1144) at org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:83) at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76) at org.mortbay.jetty.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1136) at com.cenqua.crucible.filters.CrucibleFilter.doFilter(CrucibleFilter.java:140) at org.mortbay.jetty.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1136) at com.cenqua.fisheye.web.filters.TotalityFilter.doFilter(TotalityFilter.java:192) at org.mortbay.jetty.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1136) at com.atlassian.security.auth.trustedapps.filter.TrustedApplicationsFilter.doFilter(TrustedApplicationsFilter.java:98) at org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:236) at org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:167) at org.mortbay.jetty.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1136) at org.mortbay.servlet.UserAgentFilter.doFilter(UserAgentFilter.java:81) at org.mortbay.servlet.GzipFilter.doFilter(GzipFilter.java:129) at org.mortbay.jetty.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1136) at com.cenqua.fisheye.web.filters.ProductInfoFilter.doFilter(ProductInfoFilter.java:32) at org.mortbay.jetty.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1136) at com.cenqua.fisheye.web.filters.UpfrontFilter.doFilter(UpfrontFilter.java:39) at org.mortbay.jetty.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1136) at org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:360) at org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:216) at org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:181) at org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:726) at org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:405) at org.mortbay.jetty.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:206) at org.mortbay.jetty.handler.HandlerCollection.handle(HandlerCollection.java:114) at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152) at org.mortbay.jetty.Server.handle(Server.java:324) at org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:505) at org.mortbay.jetty.HttpConnection$RequestHandler.headerComplete(HttpConnection.java:829) at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:514) at org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:211) at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:380) at org.mortbay.io.nio.SelectChannelEndPoint.run(SelectChannelEndPoint.java:395) at org.mortbay.thread.BoundedThreadPool$PoolThread.run(BoundedThreadPool.java:450) Caused by: org.codehaus.xfire.XFireRuntimeException: Server returned error code = 404 for URI : http://192.168.3.59:8095/crowd/servicesSecurityServer. Check server logs for details at org.codehaus.xfire.transport.http.HttpChannel.sendViaClient(HttpChannel.java:130) at org.codehaus.xfire.transport.http.HttpChannel.send(HttpChannel.java:48) at org.codehaus.xfire.handler.OutMessageSender.invoke(OutMessageSender.java:26) at org.codehaus.xfire.handler.HandlerPipeline.invoke(HandlerPipeline.java:131) at org.codehaus.xfire.client.Invocation.invoke(Invocation.java:79) ... 118 more
We should check for the trailing "/" and if not present, add it ourselves.