Spring is packaged with AOP classes. Can you check who is bringing the aopalliance-1.0.jar?
On Sat, Jun 24, 2017 at 3:02 PM, Lucas Berri Cristofolini < [email protected]> wrote: > OK, so I've gotten to the point of testing our new design and ran into a > problem. > > As soon as I add the spring framework as a build dependency on sbt, I seem > to run into some merge conflicts with other dependencies (?). > > I'm not familiar with the sbt build system at all so I figured I should > ask you guys for ideas, I'll attach the build log (terminal output) and the > files changed to this email, so you guys can see what I'm doing (the > changes really come down to adding a line for the spring dependency and > adding that variable to the fey project's compile-time dependencies). > > In the meantime, I'll read up on how sbt handles this sort of thing and > see if I can figure it out. > > Cheers! > Lucas > > On Fri, Jun 23, 2017 at 5:11 PM, Rafael Weingärtner < > [email protected]> wrote: > >> We are not. Our doubt was regarding agents/performers/actors >> requirements, when we read the requirement for AKKA, which Fey uses >> (right?). >> >> >> We want dependency injection, and some of this "service" objects will >> have connections to other systems (e.g. database systems), so we wanted to >> check if AKKA required agents to be serializable; from our reading of AKKA >> documentation, this was not clear. Then we asked you guys here (it seems >> you are quite used to work with AKKA) and today I checked with AKKA >> community. >> >> >> I think by supporting remote actors you mean using AKKA clustering, >> right? (The topic of some other email exchange we had some time ago). We >> are working without AKKA (Fey) clustering for now; after fixing the bits >> for dependency injection we will take a look at this. >> >> On Fri, Jun 23, 2017 at 3:57 PM, Barbara <[email protected]> >> wrote: >> >>> Hi Rafael, >>> >>> Glad you guys figured that out. >>> As I said in one of the previous thread, Fey does not support remote >>> actors, so I'm not sure how are you guys able to instanciate an actor in a >>> different JVM using fey. >>> >>> Do you mind explain it ? >>> >>> Barbara Gomes >>> +1 (650) 713-6092 <+1%20650-713-6092> >>> >>> On Jun 23, 2017, at 12:44 PM, Rafael Weingärtner < >>> [email protected]> wrote: >>> >>> We found the answer for those questions. >>> In summary: >>> An ActorRef can be thought of as an address. Yes, we can send it over to >>> other JVMs (so long as they are in the same cluster), and can be used to >>> send messages to that Actor. >>> However (and this is Very Very Important), this isn't a remote procedure >>> call. It is absolutely illegal to make procedure calls to Actors, ever. >>> Instead, you send them messages. >>> >>> On Thu, Jun 22, 2017 at 7:57 PM, Rafael Weingärtner < >>> [email protected]> wrote: >>> >>>> In a more direct question, do agents instances need to be serializable? >>>> >>>> On Thu, Jun 22, 2017 at 7:16 PM, Lucas Berri Cristofolini < >>>> [email protected]> wrote: >>>> >>>>> So we've hit a few problems with our original design, and we're >>>>> discussing ideas for a possible alternative. >>>>> >>>>> When reading the documentation on akka actors and props ( >>>>> http://doc.akka.io/docs/akka/current/scala/actors.html#crea >>>>> ting-actors-with-props) one question came to mind regarding the >>>>> following statement about the ActorRef type: >>>>> >>>>> "The ActorRef is also serializable and network-aware. This means that >>>>> you can serialize it, send it over the wire and use it on a remote host >>>>> and >>>>> it will still be representing the same Actor on the original node, across >>>>> the network." >>>>> >>>>> Do you guys happen to know if that means that the ActorRef is >>>>> serializable and wherever it is used, will ALWAYS point to the original >>>>> Actor, running on its original JVM, or, is it possible that it would be >>>>> used to create another instance of the Actor, in another completely >>>>> separate JVM? >>>>> >>>>> Cheers! >>>>> Lucas >>>>> >>>>> On Sat, Jun 17, 2017 at 3:12 PM, Lucas Berri Cristofolini < >>>>> [email protected]> wrote: >>>>> >>>>>> Good catch. Seems that not much needs to be changed... I think simply >>>>>> adding the Spring extension to the ActorSystem config should do the >>>>>> trick. >>>>>> >>>>>> While that GitHub example I mentioned does use Spring to set the >>>>>> ActorSystem dependencies, I don't see that as being very useful for us >>>>>> right now, since we'd only use Spring for Actor-specific dependencies. >>>>>> >>>>>> If using Spring for the ActorSystem is interesting to the project as >>>>>> a whole, we could consider making some changes to make that work... >>>>>> >>>>>> I'll keep working on this as is for now. Let me know what you guys >>>>>> think about the ActorSystem idea. >>>>>> >>>>>> Cheers, >>>>>> Lucas >>>>>> >>>>>> On Fri, Jun 16, 2017 at 7:45 PM, Barbara Malta Gomes < >>>>>> [email protected]> wrote: >>>>>> >>>>>>> I might be wrong, but in order to use Akka with Spring, dont we need >>>>>>> to also change the way the ActorSystem is being instantiated on Fey? >>>>>>> >>>>>>> On Fri, Jun 16, 2017 at 12:39 PM, Lucas Berri Cristofolini < >>>>>>> [email protected]> wrote: >>>>>>> >>>>>>>> So after a while pondering and going back and forth between a few >>>>>>>> possible implementations, I think we're on to something interesting. >>>>>>>> >>>>>>>> Let me try and give you guys an outline of the design we came up >>>>>>>> with: >>>>>>>> >>>>>>>> - Create an Akka extension that will load the Spring context, >>>>>>>> as shown here -> https://github.com/typesafehub >>>>>>>> /activator-akka-java-spring >>>>>>>> - Implement an ActorProducer that will then instatiate the >>>>>>>> actors, as shown here -> http://doc.akka.io/docs/akka/c >>>>>>>> urrent/scala/actors.html#dependency-injection >>>>>>>> >>>>>>>> <http://doc.akka.io/docs/akka/current/scala/actors.html#dependency-injection> >>>>>>>> - Modify "Orchestration.scala" to add an alternative >>>>>>>> "CreateEnsemble" method which will use the Spring extension when >>>>>>>> specified >>>>>>>> - Modify "FeyCore.scala" by adding two possible fields to be >>>>>>>> interpreted from the orchestration JSON. One to specify that the >>>>>>>> performers >>>>>>>> within that orchestration will be using Spring (so that we can call >>>>>>>> the >>>>>>>> alternate method mentioned above); and another one specifying the >>>>>>>> path for >>>>>>>> the Spring context file >>>>>>>> - Modify the JSON validator to reflect these changes. >>>>>>>> >>>>>>>> >>>>>>>> This should keep the fey core generic, as we mentioned before, not >>>>>>>> making using Spring mandatory. >>>>>>>> >>>>>>>> Let me know what you guys think! >>>>>>>> >>>>>>>> Cheers, >>>>>>>> Lucas >>>>>>>> >>>>>>>> On Tue, Jun 6, 2017 at 1:03 PM, Barbara < >>>>>>>> [email protected]> wrote: >>>>>>>> >>>>>>>>> That sounds good. >>>>>>>>> >>>>>>>>> Thank you Lucas. >>>>>>>>> >>>>>>>>> Looking forward for the out coming results. >>>>>>>>> >>>>>>>>> This new feature will be a good fit for The Fey Engine. >>>>>>>>> >>>>>>>>> Regards, >>>>>>>>> >>>>>>>>> Barbara Gomes >>>>>>>>> +1 (650) 713-6092 <(650)%20713-6092> >>>>>>>>> >>>>>>>>> On Jun 6, 2017, at 8:42 AM, Lucas Berri Cristofolini < >>>>>>>>> [email protected]> wrote: >>>>>>>>> >>>>>>>>> I think using the Akka dependency injection system is a good >>>>>>>>> starting point. It should be sufficient for our needs and shouldn't >>>>>>>>> take >>>>>>>>> too long to get it working. >>>>>>>>> >>>>>>>>> I'll try to get something up and running and report back. Once we >>>>>>>>> get it going maybe we can discuss a feature proposal and eventually >>>>>>>>> even >>>>>>>>> bringing full spring integration to the fey core. >>>>>>>>> >>>>>>>>> Cheers! >>>>>>>>> Lucas >>>>>>>>> >>>>>>>>> On Mon, Jun 5, 2017 at 3:21 PM, Barbara Malta Gomes < >>>>>>>>> [email protected]> wrote: >>>>>>>>> >>>>>>>>>> Hi there, >>>>>>>>>> >>>>>>>>>> I'm not very familiar with the Spring framework. >>>>>>>>>> I spent sometime reading about it and how it would integrate into >>>>>>>>>> Fey (Akka). >>>>>>>>>> >>>>>>>>>> Correct if I'm misunderstood: >>>>>>>>>> >>>>>>>>>> *@Rafael *is suggesting the complete integration of the Spring >>>>>>>>>> framework into Fey. Which would be a bit more complex, since Fey >>>>>>>>>> would have >>>>>>>>>> to instantiate the Spring context and the Actor System would also >>>>>>>>>> have to >>>>>>>>>> be instantiated using the Spring context. Which would imply that all >>>>>>>>>> the >>>>>>>>>> necessary configuration for the Spring framework would have to be >>>>>>>>>> defined >>>>>>>>>> upon Fey start-up (fey.conf file maybe). >>>>>>>>>> >>>>>>>>>> *@Lucas *is suggesting that we use the built-in dependency >>>>>>>>>> injection that Akka offers. This approach sounds simpler than the >>>>>>>>>> Spring >>>>>>>>>> integration, and would also keep the "Generic" idea of Fey, where the >>>>>>>>>> developer should be able to use any framework he wants to. >>>>>>>>>> >>>>>>>>>> I personally think that it would be awesome if we could work on >>>>>>>>>> both approaches. Here are my reasons: >>>>>>>>>> >>>>>>>>>> 1. Spring is a fairly complex framework, and having it >>>>>>>>>> integrated on Fey core would be a huge plus and would also offer >>>>>>>>>> a more >>>>>>>>>> sophisticated dependency injection framework. >>>>>>>>>> 2. Using the built-in Akka dependency injection would be cool >>>>>>>>>> as well, since it seems way simpler to use and understand, and >>>>>>>>>> developers >>>>>>>>>> that are not familiar with the Spring framework (like me) would >>>>>>>>>> not have a >>>>>>>>>> hard time integrating it into the performers world. >>>>>>>>>> >>>>>>>>>> For both approaches, we would have to do some research and >>>>>>>>>> present an Integration idea into Fey. >>>>>>>>>> >>>>>>>>>> Perhaps we could start working on the proposal for *@Lucas >>>>>>>>>> *suggestions >>>>>>>>>> first? What do you guys think? >>>>>>>>>> >>>>>>>>>> *Just as a heads-up:* Unfortunately, Fey still have some class >>>>>>>>>> load issues when the performer's dependencies are fairly complex. As >>>>>>>>>> an >>>>>>>>>> example, we wrote an Apache Ignite performer and we had to go to >>>>>>>>>> some hoops >>>>>>>>>> to get the Spring dependencies loaded in runtime, in fact, the final >>>>>>>>>> fix >>>>>>>>>> was to manually add the dependency to the Fey Application when >>>>>>>>>> starting >>>>>>>>>> Fey, on the run command (java -jar ...). Although it was a simple >>>>>>>>>> fix, it >>>>>>>>>> would be nice to not have to do it anymore. >>>>>>>>>> >>>>>>>>>> Looking forward to hear your thoughts. >>>>>>>>>> >>>>>>>>>> Regards, >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> On Sun, Jun 4, 2017 at 12:44 PM, Lucas Berri Cristofolini < >>>>>>>>>> [email protected]> wrote: >>>>>>>>>> >>>>>>>>>>> I've been reading up on how Akka would handle dependency >>>>>>>>>>> injection (http://doc.akka.io/docs/akka/ >>>>>>>>>>> current/scala/actors.html#dependency-injection), and it seems >>>>>>>>>>> that, as far as Akka is concerned, upon creating an Actor, we could >>>>>>>>>>> pass a >>>>>>>>>>> DependencyInjector and an ApplicationContext within the actor's >>>>>>>>>>> Props. >>>>>>>>>>> >>>>>>>>>>> So now I'm imagining that bringing this functionality to Fey >>>>>>>>>>> would be a simple matter of adding a few extra items (the >>>>>>>>>>> DependencyInjector class and the ApplicationContext) to the json >>>>>>>>>>> that >>>>>>>>>>> defines an orchestration, and once the json is processed, verifying >>>>>>>>>>> if >>>>>>>>>>> those items are present, and adding those to the Props before >>>>>>>>>>> calling akka >>>>>>>>>>> to instance the actor. >>>>>>>>>>> >>>>>>>>>>> Still, I'm curious to see what you guys think about bringing >>>>>>>>>>> this feature to the fey-engine. >>>>>>>>>>> >>>>>>>>>>> On Sun, Jun 4, 2017 at 1:21 PM, Rafael Weingärtner < >>>>>>>>>>> [email protected]> wrote: >>>>>>>>>>> >>>>>>>>>>>> We started developing our first agents (performers) using Fey, >>>>>>>>>>>> and we found our first “problem”. There is no integration of Fey >>>>>>>>>>>> and >>>>>>>>>>>> Spring. Or at least, we did not understand how to integrate Fey >>>>>>>>>>>> with >>>>>>>>>>>> Spring. >>>>>>>>>>>> >>>>>>>>>>>> We want to instantiate our agents in Spring to enjoy all of its >>>>>>>>>>>> benefits (e.g. dependency injection, object management, easy >>>>>>>>>>>> transaction >>>>>>>>>>>> configuration and so forth). Therefore, instead of telling Fey the >>>>>>>>>>>> performer class to instantiate, we would have to tell Fey the >>>>>>>>>>>> source as the >>>>>>>>>>>> application context name and the bean name; so Fey can retrieve >>>>>>>>>>>> the agent >>>>>>>>>>>> (object) already instantiated by Spring. >>>>>>>>>>>> >>>>>>>>>>>> This would have consequences on the performer constructor; we >>>>>>>>>>>> would need to add another hook to configure an agent in Fey such >>>>>>>>>>>> as a >>>>>>>>>>>> post-constructor method that would be intended to do the same as >>>>>>>>>>>> the >>>>>>>>>>>> constructor today. I mean, we maintain everything we have so far, >>>>>>>>>>>> and we >>>>>>>>>>>> add only a default constructor with no parameters and the >>>>>>>>>>>> post-constructor >>>>>>>>>>>> method that would be hooked in Fey’s performer life-cycle. >>>>>>>>>>>> >>>>>>>>>>>> Then, we would have to possibilities, first the one we already >>>>>>>>>>>> have to instantiate an agent: >>>>>>>>>>>> >>>>>>>>>>>> "source": { >>>>>>>>>>>> >>>>>>>>>>>> "name": *"agentJarWithDependencies.jar"*, >>>>>>>>>>>> >>>>>>>>>>>> "classPath": *"org.awesomeCompany.agentOne"*, >>>>>>>>>>>> >>>>>>>>>>>> "parameters": { >>>>>>>>>>>> >>>>>>>>>>>> } >>>>>>>>>>>> >>>>>>>>>>>> And an alternative for agent objects managed by Spring: >>>>>>>>>>>> >>>>>>>>>>>> "source": { >>>>>>>>>>>> >>>>>>>>>>>> "name": *" agentJarWithDependencies.jar"*, >>>>>>>>>>>> >>>>>>>>>>>> "applicationContextName": >>>>>>>>>>>> *"agentOneApplicationContext.xml"*, >>>>>>>>>>>> >>>>>>>>>>>> "performerBeanName": >>>>>>>>>>>> *"agentOneApplicationContext.xml"* >>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>>> This would require Fey to instantiate the Spring’s application >>>>>>>>>>>> context, and then look the bean up there. The idea is that >>>>>>>>>>>> application >>>>>>>>>>>> context file can be found in the classpath. >>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>>> What do you guys think about this? We can work to create this >>>>>>>>>>>> integration after we discussed the changes that would be applied >>>>>>>>>>>> to Fey. >>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>>> -- >>>>>>>>>>>> Rafael Weingärtner >>>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> -- >>>>>>>>>> Barbara Gomes >>>>>>>>>> Computer Engineer >>>>>>>>>> San Jose, CA >>>>>>>>>> >>>>>>>>> >>>>>>>>> >>>>>>>> >>>>>>> >>>>>>> >>>>>>> -- >>>>>>> Barbara Gomes >>>>>>> Computer Engineer >>>>>>> San Jose, CA >>>>>>> >>>>>> >>>>>> >>>>> >>>> >>>> >>>> -- >>>> Rafael Weingärtner >>>> >>> >>> >>> >>> -- >>> Rafael Weingärtner >>> >>> >> >> >> -- >> Rafael Weingärtner >> > > -- Rafael Weingärtner
