使用MySQL数据库的自由18.0.0.3中的JPA2

时间:2018-10-26 17:59:40

标签: websphere-liberty

我是JPA和Liberty的新手。谁能解释一下如何关联/链接server.xml,web.xml和persistence.xml配置来建立数据库连接? 非常感谢您的帮助。

2 个答案:

答案 0 :(得分:2)

在Liberty中,您定义JDBC驱动程序jar文件的位置,并使用JNDI名称配置dataSource元素。该知识中心页面包含一个MySQL示例,

https://www.ibm.com/support/knowledgecenter/en/SSEQTP_liberty/com.ibm.websphere.wlp.doc/ae/twlp_dep_configuring_ds.html

直接从以上页面引用,

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是一个很好的起点