User: vlada Date: 01/03/31 16:30:12 Modified: src/docs basicconfiguration.xml jdbc-database.xml Log: update to 2.1 , phew, Scott will add more stuff soon Revision Changes Path 1.4 +324 -135 manual/src/docs/basicconfiguration.xml Index: basicconfiguration.xml =================================================================== RCS file: /cvsroot/jboss/manual/src/docs/basicconfiguration.xml,v retrieving revision 1.3 retrieving revision 1.4 diff -u -r1.3 -r1.4 --- basicconfiguration.xml 2001/03/26 09:12:37 1.3 +++ basicconfiguration.xml 2001/04/01 00:30:12 1.4 @@ -1,141 +1,330 @@ -<chapter> - <title>Basic configuration</title> - <para>Author: +<chapter id="configuration"> + <title>Configuration</title> + + <para>Authors:</para> + <para> <author> - <firstname>Aaron</firstname> - <surname>Mulder</surname> + <firstname>Scott</firstname> + <surname>Stark</surname> </author> - <email>[EMAIL PROTECTED]</email> + <email>[EMAIL PROTECTED]</email> </para> + <para> + <author> + <firstname>Vladimir</firstname> + <surname>Blagojevic</surname> + </author> + <email>[EMAIL PROTECTED]</email> + </para> + <section> - <title>In a nutshell</title> - <para> -JBoss ships preconfigured, so there's nothing you need to do to get it up and running with the test beans. However, you -will likely need to make minor configuration changes to support your specific applications. This section gives an -overview of the configuration files and directories. The Advanced Configuration section gives detailed instructions for -specific configuration changes you may require. The Appendix contains DTDs for the configuration files, which gives the -exact information.</para> - <section> - <title>Important Directories</title> - <para> -The directory names given here are all relative to the directory you installed JBoss into.</para> - </section> - <section> - <title>Executables</title> - <para> -Executables are located in the bin directory. Using the Batch (Windows) or Shell (UNIX) scripts here, you can start the -server or run the test bean client. You can also run the EJX deployment descriptor editor by double-clicking on it (if -your platform supports that) or issuing the command: - -<command> -java -jar ejx.jar -</command> - </para> - </section> - <section> - <title>Configuration</title> - <para> -Configuration files are located in the conf directory. These files configure the server as a whole, so the settings here will -be the same for all EJBs.</para> - </section> - <section> - <title>Libraries</title> - <para> -Java libraries are located in the lib directory. They should use either the ZIP or JAR format. All libraries in this directory -will automatically be added to the server classpath. Again, this should only be used for libraries which need to be -available to all EJBs; there are alternatives for libraries that should be available to individual EJB JARs (see The -Manifest File in the Deploying EJBs in jBoss section).</para> - </section> - <section> - <title>EJBs</title> - <para> -EJB JARs you want to deploy go in the deploy directory. If the server is running, they will be deployed automatically. If -you delete a JAR it will be undeployed, and if you update it it will be redeployed.</para> - </section> - <section> - <title>Client Libraries</title> - <para> -Libraries required for clients are in the client directory. A typical client requires jboss-client.jar, jbosssx-client.jar, jaas.jar, -jnp-client.jar, ejb.jar, and jta-spec1_0_1.jar. If you client is not running JDK 1.3, it will require jndi.jar as well. If you are going to be using JBossMQ JMS provider you will also need jbossmq-client.jar. -</para> - </section> - <section> - <title>Configuration Files</title> - <para> -There are a number of configuration files for jBoss. The contents of each are give here, though you should refer to the -Advanced Configuration section and the DTDs section of the Appendix for details on the specific settings.</para> - <para> -You may create more than one set of configuration files as long as the base filename is the same for all files in the set -and the extensions are not changed. For example, you could copy jboss.conf, jboss.jcml, ... to -myconfig.conf, myconfig.jcml, ... To start jboss with a different set of configuration files, add the base name -of the configuration file set to the command or script you use to start jBoss (for example, "run.sh myconfig").</para> - <table> - <title>Configuration files</title> - <tgroup cols="2"> - <thead> - <row> - <entry>File</entry> - <entry>Description</entry> - </row> - </thead> - <tbody> - <row> - <entry>jboss.conf</entry> - <entry>Lists server components that should be loaded. Each must be a JMX MBean</entry> - </row> - <row> - <entry>jboss.jcml</entry> - <entry>Lists configuration parameters for the server components loaded in jboss.conf</entry> - </row> - <row> - <entry>jboss.properties</entry> - <entry>Provides parameters to the Java runtime (the entries here become system properties)</entry> - </row> - <row> - <entry>jboss.dependencies</entry> - <entry>Lists dependencies between the MBeans loaded in jboss.conf, so they can be loaded and - stopped in the correct order</entry> - </row> - <row> - <entry>jnp.properties</entry> - <entry>Lists properties for the JNDI server implementation</entry> - </row> - <row> - <entry>jndi.properties</entry> - <entry>Lists properties for the JNDI client implementation. You can achieve the same thing by - hardcoding the properties, passing them on the command line, or putting this file on the client - classpath. We recommend putting this on the classpath since it is easiest to use and easiest to - change. You have to hardcode the properties if you want to look up beans on more than one - server, though.</entry> - </row> - <row> - <entry>server.policy</entry> - <entry>The default security policy for the jBoss server. Currently, this is set to allow all permissions. In - a future release it will be locked down more.</entry> - </row> - </tbody> - </tgroup> - </table> - </section> - <section> - <title>Clients on Remote Machines</title> - <para> -The default configuration assumes client will run on the same machine as the jBoss server. While often appropriate for -servlet and JSP clients, you need to make minor changes to support remote clients.</para> - <orderedlist> - <listitem> - <para>Change jboss.properties. The properties java.rmi.server.useLocalHostName and - java.rmi.server.hostname should either both be commented out, or useLocalHostName should be - set to true and hostname should be set to the host name of your server (the name you want your clients to - use, if your server has more than one). </para> - </listitem> - <listitem> - <para>Set the JNDI properties for your clients appropriately. If you choose to put jndi.properties on the client classpath - (which is recommended), you should change the value for java.naming.provider.url to the host - name of your server (again, the name you want your clients to use). </para> - </listitem> - </orderedlist> - </section> - </section> + <title>Introduction</title> + <para> + JBoss ships preconfigured, so there's nothing you need to do to get it up + and running. However, you will likely need to make minor configuration + changes to support your specific applications. This section gives an + overview of the configuration files and directories. The Advanced + Configuration section gives detailed instructions for + specific configuration changes you may require.</para> + </section> + + <section id="directory-structure"> + <title>Directory structure</title> + <para>All directories referred to in the next section are + relative to <![CDATA[<jboss-home>]]> i.e top directory of the + JBoss installation. As shown in <xref linkend="directories.jpg"/> + directories are the following: + </para> + + <para> + <itemizedlist> + <listitem> + <para>bin</para> + <para> + All the binaries included with JBoss distribution are located in this + directory. Using the Batch (Windows) or Shell (UNIX) + scripts here, you can start the server. You can also run the EJX + deployment descriptor editor by double-clicking on it + (if your platform supports that) or issuing the command: java -jar ejx.jar </para> + + </listitem> + + <listitem> + <para id="lib-and-libext-dir">lib and lib/ext</para> + + <para> + The two directories contain java libraries in jar and zip format that + JBoss uses. There is a split between + those libraries which had to be in the system classpath (.ie jars in lib + directory) vs the other ones in lib/ext + directory that are made available to the JBoss server MLet based + classloader.</para> + + <para> + If there is a need to add some java libraries to JBoss, for example jdbc + driver jars, these should be dropped in lib/ext + directory and will be picked up by JBoss automatically. + </para> + </listitem> + + <listitem> + <para>db</para> + <para>Directory containing hypersonic and instantdb databases related files + (configuration files, indexing tables etc ) as well + as JBossMQ - JMS provider message queue files.</para> + </listitem> + + <listitem> + <para>deploy</para> + <para>This is JBoss's deployment directory. Just drop your jars here and + they will be deployed automatically.</para> + </listitem> + + <listitem> + <para>log</para> + <para>JBoss log files are located in this directory. File logging is turned on by default.</para> + </listitem> + + <listitem> + <para>conf</para> + <para>JBoss configuration set(s) are located here. By default there is only one + configuration set - "default". Adding more than one configuration set is permitted. + See <xref linkend="configuration-files"/> for more details. + </para> + </listitem> + + <listitem> + <para>client</para> + <para>Libraries required for clients are in the client directory. A + typical client requires jboss-client.jar, + jbosssx-client.jar, jaas.jar, jnp-client.jar, ejb.jar, and + jta-spec1_0_1.jar. If you client is not running JDK 1.3, it + will require jndi.jar as well. If you are going to be using + JBossMQ JMS provider you will also need jbossmq-client.jar. + </para> + </listitem> + </itemizedlist> + + <figure id = "directories.jpg"> + <title>Distribution directory layout</title> + <mediaobject> + <imageobject> + <imagedata fileref = "images/directories.png"/> + </imageobject> + </mediaobject> + </figure> + </para> + </section> + + <section id="configuration-files"> + <title>Configuration files</title> + <para>Default Jboss configuration set is located in the conf directory. + JBoss allows possibility of more than one configuration set which are easily created + and maintained. All you have to do is to copy all the files from the default + configuration and place under a new directory in conf. For example, "myjboss" + configuration (directory) would contain the same files as default + configuration but with possibly altered certain setting. When invoking JBoss through + platform-dependent scripts just pass configuration name as a paramater. For example + + <command> + run.bat myjboss + </command> + </para> + + <para>There are a number of configuration files for JBoss. The contents + of each are give here: + </para> + <itemizedlist> + <listitem> + <para>jboss.conf</para> + + <para> + Configuration file jboss.conf contains only those core services that are + necessary to achieve initial "bootstrap" of JBoss . Among these services + are for example , classpath extension inclusion mechanism shown in + <xref linkend="jboss.conf-excerpt"/> , logging ,configuration service etc. </para> + + <figure id="jboss.conf-excerpt"> + <title>Excerpt from jboss.conf</title> + <programlisting><![CDATA[ +<MLET CODE="org.jboss.util.ClassPathExtension" ARCHIVE="jboss.jar" CODEBASE="../../lib/ext/"> + <ARG TYPE="java.lang.String" VALUE="../../log/"> +</MLET> ]]> + </programlisting> + </figure> + + + <para> + The syntax used is a standard MLET syntax for JMX MBeans (refer to + <ulink url="http://java.sun.com/products/JavaManagement">JMX specification</ulink> for more details)</para> + + <para> + Usually you would never have to change this file. </para> + </listitem> + + + <listitem> + + <para>jboss.jcml</para> + + <para> + This file lists all JMX MBeans (services) that are going to be included + in running instance of JBoss. Notice that contrary to the MLET syntax, + this file contains well-formed XML.</para> + + <para> + The need for deviation from MLET syntax is justified since MLET + doesn't allow named parameters, but rather only TYPE-VALUE pairs. Having only + TYPE-VALUE pairs easily leads to mismatching MBean parameters problems. + </para> + + <para> + jboss.jcml syntax allows named parameters to be used in MBean instantiation + directives and is as such mush easier to use. For example, + <xref linkend="jboss.jcml-example-entry"/> shows MBean + element for creating and including MailService in JBoss. </para> + + <para> + <figure id="jboss.jcml-example-entry"> + <title>Excerpt from jboss.jcml</title> + <programlisting><![CDATA[ +<mbean code="org.jboss.mail.MailService" name="DefaultDomain:service=Mail"> + <attribute name="JNDIName">Mail</attribute> + <attribute name="ConfigurationFile">mail.properties</attribute> + <attribute name="User">user_id</attribute> + <attribute name="Password">password</attribute> +</mbean> ]]> + </programlisting> + </figure> + </para> + + <para> + In a nutshell: + <itemizedlist> + <listitem><para>code attribute of the mbean element specifies which class to + load and instantiate</para> + </listitem> + <listitem><para>name attribute of the mbean element specifies unique name of + the MBean under certain JMX domain</para> + </listitem> + + <listitem><para>attribute child elements of the mbean element specify + according attributes of the instatiated MBean. Values of the attributes + can be any Java primitives and String object.</para></listitem> + </itemizedlist> + + </para> + </listitem> + + <listitem> + <para>jboss.dependencies</para> + <para> + For the reason of simplicity and ease of configuration JBoss's DependancyManager + was deprecated in 2.1 release. </para> + <para> + Now all MBeans listed in jboss.jcml have "vertical" dependency on each other. + For example, JNDI provider is required for DataSource wrappers since + DataSource wrapper has to store reference to itself in JNDI. Thus JNDI provider + MBean has to be listed before DataSource wrapper.</para> + </listitem> + + + <listitem> + <para>jboss-auto.jcml</para> + + <para> + JBoss has a very powerful feature of being able to record runtime snapshot + of all of it's running MBeans including their attributes and then later reproduce + that snapshot in another JBoss instance. </para> + + <para> + When such snapshot is taken it is recorded in xml format in jboss-auto.jcml file. + </para> + + <para> + Consider the following scenario:</para> + <para> + Administrator takes a running JBoss instance, adds a few MBeans, modifies attributes + of other few MBeans , saves configuration and finally gracefully shuts + JBoss.</para> + <para> + Next time when JBoss is started all dynamically added Mbeans from previous + run are recreated and their attributes set. Jboss also resets any other modified + attributes no matter if MBean was added dynamically(runtime) or statically (through + jboss.jcml).</para> + + <para> + Dependency between jboss.jcml and jboss-auto.jcml</para> + + <para> + If you are using both jboss.jcml and jboss-auto.jcml capabilities you have + to note the following. If there is a need to remove any of the MBeans listed in + jboss.jcml you also have to remove it from jboss-auto.jcml (if such is listed in jboss-auto.jcml ) to + achieve the desired effect.</para> + + <para> + You also have an option not to use the advanced feature of jboss runtime snapshots, + in which case you can safely delete jboss-auto.jcml file without affecting + JBoss. + In this case you won't have an option of recording any changes to MBeans made in runtime. + </para> + + </listitem> + + + <listitem> + + <para>mail.properties</para> + <para> + JBoss , according to EJB spec provides mail resource access utilizing standard JavaMail APIs. + This file specifies provider properties, i.e where to find smtp server, pop server, as well + as other mail related configuration.</para> + + <para> + Note that you are allowed to have multiple set of configurations by having multiple mail.properties + files. All you have to do is to specify additional MailService mbeans with different "ConfigurationFile" + attributes in your jboss.jcml file.</para> + + </listitem> + + <listitem> + <para> + jnp.properties and jndi.properties</para> + + <para> + These two files are JNDI related. The first one contains properties of the JBoss's + JNDI provider implementation - JNP while jndi.properties specifies properties for JNDI + clients. </para> + + <para> + JNDI clients can specify properties listed in jndi.properties and drop + jndi.properties file anywhere in their classpath. This way you don't have to + specify these properties in the actual code which leads to + greater code portability. Note that you have to change java.naming.provider.url=localhost + property-value pair if you are using clients that reside on the machine + other than the JBoss server itself.</para> + + </listitem> + + + <listitem> + <para> + standardjaws.xml</para> + + <para> + Represents a default configuration file for JBossCMP engine. It contains jndi name of a default + DataSource , per database Object -jdbc- sql mappings , default CMP entity beans settings etc. For more + details see </para> + </listitem> + + <listitem> + <para> + server.policy</para> + <para> + The default security policy for the JBoss server. Currently, this is set to allow all permissions.</para> + </listitem> + </itemizedlist> + </section> </chapter> + 1.5 +339 -358 manual/src/docs/jdbc-database.xml Index: jdbc-database.xml =================================================================== RCS file: /cvsroot/jboss/manual/src/docs/jdbc-database.xml,v retrieving revision 1.4 retrieving revision 1.5 diff -u -r1.4 -r1.5 --- jdbc-database.xml 2001/03/30 02:30:43 1.4 +++ jdbc-database.xml 2001/04/01 00:30:12 1.5 @@ -1,127 +1,213 @@ <?xml version="1.0" encoding="UTF-8"?> <chapter id="jdbc"> - <title>JDBC/Database configuration</title> - <para>Author:<author> - <firstname>Aaron</firstname> + <title>JDBC</title> + <para> + <author> + <firstname>Aaron</firstname> <surname>Mulder</surname> - </author> - <email>[EMAIL PROTECTED]</email> + </author> + <email>[EMAIL PROTECTED]</email> </para> + + + <section> <title>Introduction</title> <section> <title>Data Sources</title> - <para>One of the most common requirements is to create one or more data sources for your EJBs. You must create a data source for CMP entity beans, and it is -the recommended way to interact with a database for BMP entity beans and session beans.</para> - <para>JBoss data sources provide database connection pooling. This means that when your application closes a connection, it is not really closed, just returned -to the "ready" state. The next time your application requests a database connection, it may reuse the same connection. This saves you the overhead of -opening new database connections for every request, and since normal web applications use connections very often but for a very short period of time, -the savings can be significant. However, there are some new issues raised such as the fact that a database connection that is left unused in the pool for a -long period of time may timeout. The JBoss pools have a number of configuration parameters to address issues like this.</para> - <para>Supported Databases - -JBoss supports any database with a JDBC driver. We recommend pure java drivers (type 3 or type 4), and specifically suggest you do not use the -JDBC-ODBC bridge (type 1).</para> + <para>One of the most common requirements is to create one or more data sources for your EJBs. You + must create a data source for CMP entity beans, and it is the recommended way to interact with a + database for BMP entity beans and session beans. + </para> + <para>JBoss data sources provide database connection pooling. This means that when your application + closes a connection, it is not really closed, just returned to the "ready" state. The next time your + application requests a database connection, it may reuse the same connection. This saves you the overhead + of opening new database connections for every request, and since normal web applications use connections + very often but for a very short period of time, the savings can be significant. However, there are some + new issues raised such as the fact that a database connection that is left unused in the pool for a long + period of time may timeout. The JBoss pools have a number of configuration parameters to address issues + like this.</para> + <para>Supported Databases </para> + <para>JBoss supports any database with a JDBC driver. We recommend pure java drivers (type 3 or type 4), + and specifically suggest you do not use the JDBC-ODBC bridge (type 1).</para> </section> <section> <title>Mappings Available for CMP Entities</title> - <para>If we have not worked with a database product before we may need to work with you to generate a type mapping if you plan to use container managed -persistence. The mappings we have tested extensively include PostgreSQL, InstantDB, Hypersonic SQL, Oracle 7, Oracle 8, Sybase, DB2, and -InterBase. Additional contributed mappings include PointBase, SOLID, mySQL, MS SQL Server, and DB2/400. If you would like to support CMP for -another DBMS, or have a working mapping to share, please contact the JBoss Mailing List.</para> + <para>If we have not worked with a database product before we may need to work with you to generate a + type mapping if you plan to use container managed persistence. The mappings we have tested extensively + include PostgreSQL, InstantDB, Hypersonic SQL, Oracle 7, Oracle 8, Sybase, DB2, and InterBase. + Additional contributed mappings include PointBase, SOLID, mySQL, MS SQL Server, and DB2/400. If you + would like to support CMP for another DBMS, or have a working mapping to share, please contact + the JBoss Mailing List. + </para> </section> - <section> + <section id="installing-jdbc-driver"> <title>Installing JDBC Drivers</title> - <para>To install a JDBC driver, it must be distributed as one or more ZIP or JAR files. You should copy those files to the <filename>lib/ext</filename> directory under your JBoss -installation directory. In addition, you need to change one line in the file jboss.properties located in the conf directory. Find the property named -jdbc.drivers, and add your product's driver class name to the list of drivers. The drivers in the list should be separated by commas. Here's an -example line, listing drivers for Oracle and Sybase:<programlisting>jdbc.drivers=oracle.jdbc.driver.OracleDriver,com.sybase.jdbc2.jdbc.SybDriver</programlisting> - </para> - <para>The next time you start JBoss, you should see output like the following listing each driver that was loaded. If instead you see an error for the driver (also -shown below), make sure that you installed the required ZIPs and/or JARs to the <filename>lib/ext</filename> directory.<computeroutput> -[JDBC] Loaded JDBC-driver:oracle.jdbc.driver.OracleDriver + <para>To install a JDBC driver, it must be distributed as one or more zip or jar files. </para> + + <orderedlist> + <listitem> + <para>Copy driver jar or zip files to the <link linkend="lib-and-libext-dir">lib/ext</link> directory + in your JBoss distribution. + </para> + </listitem> + <listitem> + <para>Add intruction to load driver in jboss.jcml file</para> + + <para> For example <xref linkend="jdbc-driver-inclusion"/> shows how JBoss two default + database drivers are included. If you are using database other than default, add your driver class name + to the list of drivers in this mbean element of your jboss.jcml. </para> + + <figure id="jdbc-driver-inclusion"> + <title>Default driver loading instruction from jboss.jcml</title> + <programlisting><![CDATA[ +<mbean code="org.jboss.jdbc.JdbcProvider" name="DefaultDomain:service=JdbcProvider"> + <attribute name="Drivers">org.hsql.jdbcDriver,org.enhydra.instantdb.jdbc.idbDriver</attribute> +</mbean> + ]]> + </programlisting> + </figure> + + + <para>If, for instance, you are using Oracle database and don't want to use two default databases , then only + include reference to your Oracle driver like shown in <xref linkend="jdbc-driver-inclusion2"/></para> + + <figure id="jdbc-driver-inclusion2"> + <title>Oracle driver loading instruction from jboss.jcml</title> + <programlisting><![CDATA[ +<mbean code="org.jboss.jdbc.JdbcProvider" name="DefaultDomain:service=JdbcProvider"> + <attribute name="Drivers">oracle.jdbc.driver.OracleDriver</attribute> +</mbean> + ]]> + </programlisting> + </figure> + + <para> + If you are using option of using more than one driver don't include more that one + org.jboss.jdbc.JdbcProvider mbean. All drivers should be listed in one org.jboss.jdbc.JdbcProvider mbean. + </para> + </listitem> + </orderedlist> + + + <para>The next time you start JBoss, you should see output like the following listing each driver that was loaded. + If instead you see an error for the driver (also shown below), make sure that you installed the required ZIPs and/or + JARs to the <link linkend="lib-and-libext-dir">lib/ext</link> directory.</para> + <para> + <programlisting> +[JDBC] Loaded JDBC-driver:oracle.jdbc.driver.OracleDriver [JDBC] Could not load driver:com.sybase.jdbc2.jdbc.SybDriver -</computeroutput> + </programlisting> </para> </section> </section> <section> - <title>Creating DB Connection Pools</title> - <para>Once your JDBC driver is installed, you can add one or more connection pools that use it. Any number of EJBs may share one connection pool, but you -may want to create multiple pools for a number of reasons. For example, you may want a dedicated pool for an application that requires very high reponse -time, while other applications share a pool of limited size.</para> - <para>To add a pool, you need to add sections to jboss.conf and jboss.jcml, both of which can be found in the conf directory.</para> + <title>Minerva Pools</title> + <para>Once your JDBC driver is installed, you can add one or more connection pools that use it. + Any number of EJBs may share one connection pool, but you may want to create multiple pools for + a number of reasons. For example, you may want a dedicated pool for an application that requires + very high reponse time, while other applications share a pool of limited size.</para> + + <para>To add a pool, you need to add sections to jboss.conf and jboss.jcml, both of which can be + found in the conf directory.</para> <section> <title>The JDBC 2.0 Optional Package</title> - <para>Before we configure the pool, we need to take a brief detour into specifications. The JDBC API distributed with JDKs 1.1 through 1.3 defines a transaction -for every connection. It is not possible to have more than one connection in a transaction, or to use a single connection for more than one transaction at a -time.</para> - <para>Though perfectly adequate for normal use, this falls short of the functionality mandated by the J2EE specification for enterprise applications. In the J2EE -environment, beans are allowed to use multiple data source, which may include messaging services, legacy systems, and other non-database sources. -Further, all work against all data sources can be committed or rolled back together. This means that a EJBs must be able to use more than one data source -per transaction, and in particular more than one connection per transaction.</para> - <para>Thus was born the JDBC 2.0 Optional Package (the API formerly known as the JDBC 2.0 Standard Extension). This API defines the javax.sql package, -including interfaces such as DataSource, XADataSource, and XAConnection. Some drivers support this already, though most do not. And some that do -support it do not do a very good job yet (some Oracle implementations, in particular, neglect important event notifications).</para> - <para>You must determine whether your driver supports the JDBC 2.0 Optional Package in order to configure JBoss appropriately. If it does not, JBoss will -simulate it so that your EJBs will operate appropriately, but there are two important restrictions: - - <orderedlist> - <listitem> - <para>If you request more than one connection from a DataSource in the context of the same transaction, JBoss will return the same connection every - time. This is so changes made by one bean will be visible to other beans operating in the same transaction.</para> - </listitem> - <listitem> - <para>The connections cannot determine ahead of time whether it is possible for them to commit, so they cannot participate fully in the two-phase - commit protocol used to commit multiple data sources. This means that if there's a problem with one of the data sources, some may commit and - others may rollback. This is why we want all DB vendors to fully support the JDBC 2.0 Optional Package.</para> - </listitem> - </orderedlist> + <para>Before we configure the pool, we need to take a brief detour into specifications. + The JDBC API distributed with JDKs 1.1 through 1.3 defines a transaction for every connection. + It is not possible to have more than one connection in a transaction, or to use a single connection + for more than one transaction at a time.</para> + <para>Though perfectly adequate for normal use, this falls short of the functionality mandated + by the J2EE specification for enterprise applications. In the J2EE environment, beans are allowed + to use multiple data source, which may include messaging services, legacy systems, and other non-database sources. + Further, all work against all data sources can be committed or rolled back together. This means that + a EJBs must be able to use more than one data source per transaction, and in particular more than + one connection per transaction. </para> + <para>Thus was born the JDBC 2.0 Optional Package (the API formerly known as the JDBC 2.0 Standard Extension). + This API defines the javax.sql package, including interfaces such as DataSource, XADataSource, and XAConnection. + Some drivers support this already, though most do not. And some that do support it do not do a very good job + yet (some Oracle implementations, in particular, neglect important event notifications). + </para> + <para>You must determine whether your driver supports the JDBC 2.0 Optional Package in order to + configure JBoss appropriately. If it does not, JBoss will simulate it so that your EJBs will operate + appropriately, but there are two important restrictions: + <orderedlist> + <listitem> + <para>If you request more than one connection from a DataSource in the context of the same + transaction, JBoss will return the same connection every time. This is so changes made by one + bean will be visible to other beans operating in the same transaction.</para> + </listitem> + <listitem> + <para>The connections cannot determine ahead of time whether it is possible for them to commit, so + they cannot participate fully in the two-phase commit protocol used to commit multiple data sources. + This means that if there's a problem with one of the data sources, some may commit and + others may rollback. This is why we want all DB vendors to fully support the JDBC 2.0 Optional Package. + </para> + </listitem> + </orderedlist> + </para> </section> <section> - <title>Configuration File Changes</title> - <para>First, you need to add a section to jboss.conf for each pool. This declares a JMX service (an MBean) for the the pool. There's a sample below. It -does not matter where in the file you add these lines; the startup order is not dependent on the order of services in the file. You should make the following -changes to customize your pool: - - <itemizedlist> - <listitem> - <para>In the first line, you should replace "vendor.jar" with the name of the ZIPs or JARs you added to the <filename>lib/ext</filename> directory when you configured - the driver</para> - </listitem> - <listitem> - <para> Enter the name you want to use for this pool instead of "PoolName" for the first argument.</para> - </listitem> - <listitem> - <para>If your driver supports the JDBC 2.0 Optional Package, you should use the class name of the vendor's XADataSource implementation for the - second argument. Otherwise, use the JBoss class name shown.</para> - </listitem> - </itemizedlist> + <title>Minerva configuration</title> + <para>After you have successfully installed your JDBC driver as described in <xref linkend="installing-jdbc-driver"/> + , you are ready to define pool settings. All pool entries are specified in jboss.jcml file. Take a look at + <xref linkend="minerva-configuration-example"/> pool configuration example. It defines , in jboss.jcml, pool name "DefaultDS" + that uses underlying Hypersonic database. + + All database pool attributes are discussed in details below.</para> + + <para>Note that "PoolName" attribute defines jndi name under which this DataSource is going to be + bound in java: namespace. Therefore if we used pool defined in <xref linkend="minerva-configuration-example"/> + it would be bound under java:/DefaultDS. + </para> + <para> + <figure id="minerva-configuration-example"> + <title>Pool configuration MBean example</title> <programlisting><![CDATA[ -<MLET CODE="org.jboss.jdbc.XADataSourceLoader" ARCHIVE="jboss.jar,vendor.jar" CODEBASE="../lib/ext/"> - <ARG TYPE="java.lang.String" VALUE="PoolName"> - <ARG TYPE="java.lang.String" VALUE="org.jboss.minerva.xa.XADataSourceImpl"> -</MLET> -]]></programlisting> +<mbean code="org.jboss.jdbc.XADataSourceLoader" name="DefaultDomain:service=XADataSource,name=DefaultDS"> + <attribute name="PoolName">DefaultDS</attribute> + <attribute name="DataSourceClass">org.opentools.minerva.jdbc.xa.wrapper.XADataSourceImpl</attribute> + <attribute name="Properties"></attribute> + <attribute name="URL">jdbc:HypersonicSQL:hsql://localhost:1476</attribute> + <attribute name="GCMinIdleTime">1200000</attribute> + <attribute name="JDBCUser">sa</attribute> + <attribute name="MaxSize">10</attribute> + <attribute name="Password" /> + <attribute name="GCEnabled">false</attribute> + <attribute name="InvalidateOnError">false</attribute> + <attribute name="TimestampUsed">false</attribute> + <attribute name="Blocking">true</attribute> + <attribute name="GCInterval">120000</attribute> + <attribute name="IdleTimeout">1800000</attribute> + <attribute name="IdleTimeoutEnabled">false</attribute> + <attribute name="LoggingEnabled">false</attribute> + <attribute name="MaxIdleTimeoutPercent">1.0</attribute> + <attribute name="MinSize">0</attribute> +</mbean>]]> + </programlisting> + </figure> </para> - <para>Second, you must add a section to jboss.jcml for each pool. This declares all the parameters for the pool, such as the size, username and password -to use, etc. The parameters will be covered in detail next. The block you need to add is shown below. You only need to add lines for the parameters you -want to override - anything you want to leave as the default you can omit. JBoss will add all those lines in when it runs, so you can see the default values. -The example below is a simple configuration with only the JDBC URL, user name, and password. The one thing you need to change besides the -parameter names and values is the pool name in the first line:<programlisting><![CDATA[ -<mbean name="DefaultDomain:service=XADataSource,name=PoolName"> - <attribute name="URL">jdbc:oracle:thin:@serverhostname:1521:ORCL</attribute> - <attribute name="JDBCUser">scott</attribute> - <attribute name="Password">tiger</attribute> + <para>You are not required to specify all pool parameters - Minerva pool is going to provide defaults. + + The minimum required PoolName, DataSourceClass, JDBC URL, user name, and password: + <figure id="minerva-configuration-example2"> + <title>Pool configuration MBean example for Oracle</title> + <programlisting><![CDATA[ +<mbean code="org.jboss.jdbc.XADataSourceLoader" name="DefaultDomain:service=XADataSource,name=OracleDS"> + <attribute name="PoolName">OracleDS</attribute> + <attribute name="DataSourceClass">org.opentools.minerva.jdbc.xa.wrapper.XADataSourceImpl</attribute> + <attribute name="URL">jdbc:oracle:thin:@serverhostname:1521:ORCL</attribute> + <attribute name="JDBCUser">scott</attribute> + <attribute name="Password">tiger</attribute> </mbean> -]]></programlisting> + ]]></programlisting> + </figure> </para> <section> <title>Connection Pool Parameters</title> <para>Here is the list of possible parameters for each pool's entry in jboss.jcml. Again, after you run -JBoss once with your new pool, it will add entries for all of these to jboss.jcml, using the default -values for anything you didn't specify.</para> + JBoss once with your new pool, it will add entries for all of these to jboss.jcml, using the default + values for anything you didn't specify.</para> <table> <title>Connection pool parameters</title> <tgroup cols="3"> @@ -281,26 +367,27 @@ not be able to interoperate.</literallayout> </listitem> <listitem> - <para>lib/ext: classes12.zip</para> + <para><link linkend="lib-and-libext-dir">lib/ext</link>: classes12.zip</para> </listitem> <listitem> <para>jboss.properties</para> <programlisting>jboss.xa.xidclass=oracle.jdbc.xa.OracleXid </programlisting> </listitem> - <listitem> - <para>jboss.conf</para> - <programlisting><![CDATA[ -<MLET CODE="org.jboss.jdbc.XADataSourceLoader" ARCHIVE="jboss.jar" CODEBASE="../lib/ext/"> - <ARG TYPE="java.lang.String" VALUE="OracleDB"> - <ARG TYPE="java.lang.String" VALUE="oracle.jdbc.xa.client.OracleXADataSource"> -</MLET> - ]]></programlisting> + <listitem><para>jboss.jcml</para> + <programlisting><![CDATA[ +<mbean code="org.jboss.jdbc.JdbcProvider" name="DefaultDomain:service=JdbcProvider"> + <attribute name="Drivers">oracle.jdbc.driver.OracleDriver</attribute> +</mbean> + ]]> + </programlisting> </listitem> <listitem> <para>jboss.jcml</para> <programlisting><![CDATA[ -<mbean name="DefaultDomain:service=XADataSource,name=OracleDB"> +<mbean code="org.jboss.jdbc.XADataSourceLoader" name="DefaultDomain:service=XADataSource,name=OracleDB"> + <attribute name="PoolName">OracleDS</attribute> + <attribute name="DataSourceClass">org.opentools.minerva.jdbc.xa.wrapper.XADataSourceImpl</attribute> <attribute name="URL">jdbc:oracle:thin:@host.domain.com:1521:instance</attribute> <attribute name="JDBCUser">scott</attribute> <attribute name="Password">tiger</attribute> @@ -323,31 +410,27 @@ Extreme Float or Double values will cause SQLExceptions </literallayout> </listitem> <listitem> - <para>lib/ext: classes12.zip</para> + <para><link linkend="lib-and-libext-dir">lib/ext</link>: classes12.zip</para> </listitem> - <listitem> - <para>jboss.properties</para> - <programlisting>jdbc.drivers=oracle.jdbc.driver.OracleDriver - </programlisting> - </listitem> - <listitem> - <para> jboss.conf </para> - <programlisting><![CDATA[ -<MLET CODE="org.jboss.jdbc.XADataSourceLoader" ARCHIVE="jboss.jar" CODEBASE="../lib/ext/"> - <ARG TYPE="java.lang.String" VALUE="OracleDB"> - <ARG TYPE="java.lang.String" VALUE="org.jboss.minerva.xa.XADataSourceImpl"> -</MLET> -]]></programlisting> + <listitem><para>jboss.jcml</para> + <programlisting><![CDATA[ +<mbean code="org.jboss.jdbc.JdbcProvider" name="DefaultDomain:service=JdbcProvider"> + <attribute name="Drivers">oracle.jdbc.driver.OracleDriver</attribute> +</mbean> + ]]> + </programlisting> </listitem> <listitem> <para>jboss.jcml</para> <programlisting><![CDATA[ -<mbean name="DefaultDomain:service=XADataSource,name=OracleDB"> - <attribute name="URL">jdbc:oracle:thin:@host.domain.com:1521:instance</attribute> - <attribute name="JDBCUser">scott</attribute> - <attribute name="Password">tiger</attribute> +<mbean code="org.jboss.jdbc.XADataSourceLoader" name="DefaultDomain:service=XADataSource,name=OracleDB"> + <attribute name="PoolName">OracleDS</attribute> + <attribute name="DataSourceClass">org.opentools.minerva.jdbc.xa.wrapper.XADataSourceImpl</attribute> + <attribute name="URL">jdbc:oracle:thin:@host.domain.com:1521:instance</attribute> + <attribute name="JDBCUser">scott</attribute> + <attribute name="Password">tiger</attribute> </mbean> -]]></programlisting> + ]]></programlisting> </listitem> <listitem> <para>CMP Type Mapping Names (for jaws.xml): Oracle7 and Oracle8 </para> @@ -358,30 +441,27 @@ <para>Hypersonic</para> <itemizedlist> <listitem> - <para>lib/ext: hsql.jar</para> + <para><link linkend="lib-and-libext-dir">lib/ext</link>: hsql.jar</para> </listitem> - <listitem> - <para>jboss.properties</para> - <programlisting>jdbc.drivers=org.hsql.jdbcDriver - </programlisting> - </listitem> - <listitem> - <para> jboss.conf </para> - <programlisting><![CDATA[ -<MLET CODE="org.jboss.jdbc.XADataSourceLoader" ARCHIVE="jboss.jar" CODEBASE="../lib/ext/"> - <ARG TYPE="java.lang.String" VALUE="Hypersonic"> - <ARG TYPE="java.lang.String" VALUE="org.jboss.minerva.xa.XADataSourceImpl"> -</MLET> -]]></programlisting> + <listitem><para>jboss.jcml</para> + <programlisting><![CDATA[ +<mbean code="org.jboss.jdbc.JdbcProvider" name="DefaultDomain:service=JdbcProvider"> + <attribute name="Drivers">org.hsql.jdbcDriver</attribute> +</mbean> + ]]> + </programlisting> </listitem> + <listitem> <para>jboss.jcml</para> <programlisting><![CDATA[ -<mbean name="DefaultDomain:service=XADataSource,name=Hypersonic"> - <attribute name="URL">jdbc:HypersonicSQL:hsql://localhost</attribute> - <attribute name="JDBCUser">sa</attribute> +<mbean code="org.jboss.jdbc.XADataSourceLoader" name="DefaultDomain:service=XADataSource,name=Hypersonic"> + <attribute name="PoolName">HypersonicDS</attribute> + <attribute name="URL">jdbc:HypersonicSQL:hsql://localhost</attribute> + <attribute name="DataSourceClass">org.opentools.minerva.jdbc.xa.wrapper.XADataSourceImpl</attribute> + <attribute name="JDBCUser">sa</attribute> </mbean> -]]></programlisting> + ]]></programlisting> </listitem> <listitem> <para>CMP Type Mapping Names (for jaws.xml): Hypersonic SQL </para> @@ -402,31 +482,27 @@ implementation. To use the "net" driver, you must run the "db2jstrt [port]" tool on your DB server. </literallayout> </listitem> <listitem> - <para>lib/ext: db2java.zip</para> + <para><link linkend="lib-and-libext-dir">lib/ext</link>: db2java.zip</para> </listitem> <listitem> - <para>jboss.properties</para> - <programlisting>jdbc.drivers=COM.ibm.db2.jdbc.net.DB2Driver - </programlisting> - </listitem> - <listitem> - <para> jboss.conf </para> - <programlisting><![CDATA[ -<MLET CODE="org.jboss.jdbc.XADataSourceLoader" ARCHIVE="jboss.jar" CODEBASE="../lib/ext/"> - <ARG TYPE="java.lang.String" VALUE="DB2"> - <ARG TYPE="java.lang.String" VALUE="org.jboss.minerva.xa.XADataSourceImpl"> -</MLET> -]]></programlisting> + <para>jboss.jcml</para> + <programlisting><![CDATA[ +<mbean code="org.jboss.jdbc.JdbcProvider" name="DefaultDomain:service=JdbcProvider"> + <attribute name="Drivers">COM.ibm.db2.jdbc.net.DB2Driver</attribute> +</mbean>]]> + </programlisting> </listitem> - <listitem> + <listitem> <para>jboss.jcml</para> - <programlisting><![CDATA[ -<mbean name="DefaultDomain:service=XADataSource,name=DB2"> - <attribute name="URL">jdbc:db2://host.domain.com:port/database</attribute> - <attribute name="JDBCUser">username</attribute> - <attribute name="Password">password</attribute> + <programlisting><![CDATA[ +<mbean code="org.jboss.jdbc.XADataSourceLoader" name="DefaultDomain:service=XADataSource,name=DB2"> + <attribute name="DataSourceClass">org.opentools.minerva.jdbc.xa.wrapper.XADataSourceImpl</attribute> + <attribute name="PoolName">DB2DS</attribute> + <attribute name="URL">jdbc:db2://host.domain.com:port/database</attribute> + <attribute name="JDBCUser">username</attribute> + <attribute name="Password">password</attribute> </mbean> -]]></programlisting> + ]]></programlisting> </listitem> <listitem> <para>CMP Type Mapping Names (for jaws.xml):DB2 </para> @@ -436,32 +512,29 @@ <listitem> <para>DB2/400</para> <itemizedlist> - <listitem> - <para>lib/ext: jt400.jar </para> - </listitem> - <listitem> - <para>jboss.properties</para> - <programlisting>jdbc.drivers=com.ibm.as400.access.AS400JDBCDriver - </programlisting> - </listitem> <listitem> - <para> jboss.conf </para> - <programlisting><![CDATA[ -<MLET CODE="org.jboss.jdbc.XADataSourceLoader" ARCHIVE="jboss.jar" CODEBASE="../lib/ext/"> - <ARG TYPE="java.lang.String" VALUE="AS400"> - <ARG TYPE="java.lang.String" VALUE="org.jboss.minerva.xa.XADataSourceImpl"> -</MLET> -]]></programlisting> + <para><link linkend="lib-and-libext-dir">lib/ext</link> : jt400.jar </para> </listitem> + <listitem><para>jboss.jcml</para> + <programlisting><![CDATA[ +<mbean code="org.jboss.jdbc.JdbcProvider" name="DefaultDomain:service=JdbcProvider"> + <attribute name="Drivers">com.ibm.as400.access.AS400JDBCDriver</attribute> +</mbean> + ]]> + </programlisting> + </listitem> <listitem> <para>jboss.jcml</para> <programlisting><![CDATA[ -<mbean name="DefaultDomain:service=XADataSource,name=AS400"> - <attribute name="URL">jdbc:as400://hostname</attribute> - <attribute name="JDBCUser">user</attribute> - <attribute name="Password">pw</attribute> +<mbean code="org.jboss.jdbc.XADataSourceLoader" name="DefaultDomain:service=XADataSource,name=AS400"> + <attribute name="DataSourceClass">org.opentools.minerva.jdbc.xa.wrapper.XADataSourceImpl</attribute> + <attribute name="PoolName">AS400DS</attribute> + <attribute name="URL">jdbc:as400://hostname</attribute> + <attribute name="JDBCUser">username</attribute> + <attribute name="Password">password</attribute> </mbean> -]]></programlisting> + ]]></programlisting> + </listitem> <listitem> <para>CMP Type Mapping Names (for jaws.xml):DB2/400 </para> @@ -480,31 +553,27 @@ varbinary or image). We recommend you use int variables instead to avoid this. </literallayout> </listitem> <listitem> - <para>lib/ext:jconn2.jar</para> + <para><link linkend="lib-and-libext-dir">lib/ext</link> :jconn2.jar</para> </listitem> + <listitem><para>jboss.jcml</para> + <programlisting><![CDATA[ +<mbean code="org.jboss.jdbc.JdbcProvider" name="DefaultDomain:service=JdbcProvider"> + <attribute name="Drivers">com.sybase.jdbc2.jdbc.SybDriver</attribute> +</mbean> + ]]> + </programlisting> + </listitem> <listitem> - <para>jboss.properties</para> - <programlisting>jdbc.drivers=com.sybase.jdbc2.jdbc.SybDriver - </programlisting> - </listitem> - <listitem> - <para> jboss.conf </para> - <programlisting><![CDATA[ -<MLET CODE="org.jboss.jdbc.XADataSourceLoader" ARCHIVE="jboss.jar" CODEBASE="../lib/ext/"> - <ARG TYPE="java.lang.String" VALUE="SybaseDB"> - <ARG TYPE="java.lang.String" VALUE="org.jboss.minerva.xa.XADataSourceImpl"> -</MLET> -]]></programlisting> - </listitem> - <listitem> <para>jboss.jcml</para> <programlisting><![CDATA[ -<mbean name="DefaultDomain:service=XADataSource,name=SybaseDB"> - <attribute name="URL">jdbc:sybase:Tds:host.domain.com:4100/database</attribute> - <attribute name="Password">password</attribute> - <attribute name="JDBCUser">username</attribute> +<mbean code="org.jboss.jdbc.XADataSourceLoader" name="DefaultDomain:service=XADataSource,name=SybaseDB"> + <attribute name="DataSourceClass">org.opentools.minerva.jdbc.xa.wrapper.XADataSourceImpl</attribute> + <attribute name="PoolName">SybaseDS</attribute> + <attribute name="URL">jdbc:sybase:Tds:host.domain.com:4100/database</attribute> + <attribute name="JDBCUser">username</attribute> + <attribute name="Password">password</attribute> </mbean> -]]></programlisting> + ]]></programlisting> </listitem> <listitem> <para>CMP Type Mapping Names (for jaws.xml):Sybase</para> @@ -519,33 +588,30 @@ Extreme Java "long" values will cause SQLExceptions and may corrupt the driver so that further actions fail. </literallayout> </listitem> <listitem> - <para>lib/ext:jdbc7.0-1.2.jar</para> + <para><link linkend="lib-and-libext-dir">lib/ext</link>: jdbc7.0-1.2.jar</para> </listitem> - <listitem> - <para>jboss.properties</para> - <programlisting>jdbc.drivers=org.postgresql.Driver - </programlisting> - </listitem> - <listitem> - <para> jboss.conf </para> - <programlisting><![CDATA[ -<MLET CODE="org.jboss.jdbc.XADataSourceLoader" ARCHIVE="jboss.jar" CODEBASE="../lib/ext/"> - <ARG TYPE="java.lang.String" VALUE="PostgresDB"> - <ARG TYPE="java.lang.String" VALUE="org.jboss.minerva.xa.XADataSourceImpl"> -</MLET> -]]></programlisting> + <listitem><para>jboss.jcml</para> + <programlisting><![CDATA[ +<mbean code="org.jboss.jdbc.JdbcProvider" name="DefaultDomain:service=JdbcProvider"> + <attribute name="Drivers">org.postgresql.Driver</attribute> +</mbean> + ]]> + </programlisting> </listitem> <listitem> <para>jboss.jcml</para> <programlisting><![CDATA[ -<mbean name="DefaultDomain:service=XADataSource,name=PostgresDB"> - <attribute name="URL">jdbc:postgresql://host.domain.com/database</attribute> - <attribute name="JDBCUser">postgres</attribute> - <attribute name="Password">foo</attribute> -</mbean> -]]></programlisting> - <para>Note: You must include a user name and password. They can be bogus if your PostgreSQL installation is configured to "trust" the machine - you're coming from, but you can't leave them out.</para> +<mbean code="org.jboss.jdbc.XADataSourceLoader" name="DefaultDomain:service=XADataSource,name=PostgresDB"> + <attribute name="DataSourceClass">org.opentools.minerva.jdbc.xa.wrapper.XADataSourceImpl</attribute> + <attribute name="PoolName">PostgresDS</attribute> + <attribute name="URL">jdbc:postgresql://host.domain.com/database</attribute> + <attribute name="JDBCUser">username</attribute> + <attribute name="Password">password</attribute> +</mbean> + ]]></programlisting> + + <para>Note: You must include a user name and password. They can be bogus if your PostgreSQL installation + is configured to "trust" the machine you're coming from, but you can't leave them out.</para> </listitem> <listitem> <para>CMP Type Mapping Names (for jaws.xml):PostgreSQL </para> @@ -563,31 +629,28 @@ create the table anyway. </literallayout> </listitem> <listitem> - <para>lib/ext:interclient-core.jar</para> - </listitem> - <listitem> - <para>jboss.properties</para> - <programlisting>jdbc.drivers=interbase.interclient.Driver - </programlisting> + <para><link linkend="lib-and-libext-dir">lib/ext</link>:interclient-core.jar</para> </listitem> - <listitem> - <para> jboss.conf </para> - <programlisting><![CDATA[ -<MLET CODE="org.jboss.jdbc.XADataSourceLoader" ARCHIVE="jboss.jar" CODEBASE="../lib/ext/"> - <ARG TYPE="java.lang.String" VALUE="InterBaseDB"> - <ARG TYPE="java.lang.String" VALUE="org.jboss.minerva.xa.XADataSourceImpl"> -</MLET> -]]></programlisting> + <listitem><para>jboss.jcml</para> + <programlisting><![CDATA[ +<mbean code="org.jboss.jdbc.JdbcProvider" name="DefaultDomain:service=JdbcProvider"> + <attribute name="Drivers">interbase.interclient.Driver</attribute> +</mbean> + ]]> + </programlisting> </listitem> + <listitem> <para>jboss.jcml</para> <programlisting><![CDATA[ -<mbean name="DefaultDomain:service=XADataSource,name=InterBaseDB"> - <attribute name="URL">jdbc:interbase://host.domain.com/path/to/database.gdb</attribute> - <attribute name="JDBCUser">sysdba</attribute> - <attribute name="Password">changeme</attribute> +<mbean code="org.jboss.jdbc.XADataSourceLoader" name="DefaultDomain:service=XADataSource,name=InterBaseDB"> + <attribute name="DataSourceClass">org.opentools.minerva.jdbc.xa.wrapper.XADataSourceImpl</attribute> + <attribute name="PoolName">InterBaseDS</attribute> + <attribute name="URL">jdbc:interbase://host.domain.com/path/to/database.gdb</attribute> + <attribute name="JDBCUser">username</attribute> + <attribute name="Password">password</attribute> </mbean> -]]></programlisting> + ]]></programlisting> </listitem> <listitem> <para>CMP Type Mapping Names (for jaws.xml):InterBase</para> @@ -604,44 +667,25 @@ copy the jar to <filename>lib/ext/</filename> </literallayout> </listitem> + <listitem><para>jboss.jcml</para> + <programlisting><![CDATA[ +<mbean code="org.jboss.jdbc.JdbcProvider" name="DefaultDomain:service=JdbcProvider"> + <attribute name="Drivers">org.gjt.mm.mysql.Driver</attribute> +</mbean> + ]]> + </programlisting> + </listitem> <listitem> - <para>jboss.properties</para> - <programlisting>jdbc.drivers=org.gjt.mm.mysql.Driver - </programlisting> - </listitem> - <listitem> - <para> jboss.conf </para> - <programlisting><![CDATA[ -<MLET CODE="org.jboss.jdbc.XADataSourceLoader" ARCHIVE="jboss.jar" CODEBASE="../../lib/ext/"> - <ARG TYPE="java.lang.String" VALUE="mySQL"> - <ARG TYPE="java.lang.String" VALUE="org.jboss.minerva.xa.XADataSourceImpl"> -</MLET> - ]]></programlisting> - </listitem> - <listitem> <para>jboss.jcml</para> <programlisting><![CDATA[ -At least adjust URL, JDBCUser and Password in the following: - -<mbean name="DefaultDomain:service=XADataSource,name=mySQL"> - <attribute name="Properties"></attribute> - <attribute name="URL">jdbc:mysql://host/databasename</attribute> - <attribute name="GCMinIdleTime">1200000</attribute> - <attribute name="JDBCUser">EnterDatabaseUserHere</attribute> - <attribute name="MaxSize">10</attribute> - <attribute name="Password">EnterDatabasePasswordHere</attribute> - <attribute name="GCEnabled">false</attribute> - <attribute name="InvalidateOnError">false</attribute> - <attribute name="TimestampUsed">false</attribute> - <attribute name="Blocking">true</attribute> - <attribute name="GCInterval">120000</attribute> - <attribute name="IdleTimeout">1800000</attribute> - <attribute name="IdleTimeoutEnabled">false</attribute> - <attribute name="LoggingEnabled">false</attribute> - <attribute name="MaxIdleTimeoutPercent">1.0</attribute> - <attribute name="MinSize">0</attribute> -</mbean> -]]></programlisting> +<mbean code="org.jboss.jdbc.XADataSourceLoader" name="DefaultDomain:service=XADataSource,name=mySQLDB"> + <attribute name="DataSourceClass">org.opentools.minerva.jdbc.xa.wrapper.XADataSourceImpl</attribute> + <attribute name="PoolName">mySQLDS</attribute> + <attribute name="URL">jdbc:mysql://host/databasename</attribute> + <attribute name="JDBCUser">username</attribute> + <attribute name="Password">password</attribute> +</mbean> + ]]></programlisting> </listitem> <listitem> <para>CMP Type Mapping Names (for jaws.xml):mySQL</para> @@ -661,32 +705,28 @@ open the datasource in Shared Mode. You can now use Access 97 as editor, viewer, bulk importer/exporter and query builder while JBoss can be stopped and started concurrently. </literallayout> </listitem> - <listitem> - <para>lib/ext:Sun JRE's rt.jar if your not running on a Sun virtual machine, otherwise none </para> - </listitem> - <listitem> - <para>jboss.properties</para> - <programlisting>jdbc.drivers=sun.jdbc.odbc.JdbcOdbcDriver - </programlisting> - </listitem> <listitem> - <para> jboss.conf </para> - <programlisting><![CDATA[ -<MLET CODE="org.jboss.jdbc.XADataSourceLoader" ARCHIVE="jboss.jar" CODEBASE="../lib/ext/"> - <ARG TYPE="java.lang.String" VALUE="JetEngineDB"> - <ARG TYPE="java.lang.String" VALUE="org.jboss.minerva.xa.XADataSourceImpl"> -</MLET> -]]></programlisting> + <para><link linkend="lib-and-libext-dir">lib/ext</link> :Sun JRE's rt.jar if your not running on a Sun virtual machine, otherwise none </para> </listitem> + <listitem><para>jboss.jcml</para> + <programlisting><![CDATA[ +<mbean code="org.jboss.jdbc.JdbcProvider" name="DefaultDomain:service=JdbcProvider"> + <attribute name="Drivers">sun.jdbc.odbc.JdbcOdbcDriver</attribute> +</mbean> + ]]> + </programlisting> + </listitem> <listitem> <para>jboss.jcml</para> <programlisting><![CDATA[ -<mbean name="DefaultDomain:service=XADataSource,name=JetEngineDB"> - <attribute name="URL">jdbc:odbc:ODBC datasource name</attribute> - <attribute name="JDBCUser"></attribute> - <attribute name="Password"></attribute> +<mbean code="org.jboss.jdbc.XADataSourceLoader" name="DefaultDomain:service=XADataSource,name=JetEngineDB"> + <attribute name="DataSourceClass">org.opentools.minerva.jdbc.xa.wrapper.XADataSourceImpl</attribute> + <attribute name="PoolName">InterBaseDS</attribute> + <attribute name="URL">jdbc:odbc:ODBC datasource name</attribute> + <attribute name="JDBCUser">username</attribute> + <attribute name="Password">password</attribute> </mbean> - ]]></programlisting> + ]]></programlisting> </listitem> <listitem> <para> Note: a default Jet Engine data source has no user and password, therefor the JDBCUser and Password attributes are empty. If you need @@ -699,66 +739,7 @@ </listitem> </itemizedlist> </listitem> - </itemizedlist> - </section> - <section> - <title>Changes for newer versions than 2.0 FINAL</title> - <para>Author:<author> - <firstname>Tobias</firstname> - <surname>Frech</surname> - </author> - </para> - <para>If your are using a newer version of JBoss than 2.0 FINAL then -all you need to configure is the file jboss.jcml in your configuration -directory (probably this is conf/default/). The following points describe -where the information provided for the former different files now should be inserted into <emphasis>jboss.jcml</emphasis>: </para> - <itemizedlist> - <listitem> - <formalpara> - <title>jboss.properties:</title> - <para>In the - <literal><![CDATA[<mbean code="org.jboss.jdbc.JdbcProvider"...>]]></literal> add the - additional driver entry to the comma separated list inside the - <literal><![CDATA[<attribute name="Drivers">]]></literal> tag.</para> - </formalpara> - </listitem> - <listitem> - <formalpara> - <title>jboss.conf:</title> - <para>This information is no longer needed.</para> - </formalpara> - </listitem> - <listitem> - <formalpara> - <title>jboss.jcml:</title> - <para>Find the entry - <programlisting><![CDATA[ -<mbean code="org.jboss.jdbc.XADataSourceLoader" -name="DefaultDomain:service=XADataSource,name=DefaultDS"> -... -</mbean> -]]></programlisting> Either you want to change the default Datasource, then change the - contents of this entry directly, or you want to add a new - datasource. For the second - case create a copy of the whole entry after - the already existing one. - Now change the two occurences of the <quote>DefaultDS</quote> - string (in <quote>name=...</quote> and attribute <quote>PoolName</quote>) to the name you want - to specify for your new datasource. - Also adjust at least the following entries according to your - configuration and to the data given in the example: - <programlisting><![CDATA[ -<attribute name="URL">jdbc:url/with/your/database/name/like/in/example</attribute> -<attribute name="JDBCUser">DatabaseUserNameHere</attribute> -<attribute name="Password">DatabasePasswordHere</attribute> -]]></programlisting> - </para> - </formalpara> - </listitem> </itemizedlist> - <para>All other information contained in the examples like which driver jar -to copy to <filename>lib/ext/</filename> and using which type mapping in your beans -jaws.xml should still be valid.</para> - </section> - </section> + </section> + </section> </chapter> _______________________________________________ Jboss-development mailing list [EMAIL PROTECTED] http://lists.sourceforge.net/lists/listinfo/jboss-development