OpenJPA の場合、persistence.xml でユーザー名とパスワードを指定せずに jta_datasource で JNDI 接続を指定するにはどうすればよいですか? jndi の persistence.xml ファイルにユーザー名とパスワードが指定されていないと、エラーが発生します。
1838 次
3 に答える
1
jta-data-source
persistence.xmlの要素を使用してみてください。
<jta-data-source>java:comp/env/jdbc/FooBarDataSourceJNDI</jta-data-source>
于 2012-11-19T18:48:21.353 に答える
1
素晴らしい質問です。これは、OpenJPA のドキュメントでは十分にカバーされていません。必要なことは、「openjpa.ConnectionFactoryName」プロパティーに特別な「java:comp/env/...」構文を使用して、OpenJPA に JNDI から接続パラメーターを取得するように要求することです。たとえば、persistence.xml は次のようになります。
<?xml version="1.0"?>
<persistence>
<persistence-unit name="openjpa">
<provider>org.apache.openjpa.persistence.PersistenceProviderImpl</provider>
<class>tutorial.Animal</class>
<class>tutorial.Dog</class>
<class>tutorial.Rabbit</class>
<class>tutorial.Snake</class>
<properties>
<property name="openjpa.ConnectionFactoryName" value="java:comp/env/jdbc/myjndi"/>
<property name="openjpa.Log" value="DefaultLevel=WARN, Tool=INFO"/>
</properties>
</persistence-unit>
</persistence>
これにより、コンテナーから「myjndi」という名前の jndi リソースが要求されます。Tomcat を使用している場合、context.xml は次のようになります。
<?xml version='1.0' encoding='UTF-8'?>
<Context>
<Resource name="jdbc/myjndi"
auth="Container"
scope="Shareable"
type="javax.sql.DataSource"
maxActive="100"
maxIdle="30"
maxWait="10000"
removeAbandoned="true"
username="username"
password="password"
driverClassName="com.mysql.jdbc.Driver"
url="jdbc:mysql://localhost:3306/DBNAME?characterEncoding=UTF-8"
/>
</Context>
データベースの必要に応じて、上記の JNDI パラメータを変更します。
于 2012-11-18T23:22:56.210 に答える
0
コードによる構成は私にとってはうまくいきました:
Map<String, String> conf = new HashMap<>();
conf.put("javax.persistence.jtaDataSource", "java:comp/env/jdbc/myjndi");
return getEntityManagerFactory().createEntityManager(conf);
私はpersistence.xml
まだ適切な場所に配置していないと思います。
于 2017-02-02T22:10:42.660 に答える