当前位置: 首页 > 知识库问答 >
问题:

无法使用persistence.xml和hibernate ogm 4.1.1从本地机器连接到MongoDB到Openshift

江正德
2023-03-14

我正在努力将本地机器上运行的jboss连接到Openshift中的MongoDB数据库。

它使用本地数据库(本地主机:27017)工作正常。

My persistence.xml:

<?xml version="1.0" encoding="utf-8"?>
<persistence xmlns="http://java.sun.com/xml/ns/persistence"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://java.sun.com/xml/ns/persistence 
        http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd"
    version="1.0">

    <persistence-unit name="mongodb-PU" transaction-type="RESOURCE_LOCAL">
        <provider>org.hibernate.ogm.jpa.HibernateOgmPersistence</provider>

        <class>com.commons.db.model.User</class

        <properties>
            <property name="hibernate.ogm.datastore.provider" value="mongodb" />
            <property name="hibernate.ogm.datastore.database" value="test" />
            <property name="hibernate.ogm.datastore.create_database" value="true" />
            <property name="hibernate.transaction.jta.platform"
                      value="org.hibernate.service.jta.platform.internal.JBossAppServerJtaPlatform"/>

            <!-- Running on local machine with local dataabse details -->
            <!-- 
            <property name="hibernate.ogm.mongodb.host" value="localhost" />
            <property name="hibernate.ogm.mongodb.port" value="27017" />
            -->

            <!-- Running on openshift locally with port forwarding -->
            <!-- -->
            <property name="hibernate.ogm.mongodb.host" value="127.0.0.1" />
            <property name="hibernate.ogm.mongodb.port" value="44506" />
            <property name="hibernate.ogm.mongodb.username" value="admin" />
            <property name="hibernate.ogm.mongodb.password" value="password" />
            <!-- -->
        </properties>
    </persistence-unit>
</persistence>

我运行了rch端口转发命令。

rhc port-forward -a test-app

它返回了正确的端口转发:

haproxy 127.0.0.1:8081   =>  127.4.173.2:8080
haproxy 127.0.0.1:8082   =>  127.4.173.3:8080
java    127.0.0.1:3528   =>  127.4.173.1:3528
java    127.0.0.1:4448   =>  127.4.173.1:4447
java    127.0.0.1:5445   =>  127.4.173.1:5445
java    127.0.0.1:5455   =>  127.4.173.1:5455
java    127.0.0.1:8083   =>  127.4.173.1:8080
java    127.0.0.1:9991   =>  127.4.173.1:9990
java    127.0.0.1:10000  =>  127.4.173.1:9999
mongodb 127.0.0.1:44506  =>  54c685bf5973cac227000040-*****.rhcloud.com:44506
mysql   127.0.0.1:54231  =>  54c687b95973ca28650000a9-*****.rhcloud.com:54231

我可以使用

mongo --host 127.0.0.1 --port 44506

但当我尝试用持久性启动jboss服务器时。xml,我在上面向您展示过。它总是尝试连接到localhost:27017。返回此错误:

Caused by: org.hibernate.HibernateException: OGM001214: Unable to connect to MongoDB instance localhost:27017
    at org.hibernate.ogm.datastore.mongodb.impl.MongoDBDatastoreProvider.extractDatabase(MongoDBDatastoreProvider.java:167)
    at org.hibernate.ogm.datastore.mongodb.impl.MongoDBDatastoreProvider.start(MongoDBDatastoreProvider.java:110)
    ... 37 more
Caused by: com.mongodb.MongoTimeoutException: Timed out after 5000 ms while waiting to connect. Client view of cluster state is {type=Unknown, servers
=[{address=localhost:27017, type=Unknown, state=Connecting, exception={com.mongodb.MongoException$Network: Exception opening the socket}, caused by {j
ava.net.ConnectException: Connection refused}}]
    at com.mongodb.BaseCluster.getDescription(BaseCluster.java:128)
    at com.mongodb.DBTCPConnector.getClusterDescription(DBTCPConnector.java:396)
    at com.mongodb.DBTCPConnector.getType(DBTCPConnector.java:569)
    at com.mongodb.DBTCPConnector.getReplicaSetStatus(DBTCPConnector.java:364)
    at com.mongodb.Mongo.getReplicaSetStatus(Mongo.java:465)
    at com.mongodb.DB.getCommandReadPreference(DB.java:86)
    at com.mongodb.DB.command(DB.java:314)
    at com.mongodb.DB.command(DB.java:296)
    at com.mongodb.DB.command(DB.java:371)
    at com.mongodb.Mongo.getDatabaseNames(Mongo.java:396)
    at org.hibernate.ogm.datastore.mongodb.impl.MongoDBDatastoreProvider.extractDatabase(MongoDBDatastoreProvider.java:152)
    ... 38 more

在尝试使用persistence.xml从本地服务器连接到Openshift托管数据库时,是否有人遇到过类似的问题?

谢谢你

共有1个答案

东方镜
2023-03-14

您使用的是哪个版本的OGM?

在最新版本中,用于指定主机和端口的属性包括:

hibernate.ogm.datastore.host
hibernate.ogm.datastore.port
 类似资料:
  • 我正在尝试使用rds部署带有MySQL引擎的rds实例。数据库子网组位于公用子网中。 我已执行以下检查:-允许安全组在端口3306上进行公共访问-在端口3306上的endpointURL上成功执行Telnet命令 配置如下: 日志记录详细信息: 正在尝试使用console连接到rds

  • null 我确信我已经在127.0.0.1:27017启动了数据库服务,并且可以用shell和非异步方法连接。错误: PrimaryServerSelector没有从群集描述中选择服务器ClusterDescription{type=unknown,connectionmode=single,all=[ServerDescription{address=localhost:27017,type=u

  • 这是我的实体 这是我的主课 这就是我的persistence.xml 堆栈跟踪:

  • 试图连接一个简单的JMX监控。托管应用程序和监控工具位于同一台服务器上。当试图连接一个错误 00:30:55610致命http-8080-6 SiteListener:makeJmxConnection:99-java.io。IOException:检索RMIServer存根失败:javax.naming。ServiceUnavailableException[根异常为java.rmi.Conne

  • 我试图连接到mysql数据库从docker图像。然而,这是投掷错误。 下面是我正在使用的docker图像。https://hub.docker.com/_/mysql/ 下面是我用来运行docker映像的命令。 以下是命令的输出 如果我使用docker检查IP并ping该IP,则显示IP不可访问。 如果我尝试使用和我遇到以下错误。 无法加载身份验证插件“缓存\u sha2\u密码”。

  • 我在MongoDB中配置了一个三节点副本集;复制是同步的。 我可以单独连接到每台服务器,并使用每台服务器的专用IP地址连接到副本集,如下所示: mongo—主机rs0/10。十、 X.X:27017,10。十、 X.X:27017,10。十、 X.X:27017-u根-p abc123-authenticationDatabase管理员 但是当我尝试使用服务器的公共IP地址连接到副本集时,如下所示