You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@juddi.apache.org by "Kurt T Stam (JIRA)" <sc...@ws.apache.org> on 2011/06/18 17:27:47 UTC

[jira] [Closed] (SCOUT-105) dont eat InvocationTargetException cause in org.apache.ws.scout.transport.LocalTransport

     [ https://issues.apache.org/jira/browse/SCOUT-105?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Kurt T Stam closed SCOUT-105.
-----------------------------


> dont eat InvocationTargetException cause in org.apache.ws.scout.transport.LocalTransport
> ----------------------------------------------------------------------------------------
>
>                 Key: SCOUT-105
>                 URL: https://issues.apache.org/jira/browse/SCOUT-105
>             Project: Scout
>          Issue Type: Bug
>          Components: Scout Implementation
>    Affects Versions: 1.2.2
>            Reporter: subes
>            Assignee: Kurt T Stam
>             Fix For: 1.2.3
>
>
> I am using org.apache.ws.scout.transport.LocalTransport with juddi-client 3.0.4. I had several exceptions in it because of wrong dependencies and inproper configuration. To resolve all these issues I had to manually debug the Scout code because the stacktraces of juddi-client are being eaten by LocalTransport.
> This is the problematic method:
> public Element send(Element request,URI endpointURI)
>     throws TransportException
>   {    
>     Element response = null;
>     if (log.isDebugEnabled()) {
>     	log.debug("\nRequest message:\n" + XMLUtils.convertNodeToXMLString(request));
>     	log.debug("Calling " + endpointURI + " locally");
>     }
>     try {
>     	String className = endpointURI.getPath();
>     	String methodName = endpointURI.getFragment();
>     	log.debug("Calling class=" + className);
>     	log.debug("Method=" + methodName);
>     	Class<?> c = Class.forName(className);
>     	Object requestHandler = c.newInstance();
>     	Method method = c.getMethod(methodName, Element.class);
>     	Node node = (Node) method.invoke(requestHandler, request);
>     	response = (Element) node.getFirstChild();
>     } catch (InvocationTargetException ite) {
>       throw new TransportException(new Exception(ite.getTargetException().getMessage()));
>     } catch (Exception ex) {
>       throw new TransportException(ex);
>     }
>     if (log.isDebugEnabled()) {
>     	log.debug("\nResponse message:\n" + XMLUtils.convertNodeToXMLString(response));
>     }
>     return response;
>   }
> Because this part removes the stacktrace:
> ...
> } catch (InvocationTargetException ite) {
>       throw new TransportException(new Exception(ite.getTargetException().getMessage()));
> }...
> I had to add a watch expression for ite.getTargetException().printStackTrace() to debug my issues. Finding this workaround and having to do this on my trial and error work caused quite a slow down in my progress.
> It would be better if you just removed that code part and let the follow-up catch-clause handle the errors:
> } catch (Exception ex) {
>      throw new TransportException(ex);
> }
> Also, why do you wrap the Message in an Exception which is then wrapped by TransportException? This was quite confusing for me initially and in my opinion senseless.
> ------------------------------------------
> This is an example for the confusing stack trace currently generated by scout:
> Caused by - java.lang.Exception: org/apache/log4j/helpers/Loader
>         at org.apache.ws.scout.transport.LocalTransport.send(LocalTransport.java:66)
>         at org.apache.ws.scout.registry.RegistryV3Impl.execute(RegistryV3Impl.java:296)
>         at org.apache.ws.scout.registry.RegistryV3Impl.getAuthToken(RegistryV3Impl.java:887)
>         at org.apache.ws.scout.registry.BusinessLifeCycleManagerV3Impl.getAuthToken(BusinessLifeCycleManagerV3Impl.java:790)
>         at org.apache.ws.scout.registry.BusinessLifeCycleManagerV3Impl.executeOperation(BusinessLifeCycleManagerV3Impl.java:565)
>         at org.apache.ws.scout.registry.BusinessLifeCycleManagerV3Impl.saveOrganizations(BusinessLifeCycleManagerV3Impl.java:420)
>         at de.invesdwin.gemeinsam.integration.ws.internal.jaxr.JaxrClient.registerService(JaxrClient.java:58)
>         at de.invesdwin.gemeinsam.integration.ws.XsdWebServicePublikation.setBeanName(XsdWebServicePublikation.java:67)
>         at de.invesdwin.gemeinsam.bootstrap.BootstrapUtil.setupApplicationContext(BootstrapUtil.java:192)
>         at de.invesdwin.gemeinsam.bootstrap.BootstrapUtil.bootstrap(BootstrapUtil.java:159)
>         at de.invesdwin.gemeinsam.bootstrap.BootstrapUtil.autowire(BootstrapUtil.java:127)
>         at de.invesdwin.gemeinsam.integration.ws.internal.WebServiceBootstrap.setApplicationContext(WebServiceBootstrap.java:16)
>         at de.invesdwin.gemeinsam.webserver.Main.starteAnwendung(Main.java:33)
>         at de.invesdwin.gemeinsam.bootstrap.AMain.<init>(AMain.java:32)
>         at de.invesdwin.gemeinsam.webserver.Main.<init>(Main.java:18)
>         at de.invesdwin.gemeinsam.webserver.Main.main(Main.java:22)
>         at de.invesdwin.gemeinsam.integration.ws.XsdWebServicePublikationTest.main(XsdWebServicePublikationTest.java:17)
>         ... 57 more, see error.log
> --------------------------------------------
> This is the stack trace i actually want which i got by adding my watch expression:
> java.lang.NoClassDefFoundError: org/apache/log4j/helpers/Loader
> 	at org.apache.juddi.v3.client.transport.wrapper.UDDISecurityService.secure(UDDISecurityService.java:63)
> 	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> 	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
> 	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
> 	at java.lang.reflect.Method.invoke(Method.java:616)
> 	at org.apache.ws.scout.transport.LocalTransport.send(LocalTransport.java:63)
> 	at org.apache.ws.scout.registry.RegistryV3Impl.execute(RegistryV3Impl.java:296)
> 	at org.apache.ws.scout.registry.RegistryV3Impl.getAuthToken(RegistryV3Impl.java:887)
> 	at org.apache.ws.scout.registry.BusinessLifeCycleManagerV3Impl.getAuthToken(BusinessLifeCycleManagerV3Impl.java:790)
> 	at org.apache.ws.scout.registry.BusinessLifeCycleManagerV3Impl.executeOperation(BusinessLifeCycleManagerV3Impl.java:565)
> 	at org.apache.ws.scout.registry.BusinessLifeCycleManagerV3Impl.saveOrganizations(BusinessLifeCycleManagerV3Impl.java:420)
> 	at de.invesdwin.gemeinsam.integration.ws.internal.jaxr.JaxrClient.registerService(JaxrClient.java:58)
> 	at de.invesdwin.gemeinsam.integration.ws.XsdWebServicePublikation.setBeanName(XsdWebServicePublikation.java:67)
> 	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeAwareMethods(AbstractAutowireCapableBeanFactory.java:1433)
> 	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1408)
> 	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:519)
> 	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:456)
> 	at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:291)
> 	at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:222)
> 	at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:288)
> 	at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:190)
> 	at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:580)
> 	at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:895)
> 	at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:425)
> 	at de.invesdwin.gemeinsam.bootstrap.BootstrapUtil.setupApplicationContext(BootstrapUtil.java:192)
> 	at de.invesdwin.gemeinsam.bootstrap.BootstrapUtil.bootstrap(BootstrapUtil.java:159)
> 	at de.invesdwin.gemeinsam.bootstrap.BootstrapUtil.autowire(BootstrapUtil.java:127)
> 	at de.invesdwin.gemeinsam.integration.ws.internal.WebServiceBootstrap.setApplicationContext(WebServiceBootstrap.java:16)
> 	at org.springframework.context.support.ApplicationContextAwareProcessor.invokeAwareInterfaces(ApplicationContextAwareProcessor.java:106)
> 	at org.springframework.context.support.ApplicationContextAwareProcessor.postProcessBeforeInitialization(ApplicationContextAwareProcessor.java:85)
> 	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyBeanPostProcessorsBeforeInitialization(AbstractAutowireCapableBeanFactory.java:394)
> 	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1413)
> 	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:519)
> 	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:456)
> 	at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:291)
> 	at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:222)
> 	at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:288)
> 	at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:190)
> 	at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:580)
> 	at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:895)
> 	at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:425)
> 	at org.springframework.web.context.ContextLoader.createWebApplicationContext(ContextLoader.java:276)
> 	at org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:197)
> 	at org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:47)
> 	at org.eclipse.jetty.server.handler.ContextHandler.callContextInitialized(ContextHandler.java:676)
> 	at org.eclipse.jetty.servlet.ServletContextHandler.callContextInitialized(ServletContextHandler.java:381)
> 	at org.eclipse.jetty.server.handler.ContextHandler.startContext(ContextHandler.java:667)
> 	at org.eclipse.jetty.servlet.ServletContextHandler.startContext(ServletContextHandler.java:264)
> 	at org.eclipse.jetty.webapp.WebAppContext.startContext(WebAppContext.java:999)
> 	at org.eclipse.jetty.server.handler.ContextHandler.doStart(ContextHandler.java:610)
> 	at org.eclipse.jetty.servlet.ServletContextHandler.doStart(ServletContextHandler.java:155)
> 	at org.eclipse.jetty.webapp.WebAppContext.doStart(WebAppContext.java:384)
> 	at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:55)
> 	at org.eclipse.jetty.server.handler.HandlerWrapper.doStart(HandlerWrapper.java:92)
> 	at org.eclipse.jetty.server.Server.doStart(Server.java:243)
> 	at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:55)
> 	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> 	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
> 	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
> 	at java.lang.reflect.Method.invoke(Method.java:616)
> 	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeCustomInitMethod(AbstractAutowireCapableBeanFactory.java:1544)
> 	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1485)
> 	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1417)
> 	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:519)
> 	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:456)
> 	at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:291)
> 	at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:222)
> 	at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:288)
> 	at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:190)
> 	at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:580)
> 	at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:895)
> 	at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:425)
> 	at org.springframework.context.support.ClassPathXmlApplicationContext.<init>(ClassPathXmlApplicationContext.java:139)
> 	at org.springframework.context.support.ClassPathXmlApplicationContext.<init>(ClassPathXmlApplicationContext.java:83)
> 	at de.invesdwin.gemeinsam.webserver.Main.starteAnwendung(Main.java:33)
> 	at de.invesdwin.gemeinsam.bootstrap.AMain.<init>(AMain.java:32)
> 	at de.invesdwin.gemeinsam.webserver.Main.<init>(Main.java:18)
> 	at de.invesdwin.gemeinsam.webserver.Main.main(Main.java:22)
> 	at de.invesdwin.gemeinsam.integration.ws.XsdWebServicePublikationTest.main(XsdWebServicePublikationTest.java:17)
> Caused by: java.lang.ClassNotFoundException: org.apache.log4j.helpers.Loader
> 	at java.net.URLClassLoader$1.run(URLClassLoader.java:217)
> 	at java.security.AccessController.doPrivileged(Native Method)
> 	at java.net.URLClassLoader.findClass(URLClassLoader.java:205)
> 	at java.lang.ClassLoader.loadClass(ClassLoader.java:321)
> 	at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:294)
> 	at java.lang.ClassLoader.loadClass(ClassLoader.java:266)
> 	... 79 more
> -------------------------------------------------------------
> This was even funnier in the beginning when juddi-client threw NullPointerExceptions, because Scout just printed the message "null" which was really helpful. :,D (crying laugh)

--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira