1 2 3 Previous Next 30 Replies Latest reply: Dec 20, 2011 2:09 PM by henk de boer RSS

datasource.xml needed?

nimo stephan Master

In JPA, I can set my datasource-connection within the persistence-unit:

 

<persistence>

<persistence-unit name="...">

 

<properties>

<property name="javax.persistence.jdbc.driver" value=".."/>

<property name="javax.persistence.jdbc.url" value=".."/>

<property name="javax.persistence.jdbc.user" value=".."/>

<property name="javax.persistence.jdbc.password" value=".."/>

</properties>

</persistence-unit>

</persistence>

 

 

Is there any good reason not to use this and instead set up the connection in datasource.xml?:

 

<?xml version="1.0" encoding="UTF-8"?>

 

<!DOCTYPE datasources

    PUBLIC "-//JBoss//DTD JBOSS JCA Config 1.5//EN"

    "http://www.jboss.org/j2ee/dtd/jboss-ds_1_5.dtd">

 

<datasources>

   <local-tx-datasource>

      <jndi-name>...</jndi-name>

 

     <driver-class>..</driver-class>

      <connection-url>..</connection-url>

      <user-name>..</user-name>

      <password>..</password>

 

   </local-tx-datasource>

</datasources>

 

 

Why do I need the datasource.xml in JPA2 - is datasource jboss as specific (..doctype //JBoss//DTD JBOSS ..) ?

  • 1. datasource.xml needed?
    jaikiran pai Master

    You'll get connection pooling if you use a datasource.

  • 2. datasource.xml needed?
    jaikiran pai Master

    By the way, it's *-ds.xml file which is used for datasource configuration in JBoss AS.

  • 3. datasource.xml needed?
    Nicklas Karlsson Master

    Is @DataSourceDefinition pooled and deployed as a "real" DS?

  • 4. datasource.xml needed?
    jaikiran pai Master

    Nicklas Karlsson wrote:

     

    Is @DataSourceDefinition pooled and deployed as a "real" DS?

    Yes, internally in JBoss AS the @DataSourceDefinition is converted to the JBoss specific datasource (a local-tx-datasource, if I remember correctly).

  • 5. datasource.xml needed?
    Nicklas Karlsson Master

    Recall it it's it scoped to definining application or free for everbody to use?

  • 6. datasource.xml needed?
    jaikiran pai Master

    Nicklas Karlsson wrote:

     

    Recall it it's it scoped to definining application or free for everbody to use?

    The spec allows the user to specify in which JNDI namespace it gets bound:

     

     

    Java EE6 Spec, section EE.5.17 DataSource Resource Definition:

     

    The DataSource resource may be defined in any of the JNDI namespaces described in Section EE.5.2.2, “Application Component Environment Namespaces”. For example, a DataSource resource may be defined:

     

    - in the java:comp namespace, for use by a single component

    - in the java:module namespace, for use by all components in a module

    - in the java:app namespace, for use by all components in an application

    - in the java:global namespace, for use by all applications.

  • 7. Re: datasource.xml needed?
    nimo stephan Master

    You'll get connection pooling if you use a datasource.

     

    So if I want to use connection pooling in Jboss AS, I have to use a additional file, namely the xy-ds.xml, even I have also declared my

    connection-url, driver-class, user-name and password via the JPA-standard property names in persistence.xml? Am I right?

     

    Is this also in glassfish or other application servers?

     

    It's possible in JPA2 to use one place to configure my datasource (persistence.xml), so I do not need to care of another file (xy-ds.xml).But if I want connectin pooling, then I need a xy-ds.xml.

     

     

    Would it be possible (or senseful), if Jboss took the needed properties for connection pooling from persistence.xml?

    Thus, we dont need a xy-ds.xml anymore.

  • 8. Re: datasource.xml needed?
    Nicklas Karlsson Master

    The @DataSourceDefinition discussed above should liberate you from this extra file.

  • 9. Re: datasource.xml needed?
    jaikiran pai Master

    nimo stephan wrote:

     

    You'll get connection pooling if you use a datasource.

     

    So if I want to use connection pooling in Jboss AS, I have to use a additional file, namely the xy-ds.xml, even I have also declared my

    connection-url, driver-class, user-name and password via the JPA-standard property names in persistence.xml? Am I right?

     

    If you are using a datasource, you don't have to use those connection properties in the persistence.xml. Instead you just use the <jta-data-source> element in the persistence.xml and point it to the jndi name of your datasource.

     

     

    nimo stephan wrote:

     


     

    Is this also in glassfish or other application servers?

     

    The way you create/configure the datasource in glassfish and other application servers will be different. But pointing to the datasource in the persistence.xml is the same way as I explained a few lines back.

  • 10. Re: datasource.xml needed?
    jaikiran pai Master

    Nicklas Karlsson wrote:

     

    The @DataSourceDefinition discussed above should liberate you from this extra file.

    Yes, that's one other option for Java EE6 applications (If you are using xmls to define the data-source, then remember to use the correct xsd in the web.xml or ejb-jar.xml file).

  • 11. Re: datasource.xml needed?
    nimo stephan Master

    By the way, I do use "java:/MY_DS" in my persistence.xml, so I do not use java:comp, java:module, java:app, java:global namespace. But it works. Should I change it to "java:app/MY_DS" ?

     

    Another question is, I use JTA-Transaction (by default) and not transaction-type="RESOURCE_LOCAL", how does it relate to local-tx-datasource in my xy-ds.xml ?

     

    my pu:

    <persistence-unit name="MY_PU">

          <provider>org.hibernate.ejb.HibernatePersistence</provider>

          <jta-data-source>java:/MY_DS</jta-data-source>

     

    my xy-ds.xml

     

    <?xml version="1.0" encoding="UTF-8"?>

     

    <!DOCTYPE datasources

        PUBLIC "-//JBoss//DTD JBOSS JCA Config 1.5//EN"

        "http://www.jboss.org/j2ee/dtd/jboss-ds_1_5.dtd">

    <datasources>

       <local-tx-datasource>

          <jndi-name>MY_DS</jndi-name>

     


  • 12. Re: datasource.xml needed?
    jaikiran pai Master

    nimo stephan wrote:

     

    By the way, I do use "java:/MY_DS" in my persistence.xml, so I do not use java:comp, java:module, java:app, java:global namespace. But it works. Should I change it to "java:app/MY_DS" ?

    No, stick to java:/My_DS since you haven't configured a @DataSourceDefinition as specified by Java EE6 spec.

     

     

    nimo stephan wrote:

     

     

     

    Another question is, I use JTA-Transaction (by default) and not transaction-type="RESOURCE_LOCAL", how does it relate to local-tx-datasource in my xy-ds.xml ?

     

    The (JBoss specific) local-tx-datasource  and the transaction-type in the persistence.xml are completely different things. See the JPA spec for more details on what transaction-type attribute means. As for the local-tx-datasource, see this http://community.jboss.org/wiki/configdatasources

  • 13. Re: datasource.xml needed?
    nimo stephan Master

    If you are using a datasource, you don't have to use those connection properties in the persistence.xml. Instead you just use the &lt;jta-data-source&gt; element in the persistence.xml and point it to the jndi name of your datasource.

     

    Yes, I know, I have used that this way. I was just wondering because jpa2 does specified these properties, so I have thought that I do not need xy-ds.xml anymore.

     

    The fact is:

     

    When using JBOSS AS and when I want to use connection pooling, then I have to use a datasource even if I declared the SAME datas (connection-url, driver-class, user-name, password) already in a standardized JPA2-manner.

     

    By the way, I guess, the xy-ds.xml is not standard-conform because we have to use the doctype "//JBoss//DTD JBOSS JCA Config 1.5//EN", hence  xy-ds.xml cannot be used in other JEE-Containers -xy-ds.xml ispure jboss-specific.

     

    The question is:

     

    Would it be senseful, if Jboss AS takes the values needed for connection pooling out of the persistence.xml. If so, then we can deprecate xy-ds.xml;)

  • 14. Re: datasource.xml needed?
    Nicklas Karlsson Master

    (you don't have to use the connection-url properties in your persistence.xml, a jndi name that matches the one defined in the -ds is enough.)

1 2 3 Previous Next