【问题标题】:Java JPA proxy issueJava JPA 代理问题
【发布时间】:2012-12-03 12:08:58
【问题描述】:

我在我的 java 应用程序中使用 JPA(EclipseLink impl)。当系统级别没有配置代理时,应用程序可以正常工作,但是当我在系统级别配置代理时,应用程序会失败

EntityManager entityManager = emf.createEntityManager();

并抛出以下异常

Caused by: java.net.SocketException: Unknown proxy type : null
at com.mysql.jdbc.SQLError.createCommunicationsException(SQLError.java:1074)
at com.mysql.jdbc.MysqlIO.<init>(MysqlIO.java:341)
at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:395)
at com.mysql.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:2137)
at java.net.Socket.connect(Socket.java:579)
... 24 more
at java.net.Socket.connect(Socket.java:528)

Caused by: java.net.SocketException: Unknown proxy type : null
at java.net.Socket.<init>(Socket.java:425)
at java.net.Socket.<init>(Socket.java:241)
at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:395)
at com.mysql.jdbc.StandardSocketFactory.connect(StandardSocketFactory.java:253)
at java.net.Socket.connect(Socket.java:579)
at com.mysql.jdbc.MysqlIO.<init>(MysqlIO.java:290)
... 25 more
at java.net.Socket.connect(Socket.java:528)

at java.net.Socket.<init>(Socket.java:425)
at java.net.Socket.<init>(Socket.java:241)
at com.mysql.jdbc.StandardSocketFactory.connect(StandardSocketFactory.java:253)
at com.mysql.jdbc.MysqlIO.<init>(MysqlIO.java:290)
... 25 more

我怀疑它试图通过配置的代理访问 localhost 的 mysql db 并因此失败。但是在系统级别的代理配置中,我已经将以下 IP 配置为忽略的主机

127.0.0.1localhost

并使用以下 jdbc url

<property name="javax.persistence.jdbc.url" value="jdbc:mysql://localhost:3306/clharvester" />

【问题讨论】:

    标签: java jpa eclipselink


    【解决方案1】:

    当您使用代理时,您必须使用服务器机器的真实 IP 地址连接到数据库。

    【讨论】:

    • 什么服务器机器?数据库服务器?它在本地主机上...所以我也尝试了 127.0.0.1 ip 但没有运气...
    • 他的意思是实际的机器 ip,就好像你从其他地方连接一样。 127.0.0.1 只是一个环回地址。
    • 好的,现在你必须检查你是否有任何访问机器的 ip 列表。有没有防火墙。