AOP is great as it allow us to address common concerns in a uniform manner. However, as the program evolves, there may come a time when the designer may want to change the class or method signatures and behavior, and this may result in an aspect no longer functioning or misbehaving because of changes in design assumption.
One of the promises of J2EE or Web Services is to allow individual "component" to be discovered and reused to form new business functions. But in reality, things are usually a bit more complicated that this.
In addition to matching the functional requirements of the component, one would need to match the non-functional requirements before a component can be reused.