有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java JDBC断管Mac

这很奇怪,但每次我试图通过JDBC连接到SQLAzure时,我都会反复遇到这个问题

环境:Eclipse Oxygen、Mac Sierra 10.12.6、JDK 1.8.0141

我看到以下错误:

Cannot create PoolableConnectionFactory (Broken pipe (Write failed) ClientConnectionId:ac4ed2ba-4563-4f3b-9bcc-441bff9e45e1)

我试图通过最基本的方式,通过上下文来建立联系。xml本身:

 <Resource name="jdbc/sqlazure"
auth="Container"
driverClassName="com.microsoft.sqlserver.jdbc.SQLServerDriver"
type="javax.sql.DataSource"
maxIdle="30"
username="<user>
password="<password>
url="jdbc:sqlserver://<dbname>.database.windows.net:1433;database=<db>;encrypt=true;trustServerCertificate=false;hostNameInCertificate=*.database.windows.net;loginTimeout=30;"
removeAbandonedTimeout="30"
logAbandoned="true" /> 

在我的servlet init()中,我得到的数据源如下:

 ds = (DataSource) new InitialContext().lookup("java:comp/env/jdbc/sqlazure");

它正在返回非空值。但是,当我尝试建立连接时:

Connection con = ds.getConnection()

它挂在这里,然后因管道破裂而超时。我还在Azure门户中列出了相应的IP地址

我的SQLPro客户端能够连接到数据库并查看其内容,因此用户名/密码和连接字符串不应该有任何问题

我已确认主机名设置正确。使用:

scutil --get HostName

我想尽一切办法都试过了,但还是不走运。我开始认为OSX上的Java运行时存在一些问题。有人有什么想法吗

编辑:我在Windows环境和JDK上使用了相同的文件,但没有看到这个问题。所以我相信这是Mac特有的


共 (1) 个答案

  1. # 1 楼答案

    您可能需要安装Homebrew和Maven才能正常工作。请按照here提供的说明操作