struts-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From developer researcher <java.developer.researc...@gmail.com>
Subject Re: Problem using the Spring's AOP in Struts2's Actions with json-plugin
Date Tue, 09 May 2017 02:14:47 GMT
Hello Adam,

Yes, I am using the "ignoreInterfaces" param set to "false". My result is:
"@Result(name="success",type="json", params={"contentType", "text/html",
"ignoreInterfaces", "false"})"

The file "struts-2.5.10.1-all.zip" contains the jackson's jars, so I guess
the json-plugin use jackson.In any case, how would you use your own
serialization instead of the provided by json-plugin for actions that need
AOP?

In new tests, the problem is focused on actions with a json result.

*1. For **results of **default **type:* If the class extends ActionSupport,
it is necessary to use "CGLIB proxy", if the class does not extend from
ActionSupport it is possible to use both "CGLIB proxy" and "JDK dynamic
proxy".
*2. For results of json **type **:* without AOP everything works fine, with
AOP both using "JDK dynamic proxy" and "CGLIB proxy" the action is
executed, the advice also but in both cases occurs the
OperationNotSupportedException

Thanks


2017-05-08 15:50 GMT-05:00 Adam Brin <abrin@digitalantiquity.org>:

> Hi,
>
> I presume you’ve read this: https://struts.apache.org/
> docs/json-plugin.html#JSONPlugin-Proxiedobjects
>
> It may be that the issue is not Struts2, but the JSON library that the
> Struts2 Json plugin uses… and thus, you may need to handle the JSON
> serialization using Jackson or another library.
>
>
> - adam
> --
> _________________________________________________________
> Adam Brin
> Director of Technology, Digital Antiquity
> 480.965.1278
>
> > On May 8, 2017, at 12:27 PM, developer researcher <
> java.developer.researcher@gmail.com> wrote:
> >
> > Hello Martin,
> >
> > First of all thanks for the reply, but I'm not sure if my queries have
> been
> > understood. I am using Struts 2.5.10.1
> >
> > My main query is: *Is there a way to use Spring AOP in Struts2 Actions
> > using the "JDK dynamic proxies"? Does anyone have an example?*
> >
> > Sorry, but I can not find any relationship between your answers and the
> > exceptions attached in my previous message:
> >
> > *1. NoSuchMethodException:* The code I'm testing does not have anything
> > from javax.sql.DataSource
> >
> > *2. OperationNotSupportedException:* Without using AOP there is no
> > exception for some namespace. This is very strange because the code in
> the
> > advice is simply "System.out.println ()" for testing purposes.
> >
> > Thanks
> >
> >
> > 2017-05-06 8:21 GMT-05:00 Martin Gainty <mgainty@hotmail.com>:
> >
> >> MG>below
> >>
> >> ________________________________
> >> From: developer researcher <java.developer.researcher@gmail.com>
> >> Sent: Friday, May 5, 2017 10:09 PM
> >> To: Struts Users Mailing List
> >> Subject: Problem using the Spring's AOP in Struts2's Actions with
> >> json-plugin
> >>
> >> Hello,
> >>
> >> I am using Strust 2 <sp?> with spring-plugin and json-plugin to use:
> >>
> >> 1. Injection of dependencies: apparently everything is working well.
> >> 2. Spring's AOP: works when applied over methods of injected objects in
> >> the Struts Actions but not when applied over methods of actions (my
> class
> >> extends from ActionSupport and I use the @Action annotation at method
> level)
> >>
> >> MG>spring does not know what ActionSupport as it is a Struts classes
> >> besides which ActionSupport are not considered
> >> MG>spring beans which are simple pojos with a no-arg constructor
> >> https://docs.spring.io/spring/docs/current/spring-framework-
> >> reference/html/beans.html
> >> 7. The IoC container - Spring<https://docs.spring.io/
> >> spring/docs/current/spring-framework-reference/html/beans.html>
> >> docs.spring.io
> >> As the preceding diagram shows, the Spring IoC container consumes a form
> >> of configuration metadata; this configuration metadata represents how
> you
> >> as an application ...
> >>
> >>
> >> This situation has generated the following questions:
> >>
> >> 1. Are the actions created and managed by Spring or Struts? It's
> supposed
> >> to be Spring, but I have this doubt because Spring's AOP is supposed to
> >> work on Spring beans but in my case it does not work and because I do
> not
> >> use the Spring's @Component annotation in the Action class
> >>
> >> MG>correct but you can also specify a spring-bean in spring-beans.xml in
> >> your classpath e.g.:
> >> <bean id="springTest" name="springTest" class="org.struts.SpringTest"/>
> >>
> >> 2. Is there a way to use Spring AOP in Struts2 Actions using the "JDK
> >> dynamic proxies"? I have tested with the following results:
> >>
> >> a) When Spring uses "JDK dynamic proxies" the Struts2 Action is not
> >> executed and the following exception is thrown: NoSuchMethodException
> (see
> >> NoSuchMethodException.txt)
> >> b) When Spring uses "CGLIB proxy" in an Action whose result is of the
> >> default type: the Action works correctly
> >> c) When Spring uses "CGLIB proxy" in an Action whose result is of type
> >> json: the Struts2 Action is executed but the following exception is
> thrown:
> >> OperationNotSupportedException (see OperationNotSupportedException
> .txt).
> >> When I do not use AOP this Action works correctly.
> >>
> >> MG>builder.bind does not recognise json result-set as a valid
> >> javax.sql.DataSource..here is an example of builder.bind
> >> org.springframework.mock.jndi.SimpleNamingContextBuilder builder = new
> >> org.springframework.mock.jndi.SimpleNamingContextBuilder();
> >> * DataSource ds = new org.springframework.jdbc.datasource.
> >> DriverManagerDataSource(...);
> >> * builder.bind("java:comp/env/jdbc/myds", ds);
> >>
> >> MG>as of now JSON is not a valid javax.sql.DataSourceHere is Doc:
> >> <p>In a J2EE container, it is recommended to use a JNDI DataSource
> >> provided by
> >> * the container. Such a javax.sql.DataSource can be exposed as a
> >> javax.sql.DataSource bean in a Spring
> >> * ApplicationContext via {@link org.springframework.jndi.
> >> JndiObjectFactoryBean},
> >> * for seamless switching to and from a local javax.sql.DataSource bean
> >> like this class.
> >> * For tests, you can then either set up a mock JNDI environment through
> >> Spring's
> >> * {@link org.springframework.mock.jndi.SimpleNamingContextBuilder}, or
> >> switch the
> >> * bean definition to a local javax.sql.DataSource(which is simpler and
> >> thus recommended).
> >> *
> >> * <p>If you need a "real" connection pool outside of a J2EE container,
> >> consider
> >> * <a href="http://commons.apache.org/proper/commons-dbcp">Apache
> Commons
> >> DBCP</a>
> >> * or <a href="http://sourceforge.net/projects/c3p0">C3P0</a>.
> >> * Commons DBCP's BasicDataSource and C3P0's ComboPooledDataSource are
> full
> >> * connection pool beans, supporting the same basic properties as this
> >> class
> >> * plus specific settings (such as minimal/maximal pool size etc).
> >> mg>JSON is not yet a valid javax.sql.DataSource according to Spring
> >>
> >> MG>also you have not declared a namespace that NamingContext can
> reference
> >> which is causing exception
> >>
> >> MG>HTH
> >>
> >> Thanks
> >>
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: user-unsubscribe@struts.apache.org
> For additional commands, e-mail: user-help@struts.apache.org
>
>

Mime
  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message