You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@ignite.apache.org by "Denis Koblov (JIRA)" <ji...@apache.org> on 2017/10/10 09:21:00 UTC

[jira] [Updated] (IGNITE-6586) Spring bean as ignite service

     [ https://issues.apache.org/jira/browse/IGNITE-6586?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Denis Koblov updated IGNITE-6586:
---------------------------------
    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:

{code:java}
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) {

    }
}
{code}


{code:java}
<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>
{code}

After start the application i see following text on the output  console:
*ApplicationContext is null*

I see 4 instances on the Memory viewer:


  was:
Hello.
I use a spring-ignite in my application. When using ServiceGrid I noticed a feature.
I created the following class for the ServiceGrid:

{code:java}
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) {

    }
}
{code}


{code:java}
<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>
{code}

After start the application i see following text on the output  console:


> Spring bean as ignite service
> -----------------------------
>
>                 Key: IGNITE-6586
>                 URL: https://issues.apache.org/jira/browse/IGNITE-6586
>             Project: Ignite
>          Issue Type: Wish
>            Reporter: Denis Koblov
>
> Hello.
> I use a spring-ignite in my application. When using ServiceGrid I noticed a feature.
> I created the following class for the ServiceGrid:
> {code:java}
> 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) {
>     }
> }
> {code}
> {code:java}
> <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>
> {code}
> After start the application i see following text on the output  console:
> *ApplicationContext is null*
> I see 4 instances on the Memory viewer:



--
This message was sent by Atlassian JIRA
(v6.4.14#64029)