[jira] Commented: (NANO-39) groovy scripted nanocontainer fails in servlet context
jira-yCVjj/[email protected] Sat, 14 Feb 2004 16:42:27 -0500 (EST)
| Newsgroups | gmane.comp.java.nanocontainer.devel |
|---|---|
| Message-ID | <[email protected]> |
The following comment has been added to this issue:
Author: Jacob Kjome
Created: Sat, 14 Feb 2004 4:41 PM
Body:
Ok, I've got a little more info. I put the following in GroovyContainerBuilder.createContainer()...
System.out.println("Groovy class is: " + groovyClass.getName());
System.out.println("Groovy script reader hash is: " + script);
I wanted to make sure that the class name was the same each time and that the stored script (actually a StringReader containing the contexts of the script) was the same each time. The script was the same (same hashcode every time), but the name of the class was different.
Here's the result the first time (and buildContainer() in "DemoBuilder" is found and called properly....
Groovy class is: DemoBuilder
Groovy script reader hash is: java.io.StringReader-m3r8v5rf/[email protected]
Here's the result any time after the first time above (and I get exceptions from Groovy saying buildContainer() in "nanocontainer" can't be found)....
Groovy class is: nanocontainer
Groovy script reader hash is: java.io.StringReader-m3r8v5rf/[email protected]
I can't quite figure out how that could be? How could the same script result in different class names? And not only that, but also (every time after the first call to createContainer()) in a generated Java class which doesn't contain the appropriate buildContainer(parent, compositionScope) signature????
I'm not sure if this is the fault of Groovy or something in Nanocontainer, but now I'm leaning more toward Groovy itself.
Thoughts?
Jake
---------------------------------------------------------------------
View this comment:
http://jira.codehaus.org/secure/ViewIssue.jspa?key=NANO-39&page=comments#action_16750
---------------------------------------------------------------------
View the issue:
http://jira.codehaus.org/secure/ViewIssue.jspa?key=NANO-39
Here is an overview of the issue:
---------------------------------------------------------------------
Key: NANO-39
Summary: groovy scripted nanocontainer fails in servlet context
Type: Bug
Status: Unassigned
Priority: Major
Original Estimate: Unknown
Time Spent: Unknown
Remaining: Unknown
Project: NanoContainer
Components:
Core
Versions:
1.0-beta-1
Assignee:
Reporter: Jacob Kjome
Created: Fri, 13 Feb 2004 1:51 AM
Updated: Sat, 14 Feb 2004 4:41 PM
Environment: servlet container, scripting of nanocontainer done with Groovy
Description:
When setting up the nanocontainer servlet in web.xml using the context-param "nanocontainer.groovy", it only seems to work for the first container that is configured, or, the first compositionScope. If any other scope is provided such as a ServletRequest or HttpSession, it fails with the following message...
"Caused by: groovy.lang.MissingMethodException: No such method: buildContainer for class: nanocontainer with arguments: [org.picocontainer.defaults.DefaultPicoContainer-Le89R2mpRr8@public.gmane.org, org.apache.coyote.tomcat5.CoyoteRequestFacade@952905]"
I know it is working the for the first container (in the ServletContext compositionScope) because I print out the compositionScope as soon as the "buildContainer" method is entered and it says...
"compositionScope is: org.apache.catalina.core.ApplicationContextFacade-m6hyCi5e6VU@public.gmane.org"
Here is the script...
class DemoBuilder {
buildContainer(parent, compositionScope) {
System.out.println("compositionScope is: " + compositionScope);
pico = new org.picocontainer.defaults.DefaultPicoContainer(parent)
if (compositionScope instanceof javax.servlet.ServletRequest) {
System.out.println("I got here to register a component in the servlet request scope!!!!")
pico.registerComponentImplementation("util", SomeRequestUtil.class)
}
else if (compositionScope instanceof javax.servlet.http.HttpSession) {
System.out.println("I got here to register a component in the servlet session scope!!!!")
pico.registerComponentImplementation("counter", SomeCounter.class)
}
else if (compositionScope instanceof javax.servlet.ServletContext) {
//nothing to do for now
}
else {
//nothing to do for now
}
return pico
}
}
Here's the full stack trace....
org.nanocontainer.integrationkit.PicoCompositionException
at org.nanocontainer.script.groovy.GroovyContainerBuilder.createContainer(GroovyContainerBuilder.java:57)
at org.nanocontainer.integrationkit.LifecycleContainerBuilder.buildContainer(LifecycleContainerBuilder.java:25)
at org.nanocontainer.servlet.ServletRequestContainerLauncher.startContainer(ServletRequestContainerLauncher.java:48)
at org.nanocontainer.servlet.ServletRequestContainerFilter.doFilter(ServletRequestContainerFilter.java:36)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:233)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:204)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:257)
at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:151)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:564)
at org.apache.catalina.core.StandardContextValve.invokeInternal(StandardContextValve.java:245)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:199)
at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:151)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:564)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:195)
at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:151)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:164)
at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:149)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:564)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:156)
at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:151)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:564)
at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:972)
at org.apache.coyote.tomcat5.CoyoteAdapter.service(CoyoteAdapter.java:206)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:828)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol.java:700)
at org.apache.tomcat.util.net.TcpWorkerThread.runIt(PoolTcpEndpoint.java:584)
at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:683)
at java.lang.Thread.run(Thread.java:534)
Caused by: groovy.lang.MissingMethodException: No such method: buildContainer for class: nanocontainer with arguments: [org.picocontainer.defaults.DefaultPicoContainer-Le89R2mpRr8@public.gmane.org, org.apache.coyote.tomcat5.CoyoteRequestFacade@952905]
at groovy.lang.MetaClass.invokeStaticMethod(MetaClass.java:291)
at groovy.lang.MetaClass.invokeMethod(MetaClass.java:247)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:324)
at groovy.lang.MetaClass.doMethodInvoke(MetaClass.java:765)
at groovy.lang.MetaClass.invokeMethod(MetaClass.java:214)
at org.codehaus.groovy.runtime.Invoker.invokeMethod(Invoker.java:130)
at org.codehaus.groovy.runtime.InvokerHelper.invokeMethod(InvokerHelper.java:98)
at nanocontainer.invokeMethod(nanocontainer.groovy)
at org.nanocontainer.script.groovy.GroovyContainerBuilder.createContainer(GroovyContainerBuilder.java:55)
... 27 more
Jake
---------------------------------------------------------------------
JIRA INFORMATION:
This message is automatically generated by JIRA.
If you think it was sent incorrectly contact one of the administrators:
http://jira.codehaus.org/secure/Administrators.jspa
If you want more information on JIRA, or have a bug to report see:
http://www.atlassian.com/software/jira