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

Reply via email to