Hi, I don't use the JSON plugin. My suggestion is, you're using a number of tools in a chain, one isn't working, so what's the minimum viable way out? Clearly something with the JSON plugin isn't working, so try and verify where the problem is and work around it. Alternately, it might make sense to go grab the source of the JSON plugin and try and work through that.
Here's how we handle JSON output, we use the stream result: https://struts.apache.org/docs/stream-result.html On Tue, May 9, 2017 at 2:41 PM, developer researcher < java.developer.researc...@gmail.com> wrote: > 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 > > > -- _________________________________________________________ Adam Brin Director of Technology, Digital Antiquity 480.965.1278