What's best way to deploy ignite application? ZeroDeployment sounds very easy, but I haven't found an easy way. I built an application to try Ignite's write-behind method. I extended CacheStoreAdapter which uses PostgreSQL jdbc to insert data. It worked well from IDE, but I haven't found a great way to deploy it to server. My laptop connects to server with Ignite & PostgreSQL installed via VPN. And JDBC from my laptop go through vpn, so I'd like to test the performance of application when it runs on server.
I tried two ways: 1. The application start ignite in client mode, it worked but I found deployment involves several steps. - copy fat jar including jdbc driver into ignite/libs folder. - copy config.xml into config folder - use ignite.sh config/config.xml to start server node - use java -jar application.jar to start the client node - client program finishes successfully but server write-behind code(CacheStoreAdapter.write) errors out and complains no jdbc driver found. After I copied a separate postgresql-9.4.1212.jre6.jar to libs and restart Ignite server node, the write behind succeeded.
[00:24:20,244][SEVERE][flusher-0-#23%null%][GridCacheWriteBehindStore] Unable to update underlying store: com.xxxx.xxx.xxx.datastore.CustomStore@555cf22 ........... Caused by: java.sql.SQLException: No suitable driver found for jdbc:postgresql://xxx.xxxx.xxxx.com:5432/customdb
Is there a better way to do this? I agree that in closer-to-production situations, a cluster with multiple server nodes are probably reality. If I change the configurations in xml, will the changes be populated to other nodes? Or should I update the xml in other nodes too? Or is using java configuration objects the better way, since it'll be loaded to peers automatically?
Thank you for your time and advice!
I see that you have two things which you try to deploy: configuration (xml file) and libs. For your case I would recommend the following approach: