Hi.

I've faced the problem which is described here: when a tag which extends
SimpleTagSupport (2.0 spec) is used on a JSP, jasper compiler included in
Geronimo 2.1.1 generates code which throws UnsupportedOperationException.
But such code is generated only when JSP is compiled with default settings
(obviously, this is the case when precompilation is made using some tool,
for instance Ant).
And when JSPs are compiled on the fly by Geronimo, it compiles them
correctly.

There's a global property called
org.apache.jasper.Constants.USE_INSTANCE_MANAGER_FOR_TAGS. When it's false
(or missing) during JSP compilation, incorrect code is generated. When it's
true (possibly, this is the case for on-the-fly generation), the generated
code works fine.

Here's the example of code which throws exception (it's a fragment of code
generated for one of JSPs):
    com.blandware.atleap.webapp.taglib.core.ConstantsTag
_jspx_th_atleap_005fconstants_005f0 = (new
com.blandware.atleap.webapp.taglib.core.ConstantsTag());
    _jsp_instancemanager.newInstance(_jspx_th_atleap_005fconstants_005f0);

Call to newInstance() throws the following:

java.lang.UnsupportedOperationException: separate instantiation and
injection is not supported

org.apache.geronimo.jasper.JasperServletContextCustomizer$JasperInstanceManager.newInstance(JasperServletContextCustomizer.java:84)

com.blandware.atleap.jsp.error_jsp._jspx_meth_atleap_005fconstants_005f0(error_jsp.java:99)
        com.blandware.atleap.jsp.error_jsp._jspService(error_jsp.java:62)
        org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
        javax.servlet.http.HttpServlet.service(HttpServlet.java:806)

com.blandware.atleap.webapp.filter.StatisticsCollectionFilter.doFilter(StatisticsCollectionFilter.java:75)

org.acegisecurity.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:265)

org.acegisecurity.intercept.web.FilterSecurityInterceptor.invoke(FilterSecurityInterceptor.java:107)

org.acegisecurity.intercept.web.FilterSecurityInterceptor.doFilter(FilterSecurityInterceptor.java:72)

org.acegisecurity.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:275)

org.acegisecurity.ui.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:124)

org.acegisecurity.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:275)

org.acegisecurity.providers.anonymous.AnonymousProcessingFilter.doFilter(AnonymousProcessingFilter.java:125)

org.acegisecurity.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:275)

org.acegisecurity.wrapper.SecurityContextHolderAwareRequestFilter.doFilter(SecurityContextHolderAwareRequestFilter.java:81)

org.acegisecurity.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:275)

org.acegisecurity.context.HttpSessionContextIntegrationFilter.doFilter(HttpSessionContextIntegrationFilter.java:249)

org.acegisecurity.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:275)
        
org.acegisecurity.util.FilterChainProxy.doFilter(FilterChainProxy.java:149)

org.acegisecurity.util.FilterToBeanProxy.doFilter(FilterToBeanProxy.java:98)

org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:96)

org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76)


To work this around, one may set system property called
org.apache.jasper.Constants.USE_INSTANCE_MANAGER_FOR_TAGS to true before
calling to JspC.

So, here's a little question: is it really intended to work how it works? I
mean it's not very intiutive to set some system properties to compile JSPs
successfully. Or, possibly, I've just misunderstood something?
-- 
View this message in context: 
http://www.nabble.com/pre-compiled-JSPs-throw-exceptions-tp16498213s134p18809470.html
Sent from the Apache Geronimo - Users mailing list archive at Nabble.com.

Reply via email to