You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@geronimo.apache.org by "Jarek Gawor (JIRA)" <ji...@apache.org> on 2007/03/02 16:35:51 UTC
[jira] Updated: (GERONIMO-2921) Tomcat does not register web
service url mappings when web.xml is not present
[ https://issues.apache.org/jira/browse/GERONIMO-2921?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Jarek Gawor updated GERONIMO-2921:
----------------------------------
Attachment: jaxws-war-2.0-SNAPSHOT.war
> Tomcat does not register web service url mappings when web.xml is not present
> -----------------------------------------------------------------------------
>
> Key: GERONIMO-2921
> URL: https://issues.apache.org/jira/browse/GERONIMO-2921
> Project: Geronimo
> Issue Type: Bug
> Security Level: public(Regular issues)
> Components: Tomcat
> Reporter: Jarek Gawor
> Attachments: jaxws-war-2.0-SNAPSHOT.war
>
>
> Here's some background info. The web.xml file is now optional for JAX-WS POJO web services. In such cases, there are certain rules on how the web.xml should get updated. That is, appropriate <servlet> and <servlet-mapping> elements should be inserted into the web.xml. When I update the in-memory representation of the web.xml with the appropriate entires, everything works just fine on Jetty. However, with Tomcat, it seems like the url-mappings for the web services do not get registered. Everything else is fine, e.g. the web services gbeans get initialized, etc. and I can access a JSP deployed in the same war as the web services.
> After a bit of debugging I see that GeronimoStandardContext.addChild() is not called if the web.xml file is not present even though the in-memory representation of the DD is updated correctly. So somehow I think the in-memory representation of the DD is not being passed around correctly.
> Here's a stack trace when web.xml file is present and when addChild() is called:
> System Thread [RMI TCP Connection(9)-192.168.1.102] (Suspended (breakpoint at line 217 in GeronimoStandardContext))
> GeronimoStandardContext.addChild(Container) line: 217
> GeneratedMethodAccessor201.invoke(Object, Object[]) line: not available
> DelegatingMethodAccessorImpl.invoke(Object, Object[]) line: 25
> Method.invoke(Object, Object...) line: 585
> IntrospectionUtils.callMethod1(Object, String, Object, String, ClassLoader) line: 899
> SetNextRule.end() line: 193
> SetNextRule(Rule).end(String, String) line: 229
> Digester.endElement(String, String, String) line: 1058
> SAXParserImpl$JAXPSAXParser(AbstractSAXParser).endElement(QName, Augmentations) line: not available
> XMLDocumentScannerImpl(XMLDocumentFragmentScannerImpl).scanEndElement() line: not available [local variables unavailable]
> XMLDocumentScannerImpl$ContentDispatcher(XMLDocumentFragmentScannerImpl$FragmentContentDispatcher).dispatch(boolean) line: not available
> XMLDocumentScannerImpl(XMLDocumentFragmentScannerImpl).scanDocument(boolean) line: not available
> XIncludeAwareParserConfiguration(XML11Configuration).parse(boolean) line: not available
> XIncludeAwareParserConfiguration(XML11Configuration).parse(XMLInputSource) line: not available
> SAXParserImpl$JAXPSAXParser(XMLParser).parse(XMLInputSource) line: not available
> SAXParserImpl$JAXPSAXParser(AbstractSAXParser).parse(InputSource) line: not available
> SAXParserImpl$JAXPSAXParser.parse(InputSource) line: not available
> Digester.parse(InputSource) line: 1562
> ContextConfig.applicationWebConfig() line: 369
> ContextConfig.start() line: 1060
> ContextConfig.lifecycleEvent(LifecycleEvent) line: 261
> LifecycleSupport.fireLifecycleEvent(String, Object) line: 120
> GeronimoStandardContext(StandardContext).start() line: 4238
> GeronimoStandardContext.access$201(GeronimoStandardContext) line: 66
> GeronimoStandardContext$SystemMethodValve.invoke(Request, Response) line: 334
> GeronimoBeforeAfterValve.invoke(Request, Response) line: 47
> GeronimoStandardContext.start() line: 189
> StandardHost(ContainerBase).addChildInternal(Container) line: 760
> StandardHost(ContainerBase).addChild(Container) line: 740
> StandardHost.addChild(Container) line: 525
> TomcatContainer.addContext(TomcatContext) line: 331
> TomcatContainer$$FastClassByCGLIB$$9370b073.invoke(int, Object, Object[]) line: not available
> FastMethod.invoke(Object, Object[]) line: 53
> FastMethodInvoker.invoke(Object, Object[]) line: 38
> GBeanOperation.invoke(Object, Object[]) line: 127
> GBeanInstance.invoke(int, Object[]) line: 820
> RawInvoker.invoke(int, Object[]) line: 57
> RawOperationInvoker.invoke(AbstractName, Object[]) line: 35
> ProxyMethodInterceptor.intercept(Object, Method, Object[], MethodProxy) line: 96
> TomcatContainer$$EnhancerByCGLIB$$d873f7e2.addContext(TomcatContext) line: not available
> TomcatWebAppContext.doStart() line: 496
> GBeanInstance.createInstance() line: 986
> GBeanInstanceState.attemptFullStart() line: 267
> GBeanInstanceState.start() line: 102
> GBeanInstance.start() line: 529
> GBeanDependency.attemptFullStart() line: 111
> GBeanDependency.addTarget(AbstractName) line: 146
> GBeanDependency$1.running(AbstractName) line: 120
> BasicLifecycleMonitor.fireRunningEvent(AbstractName) line: 173
> BasicLifecycleMonitor.access$300(BasicLifecycleMonitor, AbstractName) line: 41
> BasicLifecycleMonitor$RawLifecycleBroadcaster.fireRunningEvent() line: 251
> GBeanInstanceState.attemptFullStart() line: 292
> GBeanInstanceState.start() line: 102
> GBeanInstanceState.startRecursive() line: 124
> GBeanInstance.startRecursive() line: 543
> BasicKernel.startRecursiveGBean(AbstractName) line: 379
> ConfigurationUtil.startConfigurationGBeans(AbstractName, Configuration, Kernel) line: 434
> EditableKernelConfigurationManager(KernelConfigurationManager).start(Configuration) line: 188
> EditableKernelConfigurationManager(SimpleConfigurationManager).startConfiguration(Artifact, LifecycleMonitor) line: 527
> EditableKernelConfigurationManager(SimpleConfigurationManager).startConfiguration(Artifact) line: 508
> SimpleConfigurationManager$$FastClassByCGLIB$$ce77a924.invoke(int, Object, Object[]) line: not available
> FastMethod.invoke(Object, Object[]) line: 53
> FastMethodInvoker.invoke(Object, Object[]) line: 38
> GBeanOperation.invoke(Object, Object[]) line: 127
> GBeanInstance.invoke(String, Object[], String[]) line: 855
> BasicKernel.invoke(AbstractName, String, Object[], String[]) line: 239
> KernelGBean.invoke(AbstractName, String, Object[], String[]) line: 342
> KernelGBean$$FastClassByCGLIB$$1cccefc9.invoke(int, Object, Object[]) line: not available
> FastMethod.invoke(Object, Object[]) line: 53
> FastMethodInvoker.invoke(Object, Object[]) line: 38
> GBeanOperation.invoke(Object, Object[]) line: 127
> GBeanInstance.invoke(String, Object[], String[]) line: 855
> BasicKernel.invoke(AbstractName, String, Object[], String[]) line: 239
> MBeanGBeanBridge.invoke(String, Object[], String[]) line: 168
> MetaDataImpl$PrivateDynamicMeta(DynamicMetaDataImpl).invoke(Object, String, Object[], String[]) line: 213
> MetaDataImpl.invoke(Object, String, Object[], String[]) line: 220
> DefaultMBeanServerInterceptor.invoke(ObjectName, String, Object[], String[]) line: 815
> JmxMBeanServer.invoke(ObjectName, String, Object[], String[]) line: 784
> RMIConnectionImpl.doOperation(int, Object[]) line: 1408
> RMIConnectionImpl.access$100(RMIConnectionImpl, int, Object[]) line: 81
> RMIConnectionImpl$PrivilegedOperation.run() line: 1245
> AccessController.doPrivileged(PrivilegedExceptionAction<T>, AccessControlContext) line: not available [native method]
> RMIConnectionImpl.doPrivilegedOperation(int, Object[], Subject) line: 1348
> RMIConnectionImpl.invoke(ObjectName, String, MarshalledObject, String[], Subject) line: 782
> NativeMethodAccessorImpl.invoke0(Method, Object, Object[]) line: not available [native method]
> NativeMethodAccessorImpl.invoke(Object, Object[]) line: 39
> DelegatingMethodAccessorImpl.invoke(Object, Object[]) line: 25
> Method.invoke(Object, Object...) line: 585
> UnicastServerRef2(UnicastServerRef).dispatch(Remote, RemoteCall) line: 294
> Transport$1.run() line: 153
> AccessController.doPrivileged(PrivilegedExceptionAction<T>, AccessControlContext) line: not available [native method]
> TCPTransport(Transport).serviceCall(RemoteCall) line: 149
> TCPTransport.handleMessages(Connection, boolean) line: 466
> TCPTransport$ConnectionHandler.run() line: 707
> Thread.run() line: 595
> It looks like ContextConfig.applicationWebConfig() is (re)parsing web.xml file but I'm not sure where it gets it from. The url its using to load the file is: jndi:/0.0.0.0/jaxws-war-2.0-SNAPSHOT/WEB-INF/web.xml
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.