Details
-
Wish
-
Status: Open
-
Major
-
Resolution: Unresolved
-
2.2
-
None
-
None
Description
Hello.
I use a spring-ignite in my application. When using ServiceGrid I noticed a feature.
I created the following class for the ServiceGrid:
public class SimpleService implements Service, ApplicationContextAware { private ApplicationContext applicationContext; @Override public void setApplicationContext(ApplicationContext applicationContext) throws BeansException { this.applicationContext = applicationContext; } @Override public void init(ServiceContext serviceContext) throws Exception { if (applicationContext == null) { System.out.println("ApplicationContext is null"); } } @Override public void execute(ServiceContext serviceContext) throws Exception { } @Override public void cancel(ServiceContext serviceContext) { } }
<bean id="igniteSpringBean" class="org.apache.ignite.IgniteSpringBean"> <property name="configuration"> <bean class="org.apache.ignite.configuration.IgniteConfiguration"> <!-- Enabling the peer-class loading feature. --> <property name="peerClassLoadingEnabled" value="false"/> <property name="gridLogger"> <bean class="org.apache.ignite.logger.slf4j.Slf4jLogger"/> </property> <property name="userAttributes"> <map key-type="java.lang.String" value-type="java.lang.Object"> <entry key="simpleservice" value="true" value-type="java.lang.Boolean"/> </map> </property> <property name="serviceConfiguration"> <list> <bean class="org.apache.ignite.services.ServiceConfiguration"> <!-- Unique service name --> <property name="name" value="SimpleService"/> <!-- Service implementation's class --> <property name="service" > <bean class="com.myapp.SimpleService"/> </property> <property name="nodeFilter"> <bean class="com.myapp.ServiceNodeFilter"> <constructor-arg name="serviceName" value="simpleservice"/> </bean> </property> </bean> </list> </property> <property name="discoverySpi"> <bean class="org.apache.ignite.spi.discovery.tcp.TcpDiscoverySpi"> <property name="joinTimeout" value="60000"/> <property name="ipFinder"> <bean class="org.apache.ignite.spi.discovery.tcp.ipfinder.vm.TcpDiscoveryVmIpFinder"> <property name="addresses" value="#{'${ignite.addresses.discovery}'.split(',')}"/> </bean> </property> </bean> </property> <!-- see https://issues.apache.org/jira/browse/IGNITE-4377 --> <property name="binaryConfiguration"> <bean class="org.apache.ignite.configuration.BinaryConfiguration"> <property name="compactFooter" value="false"/> </bean> </property> </bean> </property>
After start the application i see following text on the output console:
ApplicationContext is null
I see 4 instances on the Memory viewer:
This is because the ignite serialize spring bean, than deserialize it and used new instance as an instance of the service. Why? Why instance of the service not equals instance in the spring application contex? And is it possible to change this case?
Thanks.