I have installed mongodb on one AWS EC2 instance and connecting to it from another AWS EC2 instance, both on same security group and network. Below is the program I have written to connect and insert collection to mongodb.
import com.mongodb.BasicDBObject;
import com.mongodb.BulkWriteOperation;
import com.mongodb.BulkWriteResult;
import com.mongodb.Cursor;
import com.mongodb.DB;
import com.mongodb.DBCollection;
import com.mongodb.DBCursor;
import com.mongodb.DBObject;
import com.mongodb.MongoClient;
import com.mongodb.ParallelScanOptions;
import com.mongodb.ServerAddress;
import java.lang.*;
import java.util.List;
import java.util.Set;
import java.util.logging.Logger;
import static java.util.concurrent.TimeUnit.SECONDS;
public class test
{
public static void main(String v[]) throws InterruptedException{
Logger mongoLogger = Logger.getLogger( "com.mongodb" );
mongoLogger.setLevel(Level.SEVERE);
MongoClient mongoClient = new MongoClient( "54.67.99.149" , 27017 );
DB db = mongoClient.getDB( "mydb" );
DBCollection coll = db.getCollection("projecttest");
for (int i=0; i < 100; i++) {
coll.insert(new BasicDBObject("i", i));
Thread.sleep(1000);
}
System.out.println("Total objects = "+ coll.getCount());
DBCursor cursor = coll.find();
try {
while(cursor.hasNext()) {
System.out.println(cursor.next());
}
} finally {
cursor.close();
}
}
}
When executing the class generated i get the below exceptions.
> java -cp .:mongo-java-driver-3.0.4.jar project.test Oct 07, 2015
> 11:12:23 PM com.mongodb.diagnostics.logging.JULLogger log INFO:
> Cluster created with settings {hosts=[54.67.99.149:27017],
> mode=SINGLE, requiredClusterType=UNKNOWN,
> serverSelectionTimeout='30000 ms', maxWaitQueueSize=500} Oct 07, 2015
> 11:12:24 PM com.mongodb.diagnostics.logging.JULLogger log INFO:
> Exception in monitor thread while connecting to server
> 54.67.99.149:27017 com.mongodb.MongoSocketOpenException: Exception opening socket
> at com.mongodb.connection.SocketStream.open(SocketStream.java:63)
> at com.mongodb.connection.InternalStreamConnection.open(InternalStreamConnection.java:114)
> at com.mongodb.connection.DefaultServerMonitor$ServerMonitorRunnable.run(DefaultServerMonitor.java:127)
> at java.lang.Thread.run(Thread.java:745) Caused by: java.net.ConnectException: Connection refused
> at java.net.PlainSocketImpl.socketConnect(Native Method)
> at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:339)
> at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:200)
> at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:182)
> at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392)
> at java.net.Socket.connect(Socket.java:579)
> at com.mongodb.connection.SocketStreamHelper.initialize(SocketStreamHelper.java:50)
> at com.mongodb.connection.SocketStream.open(SocketStream.java:58)
> ... 3 more
>
> Oct 07, 2015 11:12:24 PM com.mongodb.diagnostics.logging.JULLogger log
> INFO: No server chosen by PrimaryServerSelector from cluster
> description ClusterDescription{type=UNKNOWN, connectionMode=SINGLE,
> all=[ServerDescription{address=54.67.99.149:27017, type=UNKNOWN,
> state=CONNECTING, exception={com.mongodb.MongoSocketOpenException:
> Exception opening socket}, caused by {java.net.ConnectException:
> Connection refused}}]}. Waiting for 30000 ms before timing out
> Exception in thread "main" com.mongodb.MongoTimeoutException: Timed
> out after 30000 ms while waiting for a server that matches
> PrimaryServerSelector. Client view of cluster state is {type=UNKNOWN,
> servers=[{address=54.67.99.149:27017, type=UNKNOWN, state=CONNECTING,
> exception={com.mongodb.MongoSocketOpenException: Exception opening
> socket}, caused by {java.net.ConnectException: Connection refused}}]
> at com.mongodb.connection.BaseCluster.createTimeoutException(BaseCluster.java:370)
> at com.mongodb.connection.BaseCluster.selectServer(BaseCluster.java:101)
> at com.mongodb.binding.ClusterBinding$ClusterBindingConnectionSource.<init>(ClusterBinding.java:75)
> at com.mongodb.binding.ClusterBinding$ClusterBindingConnectionSource.<init>(ClusterBinding.java:71)
> at com.mongodb.binding.ClusterBinding.getWriteConnectionSource(ClusterBinding.java:68)
> at com.mongodb.operation.OperationHelper.withConnection(OperationHelper.java:175)
> at com.mongodb.operation.BaseWriteOperation.execute(BaseWriteOperation.java:106)
> at com.mongodb.operation.BaseWriteOperation.execute(BaseWriteOperation.java:58)
> at com.mongodb.Mongo.execute(Mongo.java:747)
> at com.mongodb.Mongo$2.execute(Mongo.java:730)
> at com.mongodb.DBCollection.executeWriteOperation(DBCollection.java:327)
> at com.mongodb.DBCollection.insert(DBCollection.java:323)
> at com.mongodb.DBCollection.insert(DBCollection.java:314)
> at com.mongodb.DBCollection.insert(DBCollection.java:284)
> at com.mongodb.DBCollection.insert(DBCollection.java:250)
> at com.mongodb.DBCollection.insert(DBCollection.java:187)
> at project.test.main(test.java:45)
Can anyone please help me know what the problem is. I did try iptables --flush on EC2 instances to stop the firewalls. The EC2 instance security group has inbound port set to 27017 and allows SSH connections.
Aucun commentaire:
Enregistrer un commentaire