Re: java.lang.ClassCastException: org.apache.struts2.dispatcher.mapper.ActionMapping

2017-12-15 Thread Yasser Zamani

Could you please register this issue at [1] with title "Support for 
cross context request processing" then we will keep it in monitor and 
you can track resolution there, thanks for your report!

On 12/16/2017 2:24 AM, Prasanth Pasala wrote:
> Do you see any side effects of this?

I'm not sure. But unfortunately I did not know better solution for now 
as Struts seems is not ready for cross context request processing :(

> 
>          request.setAttribute("struts.actionMapping", new ActionMapping());

It's better to set null instead : 
request.setAttribute("struts.actionMapping", null);

works?

>          request.setAttribute("struts.valueStack", null);

[1] https://issues.apache.org/jira/projects/WW


Re: java.lang.ClassCastException: org.apache.struts2.dispatcher.mapper.ActionMapping

2017-12-15 Thread Prasanth Pasala
Added the below two lines to my filter (before the struts2 filter) in context2 
app. That seems to do the trick. Thought it might create a problem as I am 
setting a new ActionMapping in the request,
but seems to work fine. Do you see any side effects of this?

        request.setAttribute("struts.actionMapping", new ActionMapping());
        request.setAttribute("struts.valueStack", null);

Thanks,
Prasanth

On 12/15/2017 04:10 PM, Prasanth Pasala wrote:
> It seems like removeAttribute or setAttribute is not getting rid of the 
> attribute from request. See below. If I set the value to a random string then 
> I get a String can't be cast to ActionMapping
> exception.
>
>    Enumeration attrs = request.getAttributeNames();
>         while(attrs.hasMoreElements()) {
>             System.out.println(attrs.nextElement());
>         }
>         System.out.println(request.getAttribute("struts.actionMapping"));
>         request.setAttribute("struts.actionMapping", null);
>         System.out.println(request.getAttribute("struts.actionMapping"));
>
> Output:
> 16:05:05,300 INFO  [stdout] (default task-13) 
> javax.servlet.forward.context_path
> 16:05:05,302 INFO  [stdout] (default task-13) 
> javax.servlet.forward.servlet_path
> 16:05:05,303 INFO  [stdout] (default task-13) 
> javax.servlet.forward.request_uri
> 16:05:05,303 INFO  [stdout] (default task-13) javax.servlet.forward.path_info
> 16:05:05,303 INFO  [stdout] (default task-13) 
> javax.servlet.forward.query_string
> 16:05:05,303 INFO  [stdout] (default task-13) javax.servlet.request.key_size
> 16:05:05,303 INFO  [stdout] (default task-13) __cleanup_recursion_counter
> 16:05:05,303 INFO  [stdout] (default task-13) 
> javax.servlet.request.cipher_suite
> 16:05:05,304 INFO  [stdout] (default task-13) struts.valueStack
> 16:05:05,308 INFO  [stdout] (default task-13) 
> javax.servlet.request.ssl_session_id
> 16:05:09,121 INFO  [stdout] (default task-13) ActionMapping{name='Login', 
> namespace='/', method='null', extension='action', params=null, result=null}
> 16:05:10,960 INFO  [stdout] (default task-13) ActionMapping{name='Login', 
> namespace='/', method='null', extension='action', params=null, result=null}
>
>
> On 12/15/2017 02:28 PM, Prasanth Pasala wrote:
>> Thanks for the prompt response. Tried removing the attribute from the 
>> request, but still getting the class cast exception. Is it possible it is 
>> being set after I have called the forward?    
>> request.removeAttribute("struts.actionMapping");     // FORWARD THE REQUEST  
>>    ServletContext sContext = context.getContext("/context2");     
>> RequestDispatcher rd =
>> sContext.getRequestDispatcher("/Login.action");    rd.forward(request, 
>> response);    [show/hide original text]
>> No it's not a Struts issue. You don't see this in Struts1 because maybe 
>> it doesn't use any object bounded to dispatched request. But Struts2 
>> wants to
>>
>> ActionMapping mapping = 
>> (ActionMapping)request.getAttribute("struts.actionMapping");
>>
>> A workaround would be removing object with key "struts.actionMapping" 
>> from request before dispatching.
>>
>> I hope this helps.
>>
>> -
>> To unsubscribe, e-mail: user-unsubscr...@struts.apache.org
>> For additional commands, e-mail: user-h...@struts.apache.org    
>



Re: Re: java.lang.ClassCastException: org.apache.struts2.dispatcher.mapper.ActionMapping

2017-12-15 Thread Prasanth Pasala
It seems like removeAttribute or setAttribute is not getting rid of the 
attribute from request. See below. If I set the value to a random string then I 
get a String can't be cast to ActionMapping
exception.

   Enumeration attrs = request.getAttributeNames();
        while(attrs.hasMoreElements()) {
            System.out.println(attrs.nextElement());
        }
        System.out.println(request.getAttribute("struts.actionMapping"));
        request.setAttribute("struts.actionMapping", null);
        System.out.println(request.getAttribute("struts.actionMapping"));

Output:
16:05:05,300 INFO  [stdout] (default task-13) javax.servlet.forward.context_path
16:05:05,302 INFO  [stdout] (default task-13) javax.servlet.forward.servlet_path
16:05:05,303 INFO  [stdout] (default task-13) javax.servlet.forward.request_uri
16:05:05,303 INFO  [stdout] (default task-13) javax.servlet.forward.path_info
16:05:05,303 INFO  [stdout] (default task-13) javax.servlet.forward.query_string
16:05:05,303 INFO  [stdout] (default task-13) javax.servlet.request.key_size
16:05:05,303 INFO  [stdout] (default task-13) __cleanup_recursion_counter
16:05:05,303 INFO  [stdout] (default task-13) javax.servlet.request.cipher_suite
16:05:05,304 INFO  [stdout] (default task-13) struts.valueStack
16:05:05,308 INFO  [stdout] (default task-13) 
javax.servlet.request.ssl_session_id
16:05:09,121 INFO  [stdout] (default task-13) ActionMapping{name='Login', 
namespace='/', method='null', extension='action', params=null, result=null}
16:05:10,960 INFO  [stdout] (default task-13) ActionMapping{name='Login', 
namespace='/', method='null', extension='action', params=null, result=null}


On 12/15/2017 02:28 PM, Prasanth Pasala wrote:
> Thanks for the prompt response. Tried removing the attribute from the 
> request, but still getting the class cast exception. Is it possible it is 
> being set after I have called the forward?    
> request.removeAttribute("struts.actionMapping");     // FORWARD THE REQUEST   
>   ServletContext sContext = context.getContext("/context2");     
> RequestDispatcher rd =
> sContext.getRequestDispatcher("/Login.action");    rd.forward(request, 
> response);    [show/hide original text]
> No it's not a Struts issue. You don't see this in Struts1 because maybe 
> it doesn't use any object bounded to dispatched request. But Struts2 
> wants to
>
> ActionMapping mapping = 
> (ActionMapping)request.getAttribute("struts.actionMapping");
>
> A workaround would be removing object with key "struts.actionMapping" 
> from request before dispatching.
>
> I hope this helps.
>
> -
> To unsubscribe, e-mail: user-unsubscr...@struts.apache.org
> For additional commands, e-mail: user-h...@struts.apache.org    



Re: java.lang.ClassCastException: org.apache.struts2.dispatcher.mapper.ActionMapping

2017-12-15 Thread Prasanth Pasala
Thanks for the prompt response. Tried removing the attribute from the request, 
but still getting the class cast exception. Is it possible it is being set 
after I have called the forward?    
request.removeAttribute("struts.actionMapping");     // FORWARD THE REQUEST     
ServletContext sContext = context.getContext("/context2");     
RequestDispatcher rd =
sContext.getRequestDispatcher("/Login.action");    rd.forward(request, 
response);    [show/hide original text]
No it's not a Struts issue. You don't see this in Struts1 because maybe 
it doesn't use any object bounded to dispatched request. But Struts2 
wants to

ActionMapping mapping = 
(ActionMapping)request.getAttribute("struts.actionMapping");

A workaround would be removing object with key "struts.actionMapping" 
from request before dispatching.

I hope this helps.

-
To unsubscribe, e-mail: user-unsubscr...@struts.apache.org
For additional commands, e-mail: user-h...@struts.apache.org    



Re: java.lang.ClassCastException: org.apache.struts2.dispatcher.mapper.ActionMapping

2017-12-15 Thread Yasser Zamani


On 12/15/2017 9:47 PM, Prasanth wrote:
> Is this issue just with Struts2, as it works with Struts1.

No it's not a Struts issue. You don't see this in Struts1 because maybe 
it doesn't use any object bounded to dispatched request. But Struts2 
wants to

ActionMapping mapping = 
(ActionMapping)request.getAttribute("struts.actionMapping");

A workaround would be removing object with key "struts.actionMapping" 
from request before dispatching.

I hope this helps.

-
To unsubscribe, e-mail: user-unsubscr...@struts.apache.org
For additional commands, e-mail: user-h...@struts.apache.org


re: java.lang.ClassCastException: org.apache.struts2.dispatcher.mapper.ActionMapping

2017-12-15 Thread Prasanth Pasala

Yes, dispatching request to another struts application. I am using Wildfly 
which does use different class loaders. Is this issue just with Struts2, as it 
works with Struts1.

Thanks,
Prasanth

--

... do you try to dispatch request to another Struts application? I 
remember e.g. for Tomcat, it uses different classloaders for each app.

I think you can ask and continue with your container (e.g. Tomcat, 
Jetty, WebSphere, etc) for a solution.

Regards.



re: java.lang.ClassCastException:, org.apache.struts2.dispatcher.mapper.ActionMapping

2017-12-15 Thread Prasanth
We have the struts jars in the individual wars. I was actually thinking of 
putting it in server lib to see if that would solve the problem.

Thanks,
Prasanth
*
From: *
*Subject: *re: java.lang.ClassCastException: 
org.apache.struts2.dispatcher.mapper.ActionMapping
*Date: *2017-12-15 02:20
*List: *user@struts.apache.org 


[show/hide original text]

This usually happens when struts jar is included in application server's lib 
directory.

Regards,
Christoph



re: java.lang.ClassCastException: org.apache.struts2.dispatcher.mapper.ActionMapping

2017-12-15 Thread Prasanth

Yes, dispatching request to another struts application. I am using Wildfly 
which does use different class loaders. Is this issue just with Struts2, as it 
works with Struts1.

Thanks,
Prasanth

--

... do you try to dispatch request to another Struts application? I 
remember e.g. for Tomcat, it uses different classloaders for each app.

I think you can ask and continue with your container (e.g. Tomcat, 
Jetty, WebSphere, etc) for a solution.

Regards.



Re: java.lang.ClassCastException: org.apache.struts2.dispatcher.mapper.ActionMapping

2017-12-15 Thread Yasser Zamani


On 12/15/2017 11:45 AM, Yasser Zamani wrote:
> 
> 
> On 12/15/2017 2:16 AM, Prasanth Pasala wrote:
>> ServletContext sContext = context.getContext("/context2");
>> RequestDispatcher rd = sContext.getRequestDispatcher(resource);
>> rd.forward(request, response);
>>
>> Thanks,
>> Prasanth
>>
>>Exception: java.lang.RuntimeException: java.lang.RuntimeException: 
>> java.lang.ClassCastException: 
>> org.apache.struts2.dispatcher.mapper.ActionMapping cannot be cast to 
>> org.apache.struts2.dispatcher.mapper.ActionMapping
> 
> 
> I found [1]:
>> usually when you get ClassCastExceptions you cannot explain you have loaded 
>> the class with one classloader then try to cast it to the same class loaded 
>> by another classloader. This will not work - they are represented by two 
>> different Class objects inside the JVM and the cast will fail.
> 
> [1] https://stackoverflow.com/a/826345/1362623
> 

... do you try to dispatch request to another Struts application? I 
remember e.g. for Tomcat, it uses different classloaders for each app.

I think you can ask and continue with your container (e.g. Tomcat, 
Jetty, WebSphere, etc) for a solution.

Regards.


re: java.lang.ClassCastException: org.apache.struts2.dispatcher.mapper.ActionMapping

2017-12-15 Thread Christoph.Nenning


> > ServletContext sContext = context.getContext("/context2");
> > RequestDispatcher rd = sContext.getRequestDispatcher(resource);
> > rd.forward(request, response);
> >
> > Thanks,
> > Prasanth
> >
> >   Exception: java.lang.RuntimeException: java.lang.RuntimeException:
> java.lang.ClassCastException:
> org.apache.struts2.dispatcher.mapper.ActionMapping cannot be cast to
> org.apache.struts2.dispatcher.mapper.ActionMapping
> 
> 
> I found [1]:
> > usually when you get ClassCastExceptions you cannot explain you have
> loaded the class with one classloader then try to cast it to the same class
> loaded by another classloader. This will not work - they are represented by
> two different Class objects inside the JVM and the cast will fail.
> 
> [1] https://stackoverflow.com/a/826345/1362623

This usually happens when struts jar is included in application server's lib 
directory.

Regards,
Christoph


-
To unsubscribe, e-mail: user-unsubscr...@struts.apache.org
For additional commands, e-mail: user-h...@struts.apache.org


Re: java.lang.ClassCastException: org.apache.struts2.dispatcher.mapper.ActionMapping

2017-12-15 Thread Yasser Zamani


On 12/15/2017 2:16 AM, Prasanth Pasala wrote:
> ServletContext sContext = context.getContext("/context2");
> RequestDispatcher rd = sContext.getRequestDispatcher(resource);
> rd.forward(request, response);
> 
> Thanks,
> Prasanth
> 
>   Exception: java.lang.RuntimeException: java.lang.RuntimeException: 
> java.lang.ClassCastException: 
> org.apache.struts2.dispatcher.mapper.ActionMapping cannot be cast to 
> org.apache.struts2.dispatcher.mapper.ActionMapping


I found [1]:
> usually when you get ClassCastExceptions you cannot explain you have loaded 
> the class with one classloader then try to cast it to the same class loaded 
> by another classloader. This will not work - they are represented by two 
> different Class objects inside the JVM and the cast will fail.

[1] https://stackoverflow.com/a/826345/1362623