You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@tomee.apache.org by to...@web.de on 2023/05/30 11:28:02 UTC

How to Configure JDBC Web-INF resource with TomEE 9

Hello,

I'm looking for an example hot two configure JDBC with Tomee 9.0.

First I read this article and the example works as expected.
https://www.tomitribe.com/blog/configuring-jdbc-in-tomee/

Then I tried to use TomEE 9.0 and MSSQL. [1]

On the first glance it looked successful because the string was given as output. By a closer look not a connection to MSSQL was set up, instead HSQL was used. [2][3]

Does anybody can point me to an example using WEB-INF/resources.xml[4] and ToMEE 9?

Thanks,
Markus

[1]

    <properties>
        <maven.compiler.source>17</maven.compiler.source>
        <maven.compiler.target>17</maven.compiler.target>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    </properties>

    <dependencies>
        <dependency>
            <groupId>org.apache.tomee.bom</groupId>
            <artifactId>tomee-plus</artifactId>
            <version>9.0.0</version>
            <scope>provided</scope>
        </dependency>
    </dependencies>

    <build>
        <finalName>jdbc-servlet</finalName>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-war-plugin</artifactId>
                <version>3.3.2</version>
            </plugin>
            <plugin>
                <groupId>org.apache.tomee.maven</groupId>
                <artifactId>tomee-maven-plugin</artifactId>
                <version>9.0.0</version>
                <configuration>
                    <libs>
                        <lib>com.microsoft.sqlserver:mssql-jdbc:9.2.0.jre8</lib>
                    </libs>
                    <tomeeClassifier>plus</tomeeClassifier>
                    <args>-Xmx512m</args>
                    <removeDefaultWebapps>false</removeDefaultWebapps>
                </configuration>
            </plugin>
        </plugins>
    </build>

[2]

        try(final Connection connection = dataSource.getConnection()){
            writer.println("Metadata at: " + connection.getMetaData().getUserName());
            writer.println("Metadata at: " + connection.getMetaData().getDriverName());
            writer.println("Metadata at: " + connection.getMetaData().getDriverVersion());

            boolean valid = connection.isValid(1000);

[3]

curl http://localhost:8080/jdbc-servlet/
Metadata at: SA
Metadata at: HSQL Database Engine Driver
Metadata at: 2.7.1

 JDBC Connection is valid @ timestamp = 1685439527124

[4]

<Resource id="MSSQL_Database" type="javax.sql.DataSource">
    JdbcDriver com.microsoft.sqlserver.jdbc.SQLServerDriver
    JdbcUrl jdbc:sqlserver://qa.company.local:1433;databaseName=myDatabase
    UserName username
    Password password
    JtaManaged true
    InitialSize 10
    MaxActive 128
    MaxIdle 25
    MinIdle 10
    AccessToUnderlyingConnectionAllowed true
    TestOnBorrow false
    TestWhileIdle true
    TimeBetweenEvictionRuns 1 minute
    MaxWaitTime 0 seconds
    PoolPreparedStatements true
    MaxOpenPreparedStatements 1024
    ValidationQuery select 1
</Resource>


Aw: Re: How to Configure JDBC Web-INF resource with TomEE 9

Posted by to...@web.de.
Hi Richard,

I solved it on my own last week.

In my mind the solution was that I added a <resources></resources> around the content of the resources.xml.

1) I used Java 17 instead of Java 8.
2) I updated the org.apache.tomee:jakartaee-api and modfied the namespace code
3) I updated the maven-war-plugin 

mvn -e clean install tomee:run
curl http://localhost:8080/jdbc-servlet/
JDBC Connection is valid @ timestamp = 1686141982875

=> At the first glace the example result worked as expected.

4) I add more logging data to see that the correct driver is used

mvn -e clean install tomee:run
curl http://localhost:8080/jdbc-servlet/
Metadata at: SA
Metadata at: HSQL Database Engine Driver
Metadata at: 2.7.1

 JDBC Connection is valid @ timestamp = 1686141982875

=> To my surprise the code does not use Derby driver as I was expected.

5) I added the <resources> tag into the resources.xml.

mvn -e clean install tomee:run

curl http://localhost:8080/jdbc-servlet/
Metadata at: admin
Metadata at: Apache Derby Embedded JDBC Driver
Metadata at: 10.14.2.0 - (1828579)

 JDBC Connection is valid @ timestamp = 1686142146792

=> Now the correct database was used.

I published the modified code here:
https://github.com/abstract-thinking/tomee-9-jdbc-configuration-example/

Take a look inside the commit history because I was a little be confused by my own what I have done last week and about the fact that after the third step the result looked fine.

Cheers,
Markus



> Gesendet: Dienstag, 06. Juni 2023 um 13:08 Uhr
> Von: "Richard Zowalla" <rz...@apache.org>
> An: users@tomee.apache.org
> Betreff: Re: How to Configure JDBC Web-INF resource with TomEE 9
>
> Hi,
> 
> can you push a small code example to GitHub?
> would make it much easier to point you into the right direction.
> 
> Gruß
> Richard
> 
> Am Dienstag, dem 30.05.2023 um 13:28 +0200 schrieb tomee-user@web.de:
> > Hello,
> > 
> > I'm looking for an example hot two configure JDBC with Tomee 9.0.
> > 
> > First I read this article and the example works as expected.
> > https://www.tomitribe.com/blog/configuring-jdbc-in-tomee/
> > 
> > Then I tried to use TomEE 9.0 and MSSQL. [1]
> > 
> > On the first glance it looked successful because the string was given
> > as output. By a closer look not a connection to MSSQL was set up,
> > instead HSQL was used. [2][3]
> > 
> > Does anybody can point me to an example using WEB-
> > INF/resources.xml[4] and ToMEE 9?
> > 
> > Thanks,
> > Markus
> > 
> > [1]
> > 
> >     <properties>
> >         <maven.compiler.source>17</maven.compiler.source>
> >         <maven.compiler.target>17</maven.compiler.target>
> >         <project.build.sourceEncoding>UTF-
> > 8</project.build.sourceEncoding>
> >     </properties>
> > 
> >     <dependencies>
> >         <dependency>
> >             <groupId>org.apache.tomee.bom</groupId>
> >             <artifactId>tomee-plus</artifactId>
> >             <version>9.0.0</version>
> >             <scope>provided</scope>
> >         </dependency>
> >     </dependencies>
> > 
> >     <build>
> >         <finalName>jdbc-servlet</finalName>
> >         <plugins>
> >             <plugin>
> >                 <groupId>org.apache.maven.plugins</groupId>
> >                 <artifactId>maven-war-plugin</artifactId>
> >                 <version>3.3.2</version>
> >             </plugin>
> >             <plugin>
> >                 <groupId>org.apache.tomee.maven</groupId>
> >                 <artifactId>tomee-maven-plugin</artifactId>
> >                 <version>9.0.0</version>
> >                 <configuration>
> >                     <libs>
> >                         <lib>com.microsoft.sqlserver:mssql-
> > jdbc:9.2.0.jre8</lib>
> >                     </libs>
> >                     <tomeeClassifier>plus</tomeeClassifier>
> >                     <args>-Xmx512m</args>
> >                    
> > <removeDefaultWebapps>false</removeDefaultWebapps>
> >                 </configuration>
> >             </plugin>
> >         </plugins>
> >     </build>
> > 
> > [2]
> > 
> >         try(final Connection connection =
> > dataSource.getConnection()){
> >             writer.println("Metadata at: " +
> > connection.getMetaData().getUserName());
> >             writer.println("Metadata at: " +
> > connection.getMetaData().getDriverName());
> >             writer.println("Metadata at: " +
> > connection.getMetaData().getDriverVersion());
> > 
> >             boolean valid = connection.isValid(1000);
> > 
> > [3]
> > 
> > curl http://localhost:8080/jdbc-servlet/
> > Metadata at: SA
> > Metadata at: HSQL Database Engine Driver
> > Metadata at: 2.7.1
> > 
> >  JDBC Connection is valid @ timestamp = 1685439527124
> > 
> > [4]
> > 
> > <Resource id="MSSQL_Database" type="javax.sql.DataSource">
> >     JdbcDriver com.microsoft.sqlserver.jdbc.SQLServerDriver
> >     JdbcUrl
> > jdbc:sqlserver://qa.company.local:1433;databaseName=myDatabase
> >     UserName username
> >     Password password
> >     JtaManaged true
> >     InitialSize 10
> >     MaxActive 128
> >     MaxIdle 25
> >     MinIdle 10
> >     AccessToUnderlyingConnectionAllowed true
> >     TestOnBorrow false
> >     TestWhileIdle true
> >     TimeBetweenEvictionRuns 1 minute
> >     MaxWaitTime 0 seconds
> >     PoolPreparedStatements true
> >     MaxOpenPreparedStatements 1024
> >     ValidationQuery select 1
> > </Resource>
> > 
> 
>

Re: How to Configure JDBC Web-INF resource with TomEE 9

Posted by Richard Zowalla <rz...@apache.org>.
Hi,

can you push a small code example to GitHub?
would make it much easier to point you into the right direction.

Gruß
Richard

Am Dienstag, dem 30.05.2023 um 13:28 +0200 schrieb tomee-user@web.de:
> Hello,
> 
> I'm looking for an example hot two configure JDBC with Tomee 9.0.
> 
> First I read this article and the example works as expected.
> https://www.tomitribe.com/blog/configuring-jdbc-in-tomee/
> 
> Then I tried to use TomEE 9.0 and MSSQL. [1]
> 
> On the first glance it looked successful because the string was given
> as output. By a closer look not a connection to MSSQL was set up,
> instead HSQL was used. [2][3]
> 
> Does anybody can point me to an example using WEB-
> INF/resources.xml[4] and ToMEE 9?
> 
> Thanks,
> Markus
> 
> [1]
> 
>     <properties>
>         <maven.compiler.source>17</maven.compiler.source>
>         <maven.compiler.target>17</maven.compiler.target>
>         <project.build.sourceEncoding>UTF-
> 8</project.build.sourceEncoding>
>     </properties>
> 
>     <dependencies>
>         <dependency>
>             <groupId>org.apache.tomee.bom</groupId>
>             <artifactId>tomee-plus</artifactId>
>             <version>9.0.0</version>
>             <scope>provided</scope>
>         </dependency>
>     </dependencies>
> 
>     <build>
>         <finalName>jdbc-servlet</finalName>
>         <plugins>
>             <plugin>
>                 <groupId>org.apache.maven.plugins</groupId>
>                 <artifactId>maven-war-plugin</artifactId>
>                 <version>3.3.2</version>
>             </plugin>
>             <plugin>
>                 <groupId>org.apache.tomee.maven</groupId>
>                 <artifactId>tomee-maven-plugin</artifactId>
>                 <version>9.0.0</version>
>                 <configuration>
>                     <libs>
>                         <lib>com.microsoft.sqlserver:mssql-
> jdbc:9.2.0.jre8</lib>
>                     </libs>
>                     <tomeeClassifier>plus</tomeeClassifier>
>                     <args>-Xmx512m</args>
>                    
> <removeDefaultWebapps>false</removeDefaultWebapps>
>                 </configuration>
>             </plugin>
>         </plugins>
>     </build>
> 
> [2]
> 
>         try(final Connection connection =
> dataSource.getConnection()){
>             writer.println("Metadata at: " +
> connection.getMetaData().getUserName());
>             writer.println("Metadata at: " +
> connection.getMetaData().getDriverName());
>             writer.println("Metadata at: " +
> connection.getMetaData().getDriverVersion());
> 
>             boolean valid = connection.isValid(1000);
> 
> [3]
> 
> curl http://localhost:8080/jdbc-servlet/
> Metadata at: SA
> Metadata at: HSQL Database Engine Driver
> Metadata at: 2.7.1
> 
>  JDBC Connection is valid @ timestamp = 1685439527124
> 
> [4]
> 
> <Resource id="MSSQL_Database" type="javax.sql.DataSource">
>     JdbcDriver com.microsoft.sqlserver.jdbc.SQLServerDriver
>     JdbcUrl
> jdbc:sqlserver://qa.company.local:1433;databaseName=myDatabase
>     UserName username
>     Password password
>     JtaManaged true
>     InitialSize 10
>     MaxActive 128
>     MaxIdle 25
>     MinIdle 10
>     AccessToUnderlyingConnectionAllowed true
>     TestOnBorrow false
>     TestWhileIdle true
>     TimeBetweenEvictionRuns 1 minute
>     MaxWaitTime 0 seconds
>     PoolPreparedStatements true
>     MaxOpenPreparedStatements 1024
>     ValidationQuery select 1
> </Resource>
>