Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

  • Note that c.d means cargo.datasource
  • Note that if you specify a property marked do not set you will get a CargoException.

Property

Purpose

Valid Values

DataSource

Transactional DataSource

XA DataSource

c.d.jndi

The path to this DataSource in JNDI

Any jndi path, like jdbc/userds

mandatory

mandatory

mandatory

c.d.driver

The implementation class

ex. my.Driver

mandatory: must implement java.sql.Driver

mandatory: must implement java.sql.Driver

mandatory: must implement javax.sql.XADataSource

c.d.properties

Properties to pass to the driver

Semi-colon delimited string

optional

optional

mandatory

c.d.url

URL for the java.sql.Driver

ex. jdbc:host:port/mydb

mandatory

mandatory

optional

c.d.type

Determines the type of the driver

Defaults to java.sql.Driver, only set if you want to use a javax.sql.XADataSource

do not set

do not set

javax.sql.XADataSource

c.d.transactionsupport

Determines transaction support type

LOCAL_TRANSACTION or XA_TRANSACTION

do not set

mandatory

unset defaults to only valid option: XA_TRANSACTION

c.d.id

Identifier used in configuration files to reference this DataSource

Must contain no path-like characters

optional

optional

optional

c.d.username

Username to connect to the database

String

optional

optional

optional

c.d.password

Password to connect to the database

String

optional

optional

optional

JMS resource properties

JMS resources (such as connection factories, queues or topics) are added through pipe-delimited configuration properties that starts with cargo.resource.resource. Example:

...

  • Note that c.r means cargo.resource

Property

Purpose

Valid Values

Mandatory?

c.r.id

The ID for the JNDI entry of this JMS resource

ID used in configuration files, if not specified an identifier is created using the nameoptional

c.r.name

The path to this JMS resource in JNDI

Any JNDI path, like jms/cf/MyCf or jms/cf/MyQueue

mandatory

c.r.type

Interface of the object

Any JNDI path,

like 

like:

  • On J2EE / Java EE containers: javax.jms.ConnectionFactory or javax.jms.Queue
  • On Jakarta EE containers: jakarta.jms.ConnectionFactory or jakarta.jms.Queue

mandatory

c.r.parameters

Properties to to populate the class with

Semi-colon delimited string; must correspond to setters

optional


Info
titleJava EE vs. Jakarta EE

Even when you use Codehaus Cargo with a Jakarta EE container, you can keep on using javax.jms. definitions, which Codehaus Cargo will automatically translate to jakarta.jms. for your specific container if need be. This ensures you can easily test on Java EE and Jakarta EE without having to create very complex Codehaus Cargo property sets.

Please note that this doesn't work the other way round: jakarta.jms. definitions will not be "mapped back" to javax.jms. definitions on non Jakarta EE containers.

Other resource properties

...

  • Note that c.r means cargo.resource

Property

Purpose

Valid Values

Mandatory?

c.r.id

The ID for this JNDI entry

ID used in configuration files, if not specified an identifier is created using the nameoptional

c.r.name

The path to this resource in JNDI

Any JNDI path, like resource/apple

mandatory

c.r.type

Interface of the object

Any valid interface

mandatory

c.r.class

The implementation class

Any valid class implementing the interface

mandatory

c.r.parameters

Properties to to populate the class with

Semi-colon delimited string; must correspond to setters

optional

Known issues

The Glassfish container has various known issues with regards to DataSource support.

...

This is because Glassfish is already shipped with Derby, and the Glassfish class loaders do not know how to the manage the situation where the same class is duplicated. So, the solution is to simply remove the Derby JAR from dependencies; on the other hand this is not feasible if you are using the same CARGO profile with different containers. Here is how you can work around the issue:

Code Block
languagehtml/xml
<dependencies>
  <dependency>
    <groupId>org.apache.derby</groupId>
    <artifactId>derby</artifactId>
    <version>${derby.version}</version>
    <scope>test</scope>
  </dependency>
</dependencies>

  ...

<build>
  <plugins>
    <plugin>
      <groupId>org.codehaus.cargo</groupId>
      <artifactId>cargo-maven2maven3-plugin</artifactId>
      <version>${cargo.version}</version>
      <!--
        This configuration will be used in general.
        -->
      <configuration>
        <container>
          <dependencies>
            <dependency>
              <groupId>org.apache.derby</groupId>
              <artifactId>derby</artifactId>
            </dependency>
          </dependencies>
          <systemProperties>
            <derby.system.home>\${project.build.directory}/derby</derby.system.home>
          </systemProperties>
        </container>
        <configuration>
          <properties>
            <cargo.datasource.datasource.derby>
                cargo.datasource.driver=org.apache.derby.jdbc.EmbeddedDriver|
                cargo.datasource.url=jdbc:derby:derbyDB;create=true|
                cargo.datasource.jndi=jdbc/CargoDS|
                cargo.datasource.username=APP|
                cargo.datasource.password=nonemptypassword
            </cargo.datasource.datasource.derby>
          </properties>
        </configuration>

          ...

      </configuration>
    </plugin>
  </plugins>
</build>

<profiles>

    ...

  <profile>
    <id>glassfish3x</id>
    <build>
      <pluginManagement>
        <plugins>
          <plugin>
            <groupId>org.codehaus.cargo</groupId>
            <artifactId>cargo-maven2maven3-plugin</artifactId>
            <configuration>
              <container>
                <containerId>glassfish3x</containerId>
                <artifactInstaller>
                  <groupId>org.glassfish.main.distributions</groupId>
                  <artifactId>glassfish</artifactId>
                  <version>3.1.2.2</version>
                </artifactInstaller>
                <dependencies>
                  <!--
                    Remove the org.apache.derby dependency since GlassFish 3.x is already
                    shipped with Derby, and adding the dependency twice results in a
                    java.lang.SecurityException: sealing violation: package org.apache.derby.
                    -->
                    <dependency>
                      <groupId>org.apache.derby</groupId>
                      <artifactId>derby</artifactId>
                      <classpath>none</classpath>
                    </dependency>
                </dependencies>
              </container>
            </configuration>
          </plugin>
        </plugins>
      </pluginManagement>
    </build>
  </profile>
</profiles>

...

Users of the Maven2/Maven3 plugin can use the Maven2 Archetype showing DataSource support. Please read: DataSource Definition Archetype Maven 3 Plugin can refer to the Maven 3 Archetype showing DataSource support.