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

Reply via email to