Hi Adam, I have not tried Jackson and the Spring AOP outside of Struts2. My context is: modify a Struts web application (with spring-plugin and json-plugin) to add some functionality (advices) through AOP. I would have to test in another application to see if there is any problem between Jackson and Spring AOP proxies.
On the other hand, when you say "*We just set content-type to application json*" Are you using json-plugin? In my case I have used both "text/html" and "application/json" (using json-plugin) but in both cases the serialization is executed by json-plugin automatically. According to the documentation, the results supported are https://cwiki.apache.org/confluence/display/WW/Result+Types Have you implemented a custom result? Thanks 2017-05-08 21:38 GMT-05:00 Adam Brin <ab...@digitalantiquity.org>: > We just set content-type to application json and output a stream or a > string. In the action, I just convert the object to a stream. > > But, here's the question: does your spring AOP proxy work properly with > Jackson outside of struts2? > > > > On Mon, May 8, 2017 at 7:14 PM, developer researcher < > java.developer.researc...@gmail.com> wrote: > > > 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 <ab...@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.researc...@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 <mgai...@hotmail.com>: > > > > > > > >> MG>below > > > >> > > > >> ________________________________ > > > >> From: developer researcher <java.developer.researc...@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-unsubscr...@struts.apache.org > > > For additional commands, e-mail: user-h...@struts.apache.org > > > > > > > > > > > > -- > _________________________________________________________ > Adam Brin > Director of Technology, Digital Antiquity > 480.965.1278 >