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

Reply via email to