2017-12-07 3 views
1

Ich habe ein starkes Skript zu schließen, die Daten von mongodb (SoapUI)Wie mongodb groovy Verbindung (soapUI)

holt
@Grab(group='com.gmongo', module='gmongo', version='1.5') 

import com.gmongo.GMongo 
import com.mongodb.MongoCredential 
import com.mongodb.* 
import com.mongodb.ServerAddress 
import com.gmongo.* 
import com.mongodb.MongoURI 
import com.mongodb.DBCursor; 
import com.mongodb.BasicDBObject; 
import com.mongodb.BasicDBList 
import org.bson.types.ObjectId 

//define variables from mongo document 
def mongo_name 
def mongo_description 
def mongo_type 


//define mongo_variables and initiate mongo connection 
def mongoendpoint = context.expand('${#Project#mongoendpoint}') 
def mongocollection=context.expand('${#Project#mongocollection_products}') 
def mongo= new GMongo (new MongoURI(mongoendpoint)) 
def db = mongo.getDB(mongocollection) 
def collection = db.getCollection("ProductItems") 

//define elements from API response 
def api_productId = context.expand('${#Project#package_parent}') 

//get document from mongo 
DBCursor cursor=collection.find(_id : api_productId) 
//log.info cursor 

if (cursor.hasNext()) 
{ DBObject obj = cursor.next() 
//mongo_name=obj.name.toString() 
} 

//close cursor 
cursor.close() 

Mein Problem ist, dass die Verbindung geöffnet bleibt, bis ich ReadyAPI heruntergefahren, die offen zu viele führt (und nicht geschlossen) Verbindungen.

Soll die Verbindung trotzdem explizit geschlossen werden? (gegoogelt, aber konnte keine Lösung finden, die funktionieren würde)

+0

Lösung ist mongo.close() versuchen {mongo.getDatabaseNames() } catch (Exception e) { log.info "Verbindung bereits geschlossen" } – penazik

Antwort

1

Sie müssen Mongo-Client verwenden, damit Sie die Verbindung schließen können. benutze mongo client anstelle von GMongo. So können Sie so etwas wie dies versuchen:

@Grab(group='com.gmongo', module='gmongo', version='1.5') 

import com.gmongo.GMongo 
import com.mongodb.MongoCredential 
import com.mongodb.* 
import com.mongodb.ServerAddress 
import com.gmongo.* 
import com.mongodb.MongoURI 
import com.mongodb.DBCursor; 
import com.mongodb.BasicDBObject; 
import com.mongodb.BasicDBList 
import org.bson.types.ObjectId 

//define variables from mongo document 
def mongo_name 
def mongo_description 
def mongo_type 


//define mongo_variables and initiate mongo connection 
def mongoendpoint = context.expand('${#Project#mongoendpoint}') 
def mongocollection=context.expand('${#Project#mongocollection_products}') 
mongoClient = new MongoClient(mongoendpoint) 
def db = mongo.getDB(mongocollection) 
def collection = db.getCollection("ProductItems") 

//define elements from API response 
def api_productId = context.expand('${#Project#package_parent}') 

//get document from mongo 
DBCursor cursor=collection.find(_id : api_productId) 
//log.info cursor 

if (cursor.hasNext()) 
{ DBObject obj = cursor.next() 
//mongo_name=obj.name.toString() 
} 

//close cursor 
cursor.close() 

//close connection 
mongoClient.close() 
Verwandte Themen