簡體   English   中英

播放框架 2.8.8 (JAVA) 嘗試與 mongoDB 連接

[英]Play framework 2.8.8 (JAVA) trying to connect with mongoDB

我是 Play 框架的新手,我已經用它特別是 2.8.8 版開始了一個項目。 我在我的項目中使用 mongoDB,在游戲中使用 eclipse。 現在我正在嘗試將我的數據庫與游戲連接起來。 我讀了很多關於 Ebean 的內容,即播放 ORM 用於數據庫連接,我已經嘗試過了,但我仍然沒有解決我的問題。 我的目標是連接到我的數據庫提出了將在集合中注冊信息的請求(mongo)
有人可以告訴我該怎么做嗎? 我需要一些有用的提示配置或示例 model 來查看,以便我可以繼續我的項目。

您需要在 build.sbt 中包含這些依賴項,以便與 mongo 進行交互。 (您可以使用您的相關版本。以下給出的版本正在與 play 2.7 一起使用)

“org.jongo”%“jongo”%“1.3.1”、“org.mongodb”%“mongo-java-driver”%“3.10.2”

Mongo 存儲庫(連接器/Dao)class 示例:-

import handlers.MongoConnectionHandler;
import com.mongodb.BasicDBObject;
import com.mongodb.WriteResult;
import models.mongo.Message;
import org.jongo.MongoCollection;
import org.jongo.MongoCursor;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import skeletons.requests.ChatHistoryRequest;

import javax.inject.Inject;
import javax.inject.Singleton;
import java.util.ArrayList;
import java.util.List;


@Singleton
public class MessageMongoRepository {

    private final MongoCollection messageCollection;
    
    @Inject
    public MessageMongoRepository(MongoConnectionHandler mongoConnectionHandler) {
        messageCollection = mongoConnectionHandler.getCollection("messages");
    }

    public List<Message> fetchRecords() {
        BasicDBObject query = new BasicDBObject();
        query.put("f1", "val 1");
        query.put("f2", "val2");
        query.put("f3","val 3" );
        BasicDBObject sort = new BasicDBObject();
        MongoCursor<Message> messages = null;
        List<Message> messageList = new ArrayList<>();
        try {
            messages = messageCollection.find(query.toString()).sort(sort.toString()).limit(request.getSize()).as(Message.class);
        } catch (Exception e) {
            logger.error("Error in fetching messages");
            throw e;
        }
        if (messages != null) {
            while (messages.hasNext()) {
                messageList.add(messages.next());
            }
        } else {
            logger.error("No messages");
        }

        return messageList;
    }

    public String saveRecord(Message rec) {
        WriteResult result;
        try {
            result = messageCollection.save(rec);
        } catch (Exception e) {
            throw e;
        }
        return result.getUpsertedId().toString();
    }
}

該消息是用戶定義的 Java Class

MongoConnectionHandler 示例

import com.mongodb.*;
import com.typesafe.config.Config;
import org.jongo.Jongo;
import org.jongo.MongoCollection;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import javax.inject.Inject;
import java.util.ArrayList;
import java.util.List;

public class MongoConnectionHandler {

    private final Config config;

    private final DB db;
    private final Jongo jongo;
    private final MongoClient mongoClient;
    private static final MongoClientOptions mongoClientOptions = new MongoClientOptions.Builder()
            .connectTimeout(1000)
            .maxConnectionIdleTime(1000)
            .socketTimeout(1000)
            .maxWaitTime(1000)
            .build();

    private final Logger logger = LoggerFactory.getLogger(this.getClass());

    @Inject
    public MongoConnectionHandler(Config config) {
        this.config = config;
        String user = this.config.getString("mongo.auth.user");
        String pass = this.config.getString("mongo.auth.pass");
        String authDb = this.config.getString("mongo.auth.db");
        MongoCredential mongoCredential = MongoCredential.createCredential(user, authDb, pass.toCharArray());
        List<ServerAddress> serverAddressList = new ArrayList<>();
        String[] hostList = this.config.getString("mongo.host").split(",");
        for (String host : hostList) {
            String[] ipPortPair = host.split(":");
            ServerAddress serverAddress = new ServerAddress(ipPortPair[0], Integer.valueOf(ipPortPair[1]));
            serverAddressList.add(serverAddress);
        }
        mongoClient = new MongoClient(serverAddressList, mongoCredential, mongoClientOptions);
        db = mongoClient.getDB(this.config.getString("mongo.db"));
        jongo = new Jongo(db);
    }

    public MongoCollection getCollection(String name) {
        MongoCollection collection = null;
        try {
            collection = jongo.getCollection(name);
        } catch (Exception e) {
            logger.error("Error while getting collection : {}", name);
            throw e;
        }
        return collection;
    }
}

繼承人如何獲得 mongodb 和游戲框架以合作理解游戲中的模塊將是必要的檢查此模塊按照步驟操作,您將獲得 mongodb 與游戲一起工作Z5E056C500A1C4B6A7110B50D807BADE.com

(如果這個答案有幫助,請標記正確,我最近被困在這里)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM