我尝试使用Azure上发布的Web应用程序连接外部MySQL数据库。代码在Localhost上托管的Tomcat上运行得非常好,但在Azure上,所有需要连接的函数都返回错误:
SELECT REPLACE([strUrl], '/myoldurl/', '/mynewurl/') FROM [UrlRewrite]
连接功能代码是:
Exception: java.net.SocketException: Permission denied: connect Message: ; nested exception is: java.net.SocketException: Permission denied: connect
答案 0 :(得分:0)
我厌倦了重现你的问题但却失败了。
在这里,我尝试创建一个java spring-boot
项目来测试与Azure MySQL Database
的连接。
我的代码片段:
private static String hostName = "<your host name>";
private static String dbName = "sys";
private static String user = "<user name>";
private static String password = "password";
private static String portNumber = "3306";
@RequestMapping("/hello")
public String index() throws SQLException {
Connection conn = null;
try {
Class.forName("com.mysql.cj.jdbc.Driver");
} catch (ClassNotFoundException e1) {
e1.printStackTrace();
}
try {
String url = "jdbc:mysql://"+hostName+":"+portNumber+"/"+dbName+"?verifyServerCertificate=true&useSSL=true&requireSSL=false&serverTimezone=UTC";
conn = DriverManager.getConnection(url, user, password);
} catch (SQLException e) {
System.out.println("error!!!!");
System.out.println(e.getMessage());
e.printStackTrace();
return e.getMessage();
}
return conn.getCatalog();
}
我的web.config文件:
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<system.webServer>
<handlers>
<add name="httpPlatformHandler" path="*" verb="*" modules="httpPlatformHandler" resourceType="Unspecified" />
</handlers>
<httpPlatform processPath="%JAVA_HOME%\bin\java.exe"
arguments="-Djava.net.preferIPv4Stack=true -Dserver.port=%HTTP_PLATFORM_PORT% -jar "%HOME%\site\wwwroot\demo-0.0.1-SNAPSHOT.jar"">
</httpPlatform>
</system.webServer>
</configuration>
如果无法连接到数据库,可以按如下方式检查点:
1.不要错过设置SSL参数。
2.请设置您的天蓝网络应用的白色IP address
。
3.不要错过-Djava.net.preferIPv4Stack=true
中的web.config
设置。
您可以从此主题中找到更多详细信息:JavaMail API to iMail -- java.net.SocketException: Permission denied: connect
希望它对你有所帮助。
答案 1 :(得分:0)