[
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.