I see in stack trace "Caused by: class org.apache.ignite.IgniteException: Spring application context resource is not injected."
Also CacheJdbcPojoStoreFactory contains such declaration: @SpringApplicationContextResource private transient Object appCtx; Anybody know why appCtx may not be injected? Also Satya, it is possible for you to prepare small reproducible example that we could debug? On Mon, Apr 25, 2016 at 9:39 PM, Vladimir Ozerov <[email protected]> wrote: > Alexey Kuznetsov, > > Provided you have more expertise with POJO store, could you please advise > what could cause this exception? Seems that POJO store expects some > injection, which doesn't happen. > Are there any specific requirements here? C++ node starts as a regular > node and also use Spring. > > Vladimir. > > On Mon, Apr 25, 2016 at 5:32 PM, Murthy Kakarlamudi <[email protected]> > wrote: > >> Any help on this issue please... >> >> On Sat, Apr 16, 2016 at 7:29 PM, Murthy Kakarlamudi <[email protected]> >> wrote: >> >>> Hi, >>> In my use case, I am starting a node from .net which loads data from >>> SQL Server table into cache upon start up. I have to read those entries >>> from cache from a c++ node that acts as a client. I am getting the below >>> error trying to start the node from c++. >>> >>> [19:08:57] Security status [authentication=off, tls/ssl=off] >>> [19:08:58,163][SEVERE][main][IgniteKernal] Failed to start manager: >>> GridManagerAdapter [enabled=true, >>> name=o.a.i.i.managers.discovery.GridDiscoveryManager] >>> class org.apache.ignite.IgniteCheckedException: Remote node has peer >>> class loading enabled flag different from local [locId8=f02445af, >>> locPeerClassLoading=true, rmtId8=8e52f9c9, rmtPeerClassLoading=false, >>> rmtAddrs=[LAPTOP-QIT4AVOG/0:0:0:0:0:0:0:1, LAPTOP-QIT4AVOG/127.0.0.1, >>> LAPTOP-QIT4AVOG/192.168.0.5, >>> LAPTOP-QIT4AVOG/2001:0:9d38:90d7:145b:5bf:bb9b:11d9, >>> LAPTOP-QIT4AVOG/2600:8806:0:8d00:0:0:0:1, >>> /2600:8806:0:8d00:3ccf:1e94:1ab4:83a9, >>> /2600:8806:0:8d00:f114:bf30:2068:352d]] >>> at >>> org.apache.ignite.internal.managers.discovery.GridDiscoveryManager.checkAttributes(GridDiscoveryManager.java:1027) >>> at >>> org.apache.ignite.internal.managers.discovery.GridDiscoveryManager.start(GridDiscoveryManager.java:680) >>> at >>> org.apache.ignite.internal.IgniteKernal.startManager(IgniteKernal.java:1505) >>> at >>> org.apache.ignite.internal.IgniteKernal.start(IgniteKernal.java:917) >>> at >>> org.apache.ignite.internal.IgnitionEx$IgniteNamedInstance.start0(IgnitionEx.java:1688) >>> at >>> org.apache.ignite.internal.IgnitionEx$IgniteNamedInstance.start(IgnitionEx.java:1547) >>> at >>> org.apache.ignite.internal.IgnitionEx.start0(IgnitionEx.java:1003) >>> at >>> org.apache.ignite.internal.IgnitionEx.start(IgnitionEx.java:534) >>> at >>> org.apache.ignite.internal.IgnitionEx.start(IgnitionEx.java:515) >>> at org.apache.ignite.Ignition.start(Ignition.java:322) >>> at >>> org.apache.ignite.internal.processors.platform.PlatformAbstractBootstrap.start(PlatformAbstractBootstrap.java >>> >>> Below if my config for .net node: >>> <?xml version="1.0" encoding="UTF-8"?> >>> >>> <beans xmlns="http://www.springframework.org/schema/beans" >>> xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" >>> xsi:schemaLocation=" >>> http://www.springframework.org/schema/beans >>> http://www.springframework.org/schema/beans/spring-beans.xsd"> >>> <bean id="ignite.cfg" >>> class="org.apache.ignite.configuration.IgniteConfiguration"> >>> <property name="connectorConfiguration"> >>> <bean >>> class="org.apache.ignite.configuration.ConnectorConfiguration"> >>> <property name="idleTimeout" value="20000"/> >>> </bean> >>> </property> >>> >>> <property name="cacheConfiguration"> >>> <list> >>> <bean class="org.apache.ignite.configuration.CacheConfiguration"> >>> <property name="name" value="BU"/> >>> <property name="writeThrough" value="true"/> >>> <property name="readThrough" value="true"/> >>> <property name="writeBehindEnabled" value="true"/> >>> <property name="writeBehindFlushFrequency" value="120000"/> >>> <property name="cacheStoreFactory"> >>> <bean >>> class="org.apache.ignite.platform.dotnet.PlatformDotNetCacheStoreFactory"> >>> <property name="typeName" >>> value="TestIgniteDAL.SQLServerStore, TestIgniteDAL"/> >>> </bean> >>> </property> >>> <property name ="typeMetadata"> >>> <list> >>> <bean class="org.apache.ignite.cache.CacheTypeMetadata"> >>> <!-- Type to query. --> >>> <property name="valueType" value="BusinessUnit"/> >>> <!-- Fields to be queried. --> >>> <property name="queryFields"> >>> <map> >>> <entry key="BUID" value="java.lang.Integer"/> >>> <entry key="BUName" value="java.lang.String"/> >>> <entry key="CreatedByID" value="java.lang.Integer"/> >>> <entry key="CreatedDate" value="java.util.Date"/> >>> <entry key="ModifiedByID" value="java.lang.Integer"/> >>> <entry key="ModifiedDate" value="java.util.Date"/> >>> </map> >>> </property> >>> <!-- Fields to index in ascending order. --> >>> <property name="ascendingFields"> >>> <map> >>> <entry key="BUID" value="java.lang.Integer"/> >>> </map> >>> </property> >>> </bean> >>> </list> >>> </property> >>> </bean> >>> </list> >>> </property> >>> >>> <property name="communicationSpi"> >>> <bean >>> class="org.apache.ignite.spi.communication.tcp.TcpCommunicationSpi"> >>> <property name="sharedMemoryPort" value="-1"/> >>> </bean> >>> </property> >>> >>> <property name="discoverySpi"> >>> <bean class="org.apache.ignite.spi.discovery.tcp.TcpDiscoverySpi"> >>> <property name="ipFinder"> >>> <bean >>> class="org.apache.ignite.spi.discovery.tcp.ipfinder.vm.TcpDiscoveryVmIpFinder"> >>> <property name="addresses"> >>> <list> >>> <value>127.0.0.1:47500..47509</value> >>> </list> >>> </property> >>> </bean> >>> </property> >>> </bean> >>> </property> >>> </bean> >>> </beans> >>> >>> >>> Below is my config for node from c++: >>> <?xml version="1.0" encoding="UTF-8"?> >>> >>> <!-- >>> Licensed to the Apache Software Foundation (ASF) under one or more >>> contributor license agreements. See the NOTICE file distributed with >>> this work for additional information regarding copyright ownership. >>> The ASF licenses this file to You under the Apache License, Version 2.0 >>> (the "License"); you may not use this file except in compliance with >>> the License. You may obtain a copy of the License at >>> >>> http://www.apache.org/licenses/LICENSE-2.0 >>> >>> Unless required by applicable law or agreed to in writing, software >>> distributed under the License is distributed on an "AS IS" BASIS, >>> WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or >>> implied. >>> See the License for the specific language governing permissions and >>> limitations under the License. >>> --> >>> >>> <beans xmlns="http://www.springframework.org/schema/beans" >>> xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" >>> xmlns:util="http://www.springframework.org/schema/util" >>> xsi:schemaLocation=" >>> http://www.springframework.org/schema/beans >>> http://www.springframework.org/schema/beans/spring-beans.xsd >>> http://www.springframework.org/schema/util >>> http://www.springframework.org/schema/util/spring-util.xsd"> >>> <bean id="grid.cfg" >>> class="org.apache.ignite.configuration.IgniteConfiguration"> >>> <!-- Set to true to enable distributed class loading for >>> examples, default is false. --> >>> <property name="peerClassLoadingEnabled" value="true"/> >>> >>> <property name="cacheConfiguration"> >>> <list> >>> <!-- >>> Partitioned cache example configuration with binary >>> objects enabled. >>> Used in .NET example that is available only in >>> enterprise edition. >>> --> >>> <bean >>> class="org.apache.ignite.configuration.CacheConfiguration"> >>> <property name="atomicityMode" value="ATOMIC"/> >>> <property name="backups" value="1"/> >>> </bean> >>> >>> <!-- >>> Partitioned cache example configuration. >>> Used in .NET cache store example that is available >>> only in enterprise edition. >>> --> >>> <bean >>> class="org.apache.ignite.configuration.CacheConfiguration"> >>> <property name="name" value="tx"/> >>> <property name="atomicityMode" >>> value="TRANSACTIONAL"/> >>> <property name="backups" value="1"/> >>> </bean> >>> </list> >>> </property> >>> >>> <!-- Explicitly configure TCP discovery SPI to provide list of >>> initial nodes. --> >>> <property name="discoverySpi"> >>> <bean >>> class="org.apache.ignite.spi.discovery.tcp.TcpDiscoverySpi"> >>> <property name="ipFinder"> >>> <!-- >>> Ignite provides several options for automatic >>> discovery that can be used >>> instead os static IP based discovery. >>> --> >>> <!-- Uncomment static IP finder to enable >>> static-based discovery of initial nodes. --> >>> <bean >>> class="org.apache.ignite.spi.discovery.tcp.ipfinder.vm.TcpDiscoveryVmIpFinder"> >>> <!-- <bean >>> class="org.apache.ignite.spi.discovery.tcp.ipfinder.multicast.TcpDiscoveryMulticastIpFinder"> >>> --> >>> <property name="addresses"> >>> <list> >>> <!-- In distributed environment, replace >>> with actual host IP address. --> >>> <value>127.0.0.1:47500..47501</value> >>> </list> >>> </property> >>> </bean> >>> </property> >>> </bean> >>> </property> >>> </bean> >>> </beans> >>> >>> Below c++ code is trying to access the cache: >>> int main() >>> { >>> IgniteConfiguration cfg; >>> >>> cfg.jvmInitMem = 512; >>> cfg.jvmMaxMem = 512; >>> >>> //cfg.springCfgPath = "platforms/cpp/examples/config/example-cache.xml"; >>> cfg.springCfgPath = "config/example-cache.xml"; >>> try >>> { >>> // Start a node. >>> Ignite grid = Ignition::Start(cfg); >>> std::cout << std::endl; >>> std::cout << ">>> Cache node started." << std::endl; >>> std::cout << std::endl; >>> >>> //string key >>> Cache<std::string, CBusinessObject> cache = grid.GetCache<std::string, >>> CBusinessObject>("BU"); >>> cache.Clear(); >>> CBusinessObject obj("MSFT", 45.23); >>> //save in cache >>> cache.Put("MSFT", obj); >>> >>> //retreive from cache >>> CBusinessObject result = cache.Get("MSFT"); >>> >>> std::cout << result.ToString(); >>> >>> // Stop node. >>> Ignition::StopAll(false); >>> } >>> catch (IgniteError& err) >>> { >>> std::cout << "An error occurred: " << err.GetText() << std::endl; >>> } >>> >>> std::cout << std::endl; >>> std::cout << ">>> Execution finished, press any key to exit ..." << >>> std::endl; >>> std::cout << std::endl; >>> >>> std::cin.get(); >>> >>> return 0; >>> } >>> >>> Thanks for any help. >>> >> >> > -- Alexey Kuznetsov GridGain Systems www.gridgain.com
