[jboss-as7-dev] New xsd and management operations for drivers

Stefano Maestri smaestri at redhat.com
Fri May 13 09:48:04 EDT 2011


Hi,

In this branch

you can find some changes in datasources subsystem, mainly regarding 
drivers. Please don't merge it since it needs IronJacamar CR1 not yet 
released.

https://github.com/maeste/jboss-as/tree/IJ-CR1

To get what are changed have a look to the new driver type in xsd

https://github.com/maeste/IronJacamar/blob/master/common/src/main/resources/schema/datasources_1_0.xsd#L845

As you can see it provide not-mandatory major and minor version as asked 
here
https://issues.jboss.org/browse/AS7-711

Moreover it provide an attribute called name that is a symbolic name 
user have to provide and this name is used to address this particular 
driver. Both in management operations and in standalone/domain.xml 
removing the annoying notation drivername#major.minor to point to the 
driver. Since version are optional and no more used for DriverService 
name they are just used to check if specified version and actual driver 
version is the same during deployment and as user's information in 
management and xml.

Have a look how standalone.xml (same for domain.xml) is now appearing:

https://github.com/maeste/jboss-as/blob/IJ-CR1/build/src/main/resources/standalone/configuration/standalone.xml#L177

As you have probably noticed here and in xsd there are 2 element of 
driver tag to specify driver-class and xa-datasource-class. It permits 
to support as module also jdbc driver previous than jdbc4. Of course it 
is possible only as module, while deployment is still supported only for 
jdbc4 drivers while we can't specify driver-class anywhere.

Finally here you have the two operation and answer to query installed 
drivers:

/subsystem=datasources:installed-drivers-list
{
     "outcome" => "success",
     "result" => [
         {
             "driver-name" => "h2",
             "deployment-name" => undefined,
             "module-name" => "com.h2database.h2",
             "module-slot" => "main",
             "driver-class" => "org.h2.Driver",
             "major-version" => 1,
             "minor-version" => 2,
             "jdbc-compliant" => true
         },
         {
             "driver-name" => "ojdbc6.jar",
             "deployment-name" => "ojdbc6.jar",
             "module-name" => undefined,
             "module-slot" => undefined,
             "driver-class" => "oracle.jdbc.OracleDriver",
             "major-version" => 11,
             "minor-version" => 2,
             "jdbc-compliant" => true
         }
     ],
     "compensating-operation" => undefined
}
[domain at localhost:9999 /] 
/subsystem=datasources:get-installed-driver(driver-name="ojdbc6.jar")
{
     "outcome" => "success",
     "result" => [{
         "driver-name" => "ojdbc6.jar",
         "deployment-name" => "ojdbc6.jar",
         "driver-module-name" => undefined,
         "module-slot" => undefined,
         "driver-class-name" => "oracle.jdbc.OracleDriver",
         "driver-major-version" => 11,
         "driver-minor-version" => 2,
         "jdbc-compliant" => true
     }],
     "compensating-operation" => undefined
}


As explained in AS7-328 this operation in domain mode are available at 
host level, and not at domain/profile level. Something like that

/host=local/server=server-one/subsystem=datasources:installed-drivers-list


Any comments or suggestions are more than welcome.



regards
S.



More information about the jboss-as7-dev mailing list