ignite-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From 姜 为 <ydswcy...@gmail.com>
Subject Re: ignite cache process entry should inject source?
Date Tue, 26 Jan 2016 13:50:27 GMT
Hi Denis,

	Yes , I can change the way to do this. 

	But my business follows MVC paradigm it will be very bloated.

	Hope can provide an option to do this.   

	What do you think so?

Wei Jiang


> 在 2016年1月26日,下午8:10,Denis Magda <dmagda@gridgain.com> 写道:
> 
> Hi Wei Jiang,
> 
> I've taken look at your code sample and in my understanding you just shouldn't design
an app in a way when a business model object (Entity) incorporates and performs a business
logic (Entity.doSomething()).
> Ignite follows MVC paradigm thus there is no sense to inject services into business model
objects.
> 
> I would use Entity only for storing actual data and if I it's needed to perform an operation
on an Entity or in general using a service (ExampleService) would follow one of the below:
> - get a reference to an instance of ExampleService 'context.getBean(...)' and use it
if I need to do some operation locally;
> - inject a reference into an Ignite Compute closure if I need to run the computation
across the cluster
> 
> ignite.compute().broadcast(new ComputeJob());
> 
> .....
> 
> private static class ComputeJobimplements IgniteRunnable {
>    @SpringResource(resourceName ="exampleService")
>    private transient ExampleServiceservice;
> 
>    @Override public void run() {
>        System.out.println("Executing service from compute");
>        service.doSomething();
>    }
> }
> 
> 
> Hope this helps you.
> Denis
> 
> On 1/25/2016 4:45 PM, 姜 为 wrote:
>> Hi Denis,
>> 
>> 	I create example project https://github.com/wmz7year/ignite-example <https://github.com/wmz7year/ignite-example>.
>> 
>> 	Please see README file to run example.
>> 
>> Wei Jiang
>> 
>> 
>>> 在 2016年1月23日,上午2:40,Denis Magda <dmagda@gridgain.com> 写道:
>>> 
>>> Hi Wei Jiang,
>>> 
>>> I would better review your current approach to have better understanding on what
you're trying to implement.
>>> 
>>> Please share the code. If it's the same as being discussed in "about AOP development"
thread that let me know, I'll take a look there.
>>> 
>>> --
>>> Denis
>>> 
>>> On 1/22/2016 10:28 AM, 姜 为 wrote:
>>>> Hi Denis,
>>>> 
>>>> 	How about provide an option for this?
>>>> 
>>>> 	Ignite cache user can chose enable or disable inject resources.
>>>> 
>>>> Wei Jiang
>>>> 
>>>>> 在 2016年1月22日,下午3:22,Denis Magda <dmagda@gridgain.com>
写道:
>>>>> 
>>>>> Hi Wei Jiang,
>>>>> 
>>>>> You can inject @SpringResource and @SpringApplicationContextResource
into Ignite Service or Ignite Compute. This feature is not supported for individual cache
entries, at least because of performance reasons.
>>>>> @Autowired is unsupported for both Ignite services and computes.
>>>>> 
>>>>> So if you need to process the entries inside of Ignite Compute or Ignite
Service then just inject a resource there using one of the annotations above.
>>>>> 
>>>>> The main point here is that all the nodes have to be started as a part
of spring app context or have to have a reference to it.
>>>>> Please refer to org.apache.ignite.IgniteSpring for more info.
>>>>> 
>>>>> Regards,
>>>>> Denis
>>>>> 
>>>>> On 1/22/2016 10:07 AM, 姜 为 wrote:
>>>>>> Hi Denis,
>>>>>> 	
>>>>>> 	I try to use Ignite cache to store the service object.
>>>>>> 	The object use Externalizable interface and has a @Autowired field.
>>>>>> 	
>>>>>> 	When different node use this object, the @Autowired field will be
null,even @SpringResources on the field.
>>>>>> 
>>>>>>  	The field like JPA interface , it can’t be serialization.
>>>>>> 
>>>>>> Wei Jiang
>>>>>> 
>>>>>> 
>>>>>>> 在 2016年1月22日,下午2:58,Denis Magda <dmagda@gridgain.com>
写道:
>>>>>>> 
>>>>>>> Hi,
>>>>>>> 
>>>>>>> Spring resource injection is considered to be used only for Ignite
Compute Jobs.
>>>>>>> 
>>>>>>> It's quite expensive operation to inject a resource for a CacheEntry
cause this logic will be called for every entry stored in a cache.
>>>>>>> 
>>>>>>> Why do you need to inject the resource into a CacheEntry? What
do you try to achieve?
>>>>>>> 
>>>>>>> Regards,
>>>>>>> Denis
>>>>>>> 
>>>>>>> On 1/22/2016 6:26 AM, 姜 为 wrote:
>>>>>>>> Hi Igniters,
>>>>>>>> 	
>>>>>>>> 	I’m using Ignite cache store objects.  The object use
Externalizable interface
>>>>>>>>         to serialization  and deserialization.
>>>>>>>> 	When object has field use @SpringSource will not inject.
>>>>>>>> 
>>>>>>>>   	Should add resource inject to Ignite cache?
>>>>>>>> 
>>>>>>>> 	example :
>>>>>>>> 
>>>>>>>>  	class Entey implements Externalizable {
>>>>>>>>           @SpringSource(“springSource")
>>>>>>>>            private Service service;
>>>>>>>>               public void read… and write...
>>>>>>>>        }
>> 
> 


Mime
View raw message