[ 
https://issues.apache.org/jira/browse/GERONIMODEVTOOLS-575?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12716658#action_12716658
 ] 

Tim McConnell commented on GERONIMODEVTOOLS-575:
------------------------------------------------

After looking at this problem more thoroughly I think I finally see what's 
going on. Ideally as a best practice the GEP should strive to convey error 
and/or exception messages (to the end user) in a consistent manner when 
interactions with the Geronimo server are involved. Unfortunately, this is not 
the case as there seems to be multiples paths in the GEP that entail 
interactions with the server that do not handle exceptions in a consistent, 
well-behaved manner. 

A "relatively" good implementation of a usage scenario is when artifacts get 
deployed/undeployed to the server. The GEP in most cases throws CoreExceptions 
(with nested exceptions and statuses) that results in a "Problem Occurred" 
dialog with detailed information about the problem/exception. One nice aspect 
of this approach is that it is fairly standard in Eclipse and is the same 
approach used by WTP. Although this is the best example in the GEP, even this 
implementation is far from perfect; there are at least three scenarios that are 
not handled correctly. One is the case where WAR file can be deployed to the 
server that results in deployment errors that are not conveyed to the end-user 
-- they are only written to the Eclipse Error log file. The other case is the 
GERONIMODEVTOOLS-575 JIRA  just opened where a WAR file without a 
geroniom-web.xml not only doesn't deploy, it doesn't convey anything to the 
end-user (not good), nor does it write anything to the Eclipse Error log file. 
The third is the case where a Target Module ID cannot be found on the server 
(i.e., TargetModuleIdNotFoundException) and is essentially ignored by the GEP 
(again not good). 

Two other scenarios that involve interactions with the Geronimo server seem to 
be inconsistently implemented. Errors starting and/or stopping the server don't 
do much other than log exceptions to the Eclipse error log and depends upon WTP 
to throw the CoreException. But these CoreExceptions are too generic to be of 
much value to the end-user. This can be seen when we try to start the server 
with incorrect security credentials. The CoreException just conveys that the 
server failed to start, which is all that WTP about knows. The GEP knows the 
root cause but only writes it to Eclipse Error log, which is not normally 
visible to the end-user. Similarly, errors connecting and/or disconnecting 
to/from the server are inconsistently handled which makes diagnosis somewhat 
confusing or problematic for the end-user. 

My recommendation is that we refactor the code that interacts with the Geronimo 
server to consistently throw CoreExceptions (with nested Exceptions and 
MultiStatus objects) and open Error Dialogs when anything needs to be conveyed 
to the end-user. As noted above we do some of this already, but not 
well-enough. Of the three typical usage scenarios I've mentioned 
(connecting/disconnecting, starting/stopping, deploying/undeploying) I would 
think that starting/stopping the server would be the easiest and most 
straightforward. This is just a guess at this point though. Once that is 
accomplished I think that doing the same for the connecting/disconnecting 
scenarios would be fairly easy, and hopefully we'd learn enough to then plug 
the existing holes in the deploying/undeploying scenarios. Then finally as a 
last resort, if there are cases where it is just impossible to throw a 
CoreExcpetion (and display an Error Dialog) to convey information to the 
end-user we can then exercise the new code that I just recently added to the 
GEP to display the Eclipse Error log. 

> GEP errors that are logged to the Eclipse error log are not always seen by 
> end-user
> -----------------------------------------------------------------------------------
>
>                 Key: GERONIMODEVTOOLS-575
>                 URL: 
> https://issues.apache.org/jira/browse/GERONIMODEVTOOLS-575
>             Project: Geronimo-Devtools
>          Issue Type: Bug
>          Components: eclipse-plugin
>    Affects Versions: 2.2.0, 2.1.4
>            Reporter: Tim McConnell
>            Assignee: Tim McConnell
>
> For example, when deploying an erroneous war file to the Geronimo server will 
> result in the following to the Eclispe.log that the end-user may not likely 
> see.....
> !ENTRY org.apache.geronimo.st.core 4 0 2009-05-31 15:09:17.859
> !MESSAGE Distribution of module failed.  See log for details.
> !SUBENTRY 1 org.apache.geronimo.st.core 4 0 2009-05-31 15:09:17.859
> !MESSAGE Unable to resolve resource reference 'jdbc/users' (Could not 
> auto-map to resource.  Try adding a resource-ref mapping to your Geronimo 
> deployment plan.
> !SUBENTRY 1 org.apache.geronimo.st.core 4 0 2009-05-31 15:09:17.859
> !MESSAGE Search conducted in current module and dependencies:
> !SUBENTRY 1 org.apache.geronimo.st.core 4 0 2009-05-31 15:09:17.859
> !MESSAGE [ALL: org.apache.geronimo.configs/tomcat6/2.1.4/car]
> !SUBENTRY 1 org.apache.geronimo.st.core 4 0 2009-05-31 15:09:17.859
> !MESSAGE [CLASSES: org.apache.geronimo.configs/openejb//car]
> !SUBENTRY 1 org.apache.geronimo.st.core 4 0 2009-05-31 15:09:17.859
> !MESSAGE [ALL: org.apache.geronimo.configs/j2ee-corba-yoko//car]
> !SUBENTRY 1 org.apache.geronimo.st.core 4 0 2009-05-31 15:09:17.859
> !MESSAGE [ALL: org.apache.geronimo.configs/axis//car]
> !SUBENTRY 1 org.apache.geronimo.st.core 4 0 2009-05-31 15:09:17.859
> !MESSAGE [ALL: org.apache.geronimo.configs/axis2//car]
> !SUBENTRY 1 org.apache.geronimo.st.core 4 0 2009-05-31 15:09:17.859
> !MESSAGE [ALL: org.apache.geronimo.configs/openjpa//car]
> !SUBENTRY 1 org.apache.geronimo.st.core 4 0 2009-05-31 15:09:17.859
> !MESSAGE )
> !SUBENTRY 1 org.apache.geronimo.st.core 4 0 2009-05-31 15:09:17.859
> !MESSAGE org.apache.geronimo.common.DeploymentException: Unable to resolve 
> resource reference 'jdbc/users' (Could not auto-map to resource.  Try adding 
> a resource-ref mapping to your Geronimo deployment plan.
> !SUBENTRY 1 org.apache.geronimo.st.core 4 0 2009-05-31 15:09:17.859
> !MESSAGE Search conducted in current module and dependencies:
> !SUBENTRY 1 org.apache.geronimo.st.core 4 0 2009-05-31 15:09:17.859
> !MESSAGE [ALL: org.apache.geronimo.configs/tomcat6/2.1.4/car]
> !SUBENTRY 1 org.apache.geronimo.st.core 4 0 2009-05-31 15:09:17.859
> !MESSAGE [CLASSES: org.apache.geronimo.configs/openejb//car]
> !SUBENTRY 1 org.apache.geronimo.st.core 4 0 2009-05-31 15:09:17.859
> !MESSAGE [ALL: org.apache.geronimo.configs/j2ee-corba-yoko//car]
> !SUBENTRY 1 org.apache.geronimo.st.core 4 0 2009-05-31 15:09:17.859
> !MESSAGE [ALL: org.apache.geronimo.configs/axis//car]
> !SUBENTRY 1 org.apache.geronimo.st.core 4 0 2009-05-31 15:09:17.859
> !MESSAGE [ALL: org.apache.geronimo.configs/axis2//car]
> !SUBENTRY 1 org.apache.geronimo.st.core 4 0 2009-05-31 15:09:17.859
> !MESSAGE [ALL: org.apache.geronimo.configs/openjpa//car]
> !SUBENTRY 1 org.apache.geronimo.st.core 4 0 2009-05-31 15:09:17.859
> !MESSAGE )
> !SUBENTRY 1 org.apache.geronimo.st.core 4 0 2009-05-31 15:09:17.859
> !MESSAGE      at 
> org.apache.geronimo.connector.deployment.ResourceRefBuilder.buildNaming(ResourceRefBuilder.java:216)
> !SUBENTRY 1 org.apache.geronimo.st.core 4 0 2009-05-31 15:09:17.859
> !MESSAGE      at 
> org.apache.geronimo.j2ee.deployment.NamingBuilderCollection.buildNaming(NamingBuilderCollection.java:53)
> !SUBENTRY 1 org.apache.geronimo.st.core 4 0 2009-05-31 15:09:17.859
> !MESSAGE      at 
> org.apache.geronimo.web25.deployment.AbstractWebModuleBuilder.configureBasicWebModuleAttributes(AbstractWebModuleBuilder.java:842)
> !SUBENTRY 1 org.apache.geronimo.st.core 4 0 2009-05-31 15:09:17.859
> !MESSAGE      at 
> org.apache.geronimo.tomcat.deployment.TomcatModuleBuilder.addGBeans(TomcatModuleBuilder.java:347)
> !SUBENTRY 1 org.apache.geronimo.st.core 4 0 2009-05-31 15:09:17.859
> !MESSAGE      at 
> org.apache.geronimo.j2ee.deployment.SwitchingModuleBuilder.addGBeans(SwitchingModuleBuilder.java:165)
> !SUBENTRY 1 org.apache.geronimo.st.core 4 0 2009-05-31 15:09:17.859
> !MESSAGE      at 
> org.apache.geronimo.j2ee.deployment.EARConfigBuilder.buildConfiguration(EARConfigBuilder.java:647)
> !SUBENTRY 1 org.apache.geronimo.st.core 4 0 2009-05-31 15:09:17.859
> !MESSAGE      at 
> org.apache.geronimo.deployment.Deployer.deploy(Deployer.java:255)
> !SUBENTRY 1 org.apache.geronimo.st.core 4 0 2009-05-31 15:09:17.859
> !MESSAGE      at 
> org.apache.geronimo.deployment.Deployer.deploy(Deployer.java:134)
> !SUBENTRY 1 org.apache.geronimo.st.core 4 0 2009-05-31 15:09:17.859
> !MESSAGE      at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> !SUBENTRY 1 org.apache.geronimo.st.core 4 0 2009-05-31 15:09:17.859
> !MESSAGE      at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
> !SUBENTRY 1 org.apache.geronimo.st.core 4 0 2009-05-31 15:09:17.859
> !MESSAGE      at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown 
> Source)
> !SUBENTRY 1 org.apache.geronimo.st.core 4 0 2009-05-31 15:09:17.859
> !MESSAGE      at java.lang.reflect.Method.invoke(Unknown Source)
> !SUBENTRY 1 org.apache.geronimo.st.core 4 0 2009-05-31 15:09:17.859
> !MESSAGE      at 
> org.apache.geronimo.gbean.runtime.ReflectionMethodInvoker.invoke(ReflectionMethodInvoker.java:34)
> !SUBENTRY 1 org.apache.geronimo.st.core 4 0 2009-05-31 15:09:17.859
> !MESSAGE      at 
> org.apache.geronimo.gbean.runtime.GBeanOperation.invoke(GBeanOperation.java:124)
> !SUBENTRY 1 org.apache.geronimo.st.core 4 0 2009-05-31 15:09:17.859
> !MESSAGE      at 
> org.apache.geronimo.gbean.runtime.GBeanInstance.invoke(GBeanInstance.java:867)
> !SUBENTRY 1 org.apache.geronimo.st.core 4 0 2009-05-31 15:09:17.859
> !MESSAGE      at 
> org.apache.geronimo.kernel.basic.BasicKernel.invoke(BasicKernel.java:239)
> !SUBENTRY 1 org.apache.geronimo.st.core 4 0 2009-05-31 15:09:17.859
> !MESSAGE      at 
> org.apache.geronimo.kernel.KernelGBean.invoke(KernelGBean.java:342)
> !SUBENTRY 1 org.apache.geronimo.st.core 4 0 2009-05-31 15:09:17.859
> !MESSAGE      at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> !SUBENTRY 1 org.apache.geronimo.st.core 4 0 2009-05-31 15:09:17.859
> !MESSAGE      at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
> !SUBENTRY 1 org.apache.geronimo.st.core 4 0 2009-05-31 15:09:17.859
> !MESSAGE      at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown 
> Source)
> !SUBENTRY 1 org.apache.geronimo.st.core 4 0 2009-05-31 15:09:17.859
> !MESSAGE      at java.lang.reflect.Method.invoke(Unknown Source)
> !SUBENTRY 1 org.apache.geronimo.st.core 4 0 2009-05-31 15:09:17.859
> !MESSAGE      at 
> org.apache.geronimo.gbean.runtime.ReflectionMethodInvoker.invoke(ReflectionMethodInvoker.java:34)
> !SUBENTRY 1 org.apache.geronimo.st.core 4 0 2009-05-31 15:09:17.859
> !MESSAGE      at 
> org.apache.geronimo.gbean.runtime.GBeanOperation.invoke(GBeanOperation.java:124)
> !SUBENTRY 1 org.apache.geronimo.st.core 4 0 2009-05-31 15:09:17.859
> !MESSAGE      at 
> org.apache.geronimo.gbean.runtime.GBeanInstance.invoke(GBeanInstance.java:867)
> !SUBENTRY 1 org.apache.geronimo.st.core 4 0 2009-05-31 15:09:17.859
> !MESSAGE      at 
> org.apache.geronimo.kernel.basic.BasicKernel.invoke(BasicKernel.java:239)
> !SUBENTRY 1 org.apache.geronimo.st.core 4 0 2009-05-31 15:09:17.859
> !MESSAGE      at 
> org.apache.geronimo.system.jmx.MBeanGBeanBridge.invoke(MBeanGBeanBridge.java:172)
> !SUBENTRY 1 org.apache.geronimo.st.core 4 0 2009-05-31 15:09:17.859
> !MESSAGE      at com.sun.jmx.mbeanserver.DynamicMetaDataImpl.invoke(Unknown 
> Source)
> !SUBENTRY 1 org.apache.geronimo.st.core 4 0 2009-05-31 15:09:17.859
> !MESSAGE      at com.sun.jmx.mbeanserver.MetaDataImpl.invoke(Unknown Source)
> !SUBENTRY 1 org.apache.geronimo.st.core 4 0 2009-05-31 15:09:17.859
> !MESSAGE      at 
> com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.invoke(Unknown Source)
> !SUBENTRY 1 org.apache.geronimo.st.core 4 0 2009-05-31 15:09:17.859
> !MESSAGE      at com.sun.jmx.mbeanserver.JmxMBeanServer.invoke(Unknown Source)
> !SUBENTRY 1 org.apache.geronimo.st.core 4 0 2009-05-31 15:09:17.859
> !MESSAGE      at 
> javax.management.remote.rmi.RMIConnectionImpl.doOperation(Unknown Source)
> !SUBENTRY 1 org.apache.geronimo.st.core 4 0 2009-05-31 15:09:17.859
> !MESSAGE      at 
> javax.management.remote.rmi.RMIConnectionImpl.access$100(Unknown Source)
> !SUBENTRY 1 org.apache.geronimo.st.core 4 0 2009-05-31 15:09:17.859
> !MESSAGE      at 
> javax.management.remote.rmi.RMIConnectionImpl$PrivilegedOperation.run(Unknown 
> Source)
> !SUBENTRY 1 org.apache.geronimo.st.core 4 0 2009-05-31 15:09:17.859
> !MESSAGE      at java.security.AccessController.doPrivileged(Native Method)
> !SUBENTRY 1 org.apache.geronimo.st.core 4 0 2009-05-31 15:09:17.859
> !MESSAGE      at 
> javax.management.remote.rmi.RMIConnectionImpl.doPrivilegedOperation(Unknown 
> Source)
> !SUBENTRY 1 org.apache.geronimo.st.core 4 0 2009-05-31 15:09:17.859
> !MESSAGE      at javax.management.remote.rmi.RMIConnectionImpl.invoke(Unknown 
> Source)
> !SUBENTRY 1 org.apache.geronimo.st.core 4 0 2009-05-31 15:09:17.859
> !MESSAGE      at sun.reflect.GeneratedMethodAccessor111.invoke(Unknown Source)
> !SUBENTRY 1 org.apache.geronimo.st.core 4 0 2009-05-31 15:09:17.859
> !MESSAGE      at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown 
> Source)
> !SUBENTRY 1 org.apache.geronimo.st.core 4 0 2009-05-31 15:09:17.859
> !MESSAGE      at java.lang.reflect.Method.invoke(Unknown Source)
> !SUBENTRY 1 org.apache.geronimo.st.core 4 0 2009-05-31 15:09:17.859
> !MESSAGE      at sun.rmi.server.UnicastServerRef.dispatch(Unknown Source)
> !SUBENTRY 1 org.apache.geronimo.st.core 4 0 2009-05-31 15:09:17.859
> !MESSAGE      at sun.rmi.transport.Transport$1.run(Unknown Source)
> !SUBENTRY 1 org.apache.geronimo.st.core 4 0 2009-05-31 15:09:17.859
> !MESSAGE      at java.security.AccessController.doPrivileged(Native Method)
> !SUBENTRY 1 org.apache.geronimo.st.core 4 0 2009-05-31 15:09:17.859
> !MESSAGE      at sun.rmi.transport.Transport.serviceCall(Unknown Source)
> !SUBENTRY 1 org.apache.geronimo.st.core 4 0 2009-05-31 15:09:17.859
> !MESSAGE      at sun.rmi.transport.tcp.TCPTransport.handleMessages(Unknown 
> Source)
> !SUBENTRY 1 org.apache.geronimo.st.core 4 0 2009-05-31 15:09:17.859
> !MESSAGE      at 
> sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(Unknown Source)
> !SUBENTRY 1 org.apache.geronimo.st.core 4 0 2009-05-31 15:09:17.859
> !MESSAGE      at java.lang.Thread.run(Unknown Source)

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to