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 06:46:50 UTC

[jira] Created: (GERONIMO-2921) Tomcat does not register web service url mappings when web.xml is not present

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


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.


[jira] Commented: (GERONIMO-2921) Tomcat does not register web service url mappings when web.xml is not present

Posted by "Jeff Genender (JIRA)" <ji...@apache.org>.
    [ https://issues.apache.org/jira/browse/GERONIMO-2921?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#action_12477299 ] 

Jeff Genender commented on GERONIMO-2921:
-----------------------------------------

Can you provide a simple test case for this?

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


[jira] Assigned: (GERONIMO-2921) Tomcat does not register web service url mappings when web.xml is not present

Posted by "Jeff Genender (JIRA)" <ji...@apache.org>.
     [ https://issues.apache.org/jira/browse/GERONIMO-2921?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Jeff Genender reassigned GERONIMO-2921:
---------------------------------------

    Assignee: Jeff Genender

> 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
>         Assigned To: Jeff Genender
>         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.


[jira] Updated: (GERONIMO-2921) Tomcat does not register web service url mappings when web.xml is not present

Posted by "Jarek Gawor (JIRA)" <ji...@apache.org>.
     [ 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.


[jira] Commented: (GERONIMO-2921) Tomcat does not register web service url mappings when web.xml is not present

Posted by "Jarek Gawor (JIRA)" <ji...@apache.org>.
    [ https://issues.apache.org/jira/browse/GERONIMO-2921?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#action_12477327 ] 

Jarek Gawor commented on GERONIMO-2921:
---------------------------------------

First, https://issues.apache.org/jira/browse/GERONIMO-2922 needs to be applied. Second, deploy the attached .war file. If things are deployed and connected successfully the following urls should work fine:

http://localhost:8080/jaxws-war-2.0-SNAPSHOT/SOAPService?wsdl

http://localhost:8080/jaxws-war-2.0-SNAPSHOT/HelloServiceService?wsdl

http://localhost:8080/jaxws-war-2.0-SNAPSHOT/EchoServiceService?wsdl


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


[jira] Closed: (GERONIMO-2921) Tomcat does not register web service url mappings when web.xml is not present

Posted by "Jeff Genender (JIRA)" <ji...@apache.org>.
     [ https://issues.apache.org/jira/browse/GERONIMO-2921?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Jeff Genender closed GERONIMO-2921.
-----------------------------------

       Resolution: Fixed
    Fix Version/s: 2.0-beta2

Ok...here is the story...

Tomcat does it's own parsing of web.xml.  I tried to manually push wrappers (Servlets) and patterns to the context, but this is not working.  In debugging Tomcat, apparently the url patterns don't get placed at the appropriate level when the context is running.  I don't know if this is a bug or not, but it certainly is not following the architecture for the embedded/.manual tomcat component building as shown in examples all over the place.  The issue may be that the context is already started.

Therefore, I am writing out the XML to the deployment dir if a web.xml does not exist.  This is kind of a kludge because of the Tomcat explained above. Hence, creating and writing out a web.xml to the deployed location is the only way around this until Tomcat fixes that bug.

Once/if Tomcat can allow a how deploy of a servlet and url-pattern mapping to get picked up and dispatched, I can do a cleaner implementation with pure objects, thus removing the need to write out a web.xml.

But for now, this seems to work.

Committed revision 514188.


> 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
>         Assigned To: Jeff Genender
>             Fix For: 2.0-beta2
>
>         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.