JBoss是一款非常强大的J2EE应用程序服务器,但是这种强大的功能也带来了复杂性。本文作者Marcus Zarra分析了如何在JBoss中配置多个数据库以及数据源。
配置数据源
JBoss的默认安装过程总共有三种配置选项:所有的(all)、默认的(default)和最小的(minimal)。如果你第一次启动JBoss服务器的时候没有附带任何参数,它自然就运行了默认配置。如果需要运行其它的配置,就必须使用-C参数运行启动脚本,如下所示:
${JBOSS.ROOT}/bin/run.sh -c minimal
用这种方式启动JBoss就指示它使用最小的服务器配置代替默认的配置。但是试图改变JBoss自身的配置的时候,这种技术是非常有用的。你可以在不同的配置中进行修改操作,如果有必要就回滚到默认配置。可是,你在弄混数据源之前,应该把默认配置复制一份,这样就可以安全地操作该副本了(在本文中,我把自己的副本叫作example,因此在服务器目录中有四种配置信息:所有的、默认的、最小的和example)。
在JBoss中改变默认数据源的第一步是配置一个新数据源。JBoss中所有的数据库配置都在你所工作的服务器目录下的deploy目录中定义的(在例子中是 server/example/deploy)。JBoss使用的默认数据库是纯Java数据库Hypersonic。这个数据库的配置信息位于 hsqldb-ds.xml文件中。这个XML配置文件描述了如何连接到Hypersonic数据库。删除这个文件中的所有注释之后,我们得到如下所示的配置信息:
<?xml version="1.0" encoding="UTF-8"?>
<datasources>
<local-tx-datasource>
<jndi-name>DefaultDS</jndi-name>
<connection-url>
jdbc:hsqldb:${jboss.server.data.dir}${/}hypersonic${/}localDB
</connection-url>
<driver-class>org.hsqldb.jdbcDriver</driver-class>
<user-name>sa</user-name>
<password></password>
<min-pool-size>5</min-pool-size>
<max-pool-size>20</max-pool-size>
<idle-timeout-minutes>0</idle-timeout-minutes>
<track-statements/>
<security-domain>HsqlDbRealm</security-domain>
<depends>jboss:service=Hypersonic,database=localDB</depends>
</local-tx-datasource>
<mbean code="org.jboss.jdbc.HypersonicDatabase" name="jboss:service=Hypersonic,database=localDB">
<attribute name="Database">localDB</attribute>
<attribute name="InProcessMode">true</attribute>
</mbean>
</datasources> |
这些参数中的大多数与JDBC的参数相似。根(root)下的第一个部分是<local-tx-datasource>。这是你定义数据库以及如何连接该数据库的位置:驱动程序、URL、用户名和密码。你还定义了连接池中应该有多少个连接。
第二步分包含了两个有趣的参数:
· <security-domain>允许你在login-config.xml文件中而不是在数据源配置信息中配置数据库的用户名和密码。
· <depends>指定该服务只有在它所依赖的服务启动后才启动。该参数允许你编写数据库应该正确运行的服务。<depends>标签还指示JBoss根据需要关闭某些数据项。示例中的这个标记表明mbean必须在数据库启动之前启动,在数据库关闭之后关闭。
在定义好数据源之后,服务器的其它部分就可以使用它了。希望使用这个数据源的任何其它服务或配置都必须使用JNDI名称来引用它。在示例中,JNDI名称是DefaultDS。
添加另一个数据源
为了给JBoss添加另一个数据源,你需要建立一个新的配置文件。我希望建立一个数据源,它连接到我本机的MySQL数据库,并专门使用example数据库。为了达到这个目标,我建立了一个与前面一个类似的配置文件:
<?xml version="1.0" encoding="UTF-8"?>
<datasources>
<local-tx-datasource>
<jndi-name>ExampleDS</jndi-name>
<connection-url>jdbc:mysql://localhost/example</connection-url>
<driver-class>org.gjt.mm.mysql.Driver</driver-class>
<user-name>exampleUser</user-name>
<password>examplePassword</password>
<min-pool-size>5</min-pool-size>
<max-pool-size>20</max-pool-size>
<idle-timeout-minutes>0</idle-timeout-minutes>
<track-statements/>
</local-tx-datasource>
</datasources> |
我建立了名为ExampleDS的数据源,它通过JDBC,使用用户名exampleUser和密码examplePassword连接到一个 MySQL数据库。我还特别指定连接池最少有5个连接,最多不超过20个连接,并且这些连接不能空闲。接着我把这个文件存储为deploy目录中的 example-ds.xml(这个文件的名称并不重要,但是名称一致是有好处的)。
由于我的新数据源不需要、也不依赖于任何其它的模块,配置信息中就没有<depends>标签。同时,由于我在这个文件中指定了使用数据库的用户名和密码,我也不需要参照安全域(security domain)。
使用新的数据源
现在我希望把JBoss中的一些服务移动到我的新数据源上。其原因很简单:尽管Hypersonic是一个良好的数据库,但是它不应该用于产品环境和/或高容量(high-traffic)系统;MySQL和其它几个数据库可以更好地扮演这个角色。
Java消息服务
JBoss服务器中使用数据库的一个最常见的部分是消息服务。服务器的这部分的容量很大,并且应该使用我的新数据源。Deploy/jms目录中的下面两个文件定义了消息服务如何使用数据源:
· hsqldb-jdbc-state-service.xml
· hsqldb-jdbc2-service.xml
首先,我修改了其中一个文件的名称以突出数据库的类型:把hsqldb-jdbc-state-service.xml 更名为mysql-jdbc-state-service.xml。我对mysql-jdbc-state-service.xml文件只作了一点点修改:<depends>标签应该引用新的ExampleDS数据源而不是默认的DefaultDS。这可以确保该数据源在消息服务启动前启动了。我还改变了注释信息,表明我用MySQL数据库代替了默认的Hypersonic数据库。
下一步,应该删除并替换hsqldb-jdbc2- service.xml文件。由于这个文件定义了消息服务如何使用数据库,我们必须在该文件中提供特定数据库的信息。幸运的是,对于大多数通用的数据库来说,JBoss替我们完成了这项工作。我从${JBOSS.ROOT}/doc/examples/jms检索到MySQL特定的文件(mysql- jdbc2-service.xml),并把它放到deploy/jms目录中。我只对该文件作了一个很小的修改,把数据源的名称改变为 ExampleDS,与我在数据源配置文件中指定的JNDI名称相匹配。
最后,为了使消息服务完全转变,我把conf/login-config.xml文件中的DefaultDS改为ExampleDS。这个设置告诉JBoss,与消息服务相关的登录信息也使用example数据库。
调度管理器
如果你要使用JBoss的调度管理器和它的数据库调度程序(scheduler),你也必须指向新的数据源。该配置文件位于 deploy/schedule-manager-service.xml。搜索这个文件中的DefaultDS,找到需要重新配置的mbean,我把该 mbean的DataSourceProperty(数据源属性)指向ExampleDS,替代了指向DefaultDS。
请注意,一定要检查一个SQL语句,以确保使用你的数据库工作正常。
默认的容器控制(Container-Managed)持续性
为了改变默认的维持bean(bean-persistence)的数据库,你必须更新conf/standardjbosscmp-jdbc.xml 文件,把DefaultDS修改为ExampleDS。此外,你还必须更新<type-mapping>标签以匹配新数据库;这个标签的值位于该文件中更深入的地方。对于本文的例子,我把这个值改变为mySQL。
你还应该采用相同的方法更新conf/standardjaws.xml文件:把DefaultDS改变为ExampleDS,并更新<type-mapping>标签,以反映使用的数据库的类型。
包装
为了确保所有部分都转换到了新数据源上,请删除deploy/hsqldb-ds.xml文件并启动JBoss。如果产生了任何错误,就说明你遗漏了某些配置文件。
总之,我发现使用内建的Hypersonic数据库进行开发比管理外部的数据库带来的痛苦要少一些。但是在产品环境中,Hypersonic是不适合任务需要的。把JBoss连接到更加牢固的数据库对于维护服务器的性能大有帮助。
作者:http://blog.csdn.net/szmarx/
分享到:
相关推荐
"在JBoss中配置多个数据库和数据源" 在JBoss中配置多个数据库和数据源是非常复杂的,因为JBoss是一款非常强大的J2EE应用程序服务器。配置多个数据库和数据源需要了解JBoss的配置选项和数据源的配置信息。 首先,...
jboss配置数据源需要经过多个步骤,包括复制oracle的JDBC驱动程序、修改oracle-ds.xml配置文件、修改standardjaws.xml或jaws.xml配置文件、修改jbosscmp-jdbc.xml配置文件和修改login-config.xml文件。只有经过这些...
在JBoss上配置Mysql数据源是一个常见的操作,主要用于整合JBoss与Mysql数据库,以便于应用服务器能够管理和操作数据库资源。以下是根据JBoss7和Mysql5.1的配置所涉及的知识点: 1. 数据源的定义与重要性:数据源是...
在JBoss 4.0环境下配置MySQL数据源的步骤涉及多个环节,主要是为了确保JBoss应用服务器能够正确地连接和操作MySQL数据库。以下是对每个步骤的详细解释: **步骤一:添加MySQL JDBC驱动** 首先,你需要获取适用于...
总结,配置JBoss以支持EJB2.0和EJB3.0的服务涉及多个层面,包括EJB组件定义、数据源配置、JNDI名称设定以及注解驱动的编程模式。了解和掌握这些配置知识对于在JBoss环境下开发和部署Java企业应用至关重要。
在本教程中,我们将深入探讨如何在Spring MVC 3中结合MyBatis并利用JTA(Java Transaction API)以及JBoss 7.1应用程序服务器来配置多数据源环境。这个配置对于那些需要处理多个数据库或者分布式事务的项目来说至关...
本文将基于《Jboss数据源配置总结[归纳].pdf》的内容,详细介绍如何在JBoss中配置多个数据源以实现主从数据库的操作模式,并探讨在此过程中可能遇到的问题及其解决方案。 #### 二、主从数据库配置概述 在实际应用...
加密后的密码通常会在WebLogic的管理控制台中被加密存储,并且可能存储在多个位置,包括但不限于XML配置文件或特定的配置数据库中。 **3. 解密过程** 对于WebLogic而言,由于加密算法的不同,解密过程也需要采用...
标题 "JBoss加密之SedureIdentityLoginModule(数据源连接方式)" 提及的是在JBoss应用服务器中使用SedureIdentityLoginModule进行身份验证和数据源连接的配置与实现。SedureIdentityLoginModule是JBoss提供的一个安全...
在JBoss 4中,对服务器的管理和配置是至关重要的,特别是对于端口号的更改和数据源的配置,这两者都是确保系统正常运行和优化性能的关键步骤。让我们深入探讨这两个主题。 首先,我们来了解如何修改JBoss 4的默认...
总的来说,配置Eclipse中的JBOSS服务器连接MySQL数据库涉及多个配置文件的修改,包括数据源定义、JMS服务配置、EJB定时器服务、CMP/JDBC标准配置以及UUID生成器的设置。每个步骤都是确保JBOSS能够正确识别和使用...
在 JBoss 中配置数据库涉及到的主要是数据源(DataSource)的设置,这些设置通常位于 JBoss 的部署目录下的配置文件中。 对于 MySQL 数据库的配置,你需要在 `jboss-4.2.3.GA/server/default/lib` 目录下放置 MySQL...
然而,当需要同时连接多个数据库或者不同类型的数据库时,就需要采用第二种方式,即通过应用服务器的数据源方式。此时,`DBConnect/single`的值设为`false`。这种配置下,EOS Server需要与默认的数据源`...
3. **数据源配置**:数据源是JBOSS连接数据库的关键部分。在`server/default/conf/jboss-service.xml`或`server/default/deploy/jboss-jdbc.rar/META-INF/jBoss-service.xml`中,你可以定义数据源。配置包括驱动类名...
2. **数据源配置**:在JBOSS中,数据源的配置位于`standalone.xml`或`domain.xml`的`subsystem`部分。通过`data-source`元素,可以定义连接数据库的URL、用户名、密码、驱动类名等信息。此外,还可以配置连接池参数...
例如,调整EJB的超时设置,修改JNDI绑定,配置数据源,以及设置JMS队列和主题等,都需要对相应的配置文件进行编辑。在`server/default/deploy`目录下,你可以找到如`jboss-service.xml`、`jboss-jdbc.xml`、`jboss-...
在Java Web开发中,JNDI(Java Naming and Directory Interface)是一个重要的标准接口,它允许应用程序查找和使用各种资源,包括数据源(Datasource)。数据源是管理数据库连接的组件,能够有效地处理数据库连接的...
在JBoss应用服务器上配置与Oracle数据库的连接是一项常见的任务,尤其在企业级Java应用程序的部署和运行中。本文将详细讲解如何在JBoss中设置Oracle数据库连接,以确保应用程序能够顺利地与数据库进行交互。 首先,...
4. JBoss Data Virtualization(JDV)工具:允许通过图形界面进行数据虚拟化配置,将多个数据源融合为单一视图,简化数据访问。 5. Maven集成:JBossTools与Maven构建系统紧密集成,使得项目管理和依赖管理更加便捷...