我是JPA和Liberty的新手。谁能解释一下如何关联/链接server.xml,web.xml和persistence.xml配置来建立数据库连接? 非常感谢您的帮助。
答案 0 :(得分:2)
在Liberty中,您定义JDBC驱动程序jar文件的位置,并使用JNDI名称配置dataSource元素。该知识中心页面包含一个MySQL示例,
直接从以上页面引用,
import java.util.*;
import java.lang.*;
public class Stack2{
public static void main(String args[]){
Scanner sc= new Scanner(System.in);
int num1=sc.nextInt();
int num2=sc.nextInt();
if(num1<num2){
System.out.println("Number 1 is less than number 2");
System.exit(1);
}
int x=num1-num2;
System.out.print(num1+" - "+num2+" --> is equal to "+ num1+" " );
while(num1!=x){
System.out.print("-1 ");
num1--;
}
System.out.println("= "+x);
}
}
此后,您可以在persistence.xml中配置jta-data-source元素,指向您选择的JNDI名称。例如,
<dataSource id="DefaultDataSource" jndiName="jdbc/mySQL">
<jdbcDriver libraryRef="MySQLLib"/>
<properties databaseName="SAMPLEDB" serverName="localhost" portNumber="3306"/>
</dataSource>
<library id="MySQLLib">
<file name="C:/mysql-connector-java-x.x.xx/mysql-connector-java-x.x.xx.jar"/>
</library>
以上内容足以使其正常工作,而无需涉及web.xml。 部署描述符(web.xml)使您可以选择添加一个间接/映射级别,并能够配置一些其他设置,例如共享性以及容器与应用程序身份验证。您可以通过在web.xml中定义指向数据源的资源引用来实现。资源引用在java:comp / env,java:module / env,java:app / env或java:global / env中具有能反映其可见性的名称。在下面的示例中,我将使用java:module,这意味着我们定义的引用仅是同一模块(提供web.xml的Web模块)中的可见性,
...
<persistence-unit name="ExamplePersistenceUnit">
<jta-data-source>jdbc/mySQL</jta-data-source>
</persistence-unit>
在定义了上面的资源引用之后,数据源将继续以server.xml中指定的JNDI名称可用,但也可以通过资源引用的JNDI名称变为可用,这意味着您可以替代地指定
<resource-ref>
<res-ref-name>java:module/env/jdbc/mySQLRef</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
<res-sharing-scope>Shareable</res-sharing-scope>
<lookup-name>jdbc/mySQL</lookup-name>
</resource-ref>
部署描述符还可以做一些更高级的事情,例如定义数据源来代替服务器配置。但是,为了使答案简单,我跳过了这种可能性。
答案 1 :(得分:0)
这个IBM KnowledgeCenter topic是一个很好的起点