2019-09-24 13:09
@JFinal,很遗憾,在本地无论如何都没出现这样的提示,但只要在阿里云服务器上运行,就报这个信息。屡试不爽!
2019-09-20 12:58
@JFinal,我看看本地是否能重现,现在只要在公网上运行就报这个信息,本地我试过很多次,不管怎么运行都没看到这个信息。一开始我一直怀疑是哪个库在公网上一运行会往外连接信息。后来判断应该不是。我这段时间再追查一下,只要能重现,我随时发给你!
2019-09-16 18:51
我也遇到这个问题了,程序在开发机器上没问题,部署到公网上,就出现如下提示:[io.undertow.server.Connectors.executeRootHandler()]: UT005071: Undertow request failed HttpServerExchange{ CONNECT www.linode.com:443} [io.undertow.server.Connectors.executeRootHandler()]: UT005071: Undertow request failed HttpServerExchange{ CONNECT www.baidu.com:443}。尤其是这个百度的443端口请求,一时没找到怎么解决这个问题。
2019-05-22 01:02
@Jfinal 第一种场景是多个数据库连接都有几个相同的表名。第二种场景是一个系统有多个单位使用,每个单位创建一个自己的数据库。根据单位ID提前建立好数据库连接,但程序就只有一套。这两种场景都无法避免使用use这种方法。做规模稍微大点的系统,这两种场景基本上很难回避过去。
2019-05-21 13:48
@JFinal,感谢波总。目前暂时只能通过new一个Model实例的形式再调用use方法实现多数据源了。虽然看起来没有之前的那种静态dao方法看起来那么优雅。不过还是期望波总能在这个地方在下个版本里给个更好的解决方案。再次感谢!
2019-05-19 16:54
@JFinal
感谢回复,也就是说,Mode要想实现通过use切换不同的数据源,只能自己New一个Model实例然后调用use方法才可以是吧。不能通过在Model里用static创建一个dao对象来实现是吧。我看Model源码里,dao方法里这么写
public M dao() {
attrs = DaoContainerFactory.daoMap;
modifyFlag = DaoContainerFactory.daoSet;
return (M)this;
}
而use方法里又这么写:
public M use(String configName) {
if (attrs == DaoContainerFactory.daoMap) {
throw new RuntimeException("dao 只允许调用查询方法");
}
this.configName = configName;
return (M)this;
}
另外,如果Model那个静态dao对象不调用dao方法,只是用来查询,是不是会在并发量大的时候,导致甲查询的数据被返回给了乙呢?或则可能存在最大风险是什么?
只能这么回避吗?Db为什么可以通过use就可以线程安全了呢?波总有没有打算这里改进一下?