Project

General

Profile

feature request #5209

Updated by Andreas Müller over 5 years ago

Currently if the service is not available (because server restarts or anything else you get the unexpected error messages shown below 

 We may want to wrap these errors in a nice looking message which is more informative for the user. 


 We may also think about having a status line icon/label which permanently (every 2-3 seconds) checks the availability of the server (ping) and shows the status (in red if disconnected) so the user knows immediately about it. 

 These services could be used for the check:  

 * http://api.cybertaxonomy.org/instances.jsp (but often returns "started" if the CDM server is not available, so not sufficient) 
 * http://api.cybertaxonomy.org/cichorieae/classification.json (or any other classification) => is too large and returns CDM objects, the new service should be as performant as possible. 


 

 But it might be simpler to just simply ping the server. Maybe HTTP HEAD request is sufficient. 

 We may also want to have 2 services, one for checking availability of the server (without DB check) and one checking if data can be read from the DB.  

 ~~~ 
 login : admin 
 editor version : 3.8.0.201509071706 
 server :    / edit-test 
 schema version :  
 os : Windows Server 2012 6.2 amd64 
 java : 1.7.0_75 
 org.springframework.remoting.RemoteAccessException: Could not access HTTP invoker remote service at [http://test.e-taxonomy.eu:80/cdmserver/edaphobase_test/remoting/group.service]; nested exception is org.apache.commons.httpclient.HttpException: Did not receive successful HTTP response: status code = 503, status message = [Service Unavailable] 
	 at org.springframework.remoting.httpinvoker.HttpInvokerClientInterceptor.convertHttpInvokerAccessException(HttpInvokerClientInterceptor.java:212) 
	 at org.springframework.remoting.httpinvoker.HttpInvokerClientInterceptor.invoke(HttpInvokerClientInterceptor.java:145) 
	 at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172) 
	 at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:204) 
	 at com.sun.proxy.$Proxy32.list(Unknown Source) 
	 at eu.etaxonomy.taxeditor.ui.dialog.selection.GroupSelectionDialog.initModel(GroupSelectionDialog.java:60) 
	 at eu.etaxonomy.taxeditor.ui.dialog.selection.AbstractFilteredCdmResourceSelectionDialog.<init>(AbstractFilteredCdmResourceSelectionDialog.java:95) 
	 at eu.etaxonomy.taxeditor.ui.dialog.selection.GroupSelectionDialog.<init>(GroupSelectionDialog.java:52) 
	 at eu.etaxonomy.taxeditor.ui.dialog.selection.GroupSelectionDialog.select(GroupSelectionDialog.java:36) 
	 at eu.etaxonomy.taxeditor.ui.section.user.GroupsByUserDetailSection.createNewElement(GroupsByUserDetailSection.java:48) 
	 at eu.etaxonomy.taxeditor.ui.section.user.GroupsByUserDetailSection.createNewElement(GroupsByUserDetailSection.java:1) 
	 at eu.etaxonomy.taxeditor.ui.section.AbstractEntityCollectionSection$2.run(AbstractEntityCollectionSection.java:91) 
	 at org.eclipse.jface.action.Action.runWithEvent(Action.java:498) 
	 at org.eclipse.jface.action.ActionContributionItem.handleWidgetSelection(ActionContributionItem.java:584) 
	 at org.eclipse.jface.action.ActionContributionItem.access$2(ActionContributionItem.java:501) 
	 at org.eclipse.jface.action.ActionContributionItem$6.handleEvent(ActionContributionItem.java:452) 
	 at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:84) 
	 at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1053) 
	 at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:4165) 
	 at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3754) 
	 at org.eclipse.ui.internal.Workbench.runEventLoop(Workbench.java:2701) 
	 at org.eclipse.ui.internal.Workbench.runUI(Workbench.java:2665) 
	 at org.eclipse.ui.internal.Workbench.access$4(Workbench.java:2499) 
	 at org.eclipse.ui.internal.Workbench$7.run(Workbench.java:679) 
	 at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:332) 
	 at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:668) 
	 at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:149) 
	 at eu.etaxonomy.taxeditor.Application.start(Application.java:24) 
	 at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:196) 
	 at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:110) 
	 at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:79) 
	 at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:344) 
	 at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:179) 
	 at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
	 at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) 
	 at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) 
	 at java.lang.reflect.Method.invoke(Unknown Source) 
	 at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:622) 
	 at org.eclipse.equinox.launcher.Main.basicRun(Main.java:577) 
	 at org.eclipse.equinox.launcher.Main.run(Main.java:1410) 
 Caused by: org.apache.commons.httpclient.HttpException: Did not receive successful HTTP response: status code = 503, status message = [Service Unavailable] 
	 at org.springframework.remoting.httpinvoker.CommonsHttpInvokerRequestExecutor.validateResponse(CommonsHttpInvokerRequestExecutor.java:223) 
	 at org.springframework.remoting.httpinvoker.CommonsHttpInvokerRequestExecutor.doExecuteRequest(CommonsHttpInvokerRequestExecutor.java:141) 
	 at eu.etaxonomy.taxeditor.service.CdmServiceRequestExecutor.doExecuteRequest(CdmServiceRequestExecutor.java:51) 
	 at org.springframework.remoting.httpinvoker.AbstractHttpInvokerRequestExecutor.executeRequest(AbstractHttpInvokerRequestExecutor.java:136) 
	 at org.springframework.remoting.httpinvoker.HttpInvokerClientInterceptor.executeRequest(HttpInvokerClientInterceptor.java:192) 
	 at org.springframework.remoting.httpinvoker.HttpInvokerClientInterceptor.executeRequest(HttpInvokerClientInterceptor.java:174) 
	 at org.springframework.remoting.httpinvoker.HttpInvokerClientInterceptor.invoke(HttpInvokerClientInterceptor.java:142) 
	 ... 38 more 
 ~~~ 

 or  


 ~~~ 
 login : admin 
 editor version : 3.8.0.201509071706 
 server :    / edit-test 
 schema version :  
 os : Windows Server 2012 6.2 amd64 
 java : 1.7.0_75 
 org.springframework.remoting.RemoteAccessException: Could not access HTTP invoker remote service at [http://test.e-taxonomy.eu:80/cdmserver/edaphobase_test/remoting/taxonnode.service]; nested exception is org.apache.commons.httpclient.HttpException: Did not receive successful HTTP response: status code = 404, status message = [Not Found] 
	 at org.springframework.remoting.httpinvoker.HttpInvokerClientInterceptor.convertHttpInvokerAccessException(HttpInvokerClientInterceptor.java:212) 
	 at org.springframework.remoting.httpinvoker.HttpInvokerClientInterceptor.invoke(HttpInvokerClientInterceptor.java:145) 
	 at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172) 
	 at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:204) 
	 at com.sun.proxy.$Proxy29.load(Unknown Source) 
	 at eu.etaxonomy.taxeditor.editor.TaxonEditorInput.initForTaxonNode(TaxonEditorInput.java:99) 
	 at eu.etaxonomy.taxeditor.editor.TaxonEditorInput.<init>(TaxonEditorInput.java:79) 
	 at eu.etaxonomy.taxeditor.editor.TaxonEditorInput.NewInstance(TaxonEditorInput.java:205) 
	 at eu.etaxonomy.taxeditor.editor.EditorUtil.openTaxonNode(EditorUtil.java:151) 
	 at eu.etaxonomy.taxeditor.navigation.NavigationUtil.openEditor(NavigationUtil.java:88) 
	 at eu.etaxonomy.taxeditor.navigation.NavigationUtil.openEditor(NavigationUtil.java:122) 
	 at eu.etaxonomy.taxeditor.navigation.navigator.handler.EditHandler$1$1.run(EditHandler.java:74) 
	 at org.eclipse.swt.widgets.RunnableLock.run(RunnableLock.java:35) 
	 at org.eclipse.swt.widgets.Synchronizer.runAsyncMessages(Synchronizer.java:135) 
	 at org.eclipse.swt.widgets.Display.runAsyncMessages(Display.java:4140) 
	 at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3757) 
	 at org.eclipse.ui.internal.Workbench.runEventLoop(Workbench.java:2701) 
	 at org.eclipse.ui.internal.Workbench.runUI(Workbench.java:2665) 
	 at org.eclipse.ui.internal.Workbench.access$4(Workbench.java:2499) 
	 at org.eclipse.ui.internal.Workbench$7.run(Workbench.java:679) 
	 at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:332) 
	 at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:668) 
	 at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:149) 
	 at eu.etaxonomy.taxeditor.Application.start(Application.java:24) 
	 at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:196) 
	 at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:110) 
	 at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:79) 
	 at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:344) 
	 at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:179) 
	 at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
	 at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) 
	 at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) 
	 at java.lang.reflect.Method.invoke(Unknown Source) 
	 at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:622) 
	 at org.eclipse.equinox.launcher.Main.basicRun(Main.java:577) 
	 at org.eclipse.equinox.launcher.Main.run(Main.java:1410) 
 Caused by: org.apache.commons.httpclient.HttpException: Did not receive successful HTTP response: status code = 404, status message = [Not Found] 
	 at org.springframework.remoting.httpinvoker.CommonsHttpInvokerRequestExecutor.validateResponse(CommonsHttpInvokerRequestExecutor.java:223) 
	 at org.springframework.remoting.httpinvoker.CommonsHttpInvokerRequestExecutor.doExecuteRequest(CommonsHttpInvokerRequestExecutor.java:141) 
	 at eu.etaxonomy.taxeditor.service.CdmServiceRequestExecutor.doExecuteRequest(CdmServiceRequestExecutor.java:51) 
	 at org.springframework.remoting.httpinvoker.AbstractHttpInvokerRequestExecutor.executeRequest(AbstractHttpInvokerRequestExecutor.java:136) 
	 at org.springframework.remoting.httpinvoker.HttpInvokerClientInterceptor.executeRequest(HttpInvokerClientInterceptor.java:192) 
	 at org.springframework.remoting.httpinvoker.HttpInvokerClientInterceptor.executeRequest(HttpInvokerClientInterceptor.java:174) 
	 at org.springframework.remoting.httpinvoker.HttpInvokerClientInterceptor.invoke(HttpInvokerClientInterceptor.java:142) 
	 ... 34 more 
 ~~~ 

Back