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