[
https://issues.apache.org/struts/browse/TILES-286?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=44473#action_44473
]
Dmitry commented on TILES-286:
------------------------------
I was able to reproduce it on Jetty 5.1.14 and JDK 1.5.0_04
> TilesAccess won't set context attributes in Jetty 5.1.10
> --------------------------------------------------------
>
> Key: TILES-286
> URL: https://issues.apache.org/struts/browse/TILES-286
> Project: Tiles
> Issue Type: Bug
> Components: tiles-api
> Affects Versions: 2.0.6
> Environment: Java(TM) 2 Runtime Environment, Standard Edition (build
> 1.5.0_12-b04), Jetty 5.1.11, SUSE Linux Enterprise 10, 64 bit
> Reporter: Dmitry
>
> The code for setting a context attribute in the TilesAccess class is as
> follows:
> private static void setAttribute(Object context, String name, Object
> value)
> throws TilesException {
> try {
> Class<?> contextClass = context.getClass();
> Method attrMethod = contextClass.getMethod("setAttribute",
> String.class, Object.class);
> attrMethod.invoke(context, name, value);
> } catch (Exception e) {
> throw new TilesException("Unable to set attribute for specified
> context: '" + context + "'");
> }
> }
> The line
> attrMethod.invoke(context, name, value);
> throws an IllegalAccessException if Tiles are used inside a Jetty 5.1.11.
> This happens because Jetty's implementation of the
> javax.servlet.ServletContext interface is an inner class without the public
> modifier.
> I.e., Jetty's org.mortbay.jetty.servlet.ServletHandler$Context is not public
> although it's setAttribute() is.
> The same applies to getAttribute() and removeAttribute() methods.
> One of the possible solutions is to reflect the method not only from the
> class itself, but from all its superclasses and interfaces as well.
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.