Java 带EclipseLink JPA的SSL

Java 带EclipseLink JPA的SSL,java,jpa,ssl,eclipselink,Java,Jpa,Ssl,Eclipselink,是否有可能使JPA对其连接使用SSL。我对JPA了解不多,因此无法提供有关我使用的版本和提供程序的详细信息,但这里是我persistence.xml文件的精简版本。您是否可以添加使用安全连接的属性 <?xml version="1.0" encoding="UTF-8" ?> <persistence xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun

是否有可能使JPA对其连接使用SSL。我对JPA了解不多,因此无法提供有关我使用的版本和提供程序的详细信息,但这里是我persistence.xml文件的精简版本。您是否可以添加使用安全连接的属性

<?xml version="1.0" encoding="UTF-8" ?>
<persistence xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd"
version="2.0" xmlns="http://java.sun.com/xml/ns/persistence">
<persistence-unit name="MY_PERSISTENCE_UNIT" transaction-type="RESOURCE_LOCAL">
    <!-- declare class entities here -->

    <properties>
        <property name="javax.persistence.jdbc.url" value="jdbc:mysql://URL_TO_SERVER" />
        <property name="javax.persistence.jdbc.driver" value="com.mysql.jdbc.Driver" />
        <property name="javax.persistence.jdbc.user" value="USERNAME" />
        <property name="javax.persistence.jdbc.password" value="PASSWORD" />

        <!-- Optimize database writes to use batching. -->
        <property name="eclipselink.jdbc.batch-writing" value="JDBC" />

        <!-- Avoids flush being triggered before every query execution. -->
        <property name="eclipselink.persistence-context.flush-mode"
            value="COMMIT" />

        <!-- Configure connection pool. -->
        <property name="eclipselink.jdbc.connections.initial" value="1" />
        <property name="eclipselink.jdbc.connections.min" value="64" />
        <property name="eclipselink.jdbc.connections.max" value="64" />

        <!-- Timeout for connection. -->
        <property name="eclipselink.jdbc.timeout" value="10" />

        <!-- Configure cache size. -->
        <property name="eclipselink.cache.size.default" value="1000" />

        <!-- Configure database to be created on startup if not already existing.-->
        <property name="eclipselink.ddl-generation" value="create-tables" />

        <!-- Configure simple SQL logging for demonstration. -->
        <property name="eclipselink.logging.level" value="FINE" />
        <property name="eclipselink.logging.thread" value="false" />
        <property name="eclipselink.logging.session" value="false" />
        <property name="eclipselink.logging.exceptions" value="false" />
        <property name="eclipselink.logging.timestamp" value="false" />
    </properties>
</persistence-unit>


它不是JPA特有的,只是向JDBC连接字符串添加参数。假设其他所有内容都已正确设置,那么添加以下内容就足够了:

?useSSL=true&requireSSL=true

如果SSL连接通常不起作用,那么本页将提供更多信息:

我发现这在EclipseLink 2.5.0中非常有用,可以将属性传递给JDBC驱动程序:

<property name="eclipselink.jdbc.property.my_property_name" value="my_value" />

这是特定于驱动程序的,但在您的情况下是:

<property name="eclipselink.jdbc.property.useSSL" value="true" />
<property name="eclipselink.jdbc.property.requireSSL" value="true" />


谢谢!这些信息看起来很有希望使这项工作得以开展。在初始化DB连接之前,我必须在java代码中设置这些属性吗(使用System.setProperty),或者我可以在问题帖子中的persistence.xml文件中设置属性吗(请注意,我不直接使用JDBC连接字符串(JPA处理这个问题,这就是为什么JPA对我来说是特定的)没有太大区别,可以将参数添加到javax.persistence.jdbc.url的值中