【问题标题】:Connect from uMongo to EC2从 uMongo 连接到 EC2
【发布时间】:2017-03-20 20:26:14
【问题描述】:

我正在尝试使用 uMongo 远程连接到 Amazon EC2 服务器上的 MongoDB。

我在我的亚马逊服务器上打开了一个端口:

  • 类型:自定义 TCP 规则
  • 协议:TCP
  • 端口范围:27017
  • 来源:0.0.0.0/0。

我在 uMongo 中添加了一个连接,设置如下:

  • 名称:项目名称
  • 服务器:https://12.34.56.789:27017
  • 连接模式:自动
  • 插座类型:普通
  • 连接超时:2,000
  • 套接字超时:0
  • 安全写入:[已检查]
  • 代理类型:无
  • 代理主机:本地主机
  • 代理端口:9000

所有其他字段为空。基本上,我只更改了“服务器”字段,而其他所有字段都保持不变。

然后,当我尝试通过此连接进行连接时,出现以下异常:

java.lang.NumberFormatException:对于输入字符串:“//12.34.56.789” 在 java.lang.NumberFormatException.forInputString(NumberFormatException.java:65) 在 java.lang.Integer.parseInt(Integer.java:569) 在 java.lang.Integer.valueOf(Integer.java:766) 在 com.edgytech.umongo.MainMenu.connect(MainMenu.java:177) 在 com.edgytech.umongo.MainMenu.connect(MainMenu.java:118) 在 sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 在 sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) 在 sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 在 java.lang.reflect.Method.invoke(Method.java:498) 在 com.edgytech.swingfast.ButtonBase.actionPerformed(ButtonBase.java:297) 在 javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2022) 在 javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2348) 在 javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:402) 在 javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:259) 在 javax.swing.AbstractButton.doClick(AbstractButton.java:376) 在 javax.swing.plaf.basic.BasicMenuItemUI.doClick(BasicMenuItemUI.java:833) 在 javax.swing.plaf.basic.BasicMenuItemUI$Handler.mouseReleased(BasicMenuItemUI.java:877) 在 java.awt.Component.processMouseEvent(Component.java:6533) 在 javax.swing.JComponent.processMouseEvent(JComponent.java:3324) 在 java.awt.Component.processEvent(Component.java:6298) 在 java.awt.Container.processEvent(Container.java:2236) 在 java.awt.Component.dispatchEventImpl(Component.java:4889) 在 java.awt.Container.dispatchEventImpl(Container.java:2294) 在 java.awt.Component.dispatchEvent(Component.java:4711) 在 java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4888) 在 java.awt.LightweightDispatcher.processMouseEvent(Container.java:4525) 在 java.awt.LightweightDispatcher.dispatchEvent(Container.java:4466) 在 java.awt.Container.dispatchEventImpl(Container.java:2280) 在 java.awt.Window.dispatchEventImpl(Window.java:2746) 在 java.awt.Component.dispatchEvent(Component.java:4711) 在 java.awt.EventQueue.dispatchEventImpl(EventQueue.java:758) 在 java.awt.EventQueue.access$500(EventQueue.java:97) 在 java.awt.EventQueue$3.run(EventQueue.java:709) 在 java.awt.EventQueue$3.run(EventQueue.java:703) 在 java.security.AccessController.doPrivileged(Native Method) 在 java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:76) 在 java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:86) 在 java.awt.EventQueue$4.run(EventQueue.java:731) 在 java.awt.EventQueue$4.run(EventQueue.java:729) 在 java.security.AccessController.doPrivileged(Native Method) 在 java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:76) 在 java.awt.EventQueue.dispatchEvent(EventQueue.java:728) 在 java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:201) 在 java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116) 在 java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105) 在 java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101) 在 java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93) 在 java.awt.EventDispatchThread.run(EventDispatchThread.java:82)

我做错了什么?

【问题讨论】:

  • 首先,从远程站点到 mongodb 进行简单的 telnet 诊断:telnet 12.34.56.789 27017。如果连接被拒绝,您需要修复安全组。远程连接设置请参考 AWS mongodb 文档。
  • @mootmoot telnet 测试已成功通过。它一定是我想念的基本东西。我从来没有远程连接到 MongoDB。你还有什么可以考虑的吗?
  • java.lang.NumberFormatException 表示您正在传递无法识别的值。请检查 umongo 文档 server 字段是否接受 url 架构,例如 httphttps。尝试使用 IP 地址/fqdn 作为服务器名称。
  • @mootmoot 是的!你是个天才!我已将其更改为使用 IP 地址,现在可以使用了!请改写为答案,我会将其标记为已接受的答案。

标签: mongodb amazon-web-services amazon-ec2 amazon database


【解决方案1】:

当你遇到 java.lang.NumberFormatException 时,表示它不识别数字格式。即

`java.lang.NumberFormatException: For input string: "//12.34.56.789" 

在这种情况下,服务器名称解析器会尽最大努力处理 FQDN 和 IP 地址。在这种情况下,解析器会剥离 url 方案(http/https/ftp 等)并假设您输入了 IP 地址。它调用尝试解析数字,但失败,因为前缀“//”。

要解决此问题,请输入 IP 地址或完全限定域名 (FQDN),不带 url 方案

【讨论】:

    【解决方案2】:

    根据错误消息,您似乎通过在主机字符串中包含“https”来配置错误的“连接”。尝试只使用“12.34.56.789:27017”,就像上面提到的另一张海报一样,首先检查您是否可以使用以下方式连接到 mongo 主机:

    telnet 12.34.56.789 27017
    

    如果您的 EC2 安全组设置错误,telnet 命令将无限期挂起,并显示“正在尝试 12.34.56.78...”

    HTH

    【讨论】:

      猜你喜欢
      • 2016-04-23
      • 2018-10-17
      • 1970-01-01
      • 2016-07-07
      • 1970-01-01
      • 1970-01-01
      • 2020-12-26
      • 2013-03-30
      • 2012-10-21
      相关资源
      最近更新 更多