geronimo-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Jeff Genender (JIRA)" <j...@apache.org>
Subject [jira] Closed: (GERONIMO-2921) Tomcat does not register web service url mappings when web.xml is not present
Date Sat, 03 Mar 2007 16:56:50 GMT

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


Mime
View raw message