如果我在端口80上的server.com/mongo
有一个mongo。我不能打开这里的任何端口。我如何用Java连接到它?
这不起作用:
mongodb://user:pass@server.com/mongo:80/dbName
30sec后的例外情况:
在server.com/dbname上连接时出错:等待与ReadPreferenceServerSelector{ReadPreference=Primary}匹配得服务器时,在30000 ms后超时.群集状态的客户端视图为{type=unknown,servers=[{address=server.com/mongo:80,type=unknown,state=connecting,exception={com.mongodb.mongosocketexception:server.com/mongo},由{java.net.unknownhostexception:server.com/mongo}}引起]
我还试着用:
mongodb://user:pass@server.com:80/mongo/dbName
例外情况是:
在server.com/dbname上连接时出错:连接字符串包含无效的主机“server.com:80/mongo”。端口“80/MONGO”无效,它必须是介于0和65535之间的整数
我的java代码:
String url = "mongodb://user:pass@server.com/mongo:80/dbName";
MongoClientURI mongoUri = new MongoClientURI(uri);
MongoClient mongo = new MongoClient(mongoUri);
MongoDatabase db = mongo.getDatabase(dbName);
MongoIterable<String> collectionNames = db.listCollectionNames();
for (String name : collectionNames) {
System.out.println(name);
}
<VirtualHost *:80>
DocumentRoot /var/www/html
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
LogLevel warn
<Location /mongo>
ProxyPass http://localhost:27017/
ProxyPassReverse http://localhost:27017/
</Location>
<Location /mongo/>
ProxyPass http://localhost:27017/
ProxyPassReverse http://localhost:27017/
</Location>
ExpiresActive On
ExpiresDefault "access plus 5184000 seconds"
AllowEncodedSlashes On
</VirtualHost>
看起来您正试图在本机驱动程序端口上通过HTTP访问MongoDB。
我的身份验证在Mongo中是正常的:
>db.auth("user", "pass")
1
>use dbName
switched to db dbName
编辑
mongo server.com
mongo server.com:80
mongo server.com:80/mongo
mongo server.com/mongo
mongo server.com/mongo:80
mongo user:pass@server.com/...
和:
mongo -u user -p pass server.com/...
这里的mongo
不是我的数据库名称,而是服务器上的额外路径
主要问题是路径部分(/mongo
)被mongo理解为被调用的数据库,而不是下面的路径部分(/dbname
)。
使用NGinx的解决方案是编辑可用站点,如下所示:
upstream stream_mongo_backend {
server localhost:27017;
}
server {
listen 80;
listen 443 ssl;
server_name server.com;
include path/to/cert.conf;
location /mongo {
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
proxy_set_header X-NginX-Proxy true;
proxy_pass http://stream_mongo_backend/;
proxy_redirect off;
}
}
27.6 通过代理访问MBeans Spring JMX 允许你创建代理,它将重新路由到本地或者远程MBeanServer中注册的MBean。这些代理提供了标准的Java接口来和MBean进行交互。下面的代码展示了如何在本地允许的MBeanServer中配置代理: <bean class="org.springframework.jmx.access.MBeanProxyFactoryBean">
21.6. 通过代理访问MBeans Spring JMX允许你创建代理,这个代理改变到注册到本地或远程 MBeanServer 的MBean的调用。 这些代理提供里一个标准的Java接口,通过它,你可以和MBean相合。 下面的代码展示了如何为一个运行在本地 MBeanServer 的配置一个代理: bean id="proxy"> <property name="objectName"
问题内容: 我正在寻找一种在Java App(使用JDBC)中打开Access MDB文件的方法。 快速的Google搜索建议我为此需要JDBC-ODBC Bridge。 这是否意味着我需要配置要在其上运行应用程序的每个系统,以便为要打开的MDB提供ODBC DSN? 还有一个问题(因为我以前从未使用过ODBC):通信是通过某种套接字(以客户机/服务器方式)还是通过方法/函数调用(例如嵌入Derb
假设我有三个带有nginx的docker容器。它们暴露的端口分别映射到8080、8181和8282。我想在8080上配置服务器,将/example01和/example02代理给另外两个应用程序。这是我的配置文件: 因此,如果我运行容器,每个应用程序都是可访问的(http://localhost:8080、http://localhost:8181和http://localhost:8282)。
我正在尝试使用Azure应用程序代理公开我的本地API。 我已经成功地将其配置为与设置为Passthrough的预身份验证一起使用。当我将预身份验证更改为Azure Active Directory时,我可以通过浏览器成功访问endpoint。然而,当我尝试从代码中调用本地endpoint时,我会收到Microsoft登录页面的HTML。成功的请求将返回JSON响应。 我正在关注一篇Microso
问题内容: 我有一个像这样的数据结构: 我想使用这些变量访问数据: part1name应该用的值(即“第1部分”)填充。part2quantity填充60。 无论如何,可以使用纯JavaScript或JQuery来实现这一目标? 问题答案: 我只是根据已经拥有的一些类似代码制作的,它似乎可以工作: 用法:: 编辑一些人已经注意到,如果传递的字符串最左边的索引与对象内正确嵌套的条目不对应,则此代码将