http://www.blogjava.net/sxyx2008/archive/2010/09/08/331382.html
环境:
jboss-4.2.3.GA
spring2.5.6
去jboss官方下载jboss服务器,http://www.jboss.org/jbossas/downloads/。建议下载jboss-4.2.3.GA这个版本的jboss,个人感觉还是这个版本的jboss比较稳定
解压下载下来的jboss压缩文件,笔者解压到D:\jboss-4.2.3.GA
笔者以oracle数据库来说明如何在jboss下配置jndi 以及整合spring
拷贝oracle-ds文件
去D:\jboss-4.2.3.GA\docs\examples\jca目录下拷贝oracle-ds文件到D:\jboss-4.2.3.GA\server\default\deploy目录下改名即可
大致内容如下:
<?xml version="1.0" encoding="UTF-8"?>
<datasources>
<local-tx-datasource>
<jndi-name>KBSDS</jndi-name>
<connection-url>jdbc:oracle:thin:@192.168.4.243:1521:future</connection-url>
<driver-class>oracle.jdbc.driver.OracleDriver</driver-class>
<use-java-context>false</use-java-context>
<user-name>knowledge</user-name>
<password>knowledge</password>
<min-pool-size>5</min-pool-size>
<max-pool-size>20</max-pool-size>
<exception-sorter-class-name>org.jboss.resource.adapter.jdbc.vendor.OracleExceptionSorter</exception-sorter-class-name>
<metadata>
<type-mapping>Oracle9i</type-mapping>
</metadata>
</local-tx-datasource>
</datasources>
jndi-name:不用多说了,当然是为该jndi取一名称这里使用KBSDS
其他几个属性不做过多解释
use-java-context:属性默认为true,如未配置该属性或该属性配置为true,那么jboss在启动的时候jndi的名称前会加上java: 这里我们jndi的名称为KBSDS,那么未配置该属性或该属性为true的话,你在spring中使用jndi时指定的jndiName就应该为java:KBSDS,若配置为false,那么jboss服务器不会为你加上java: 你在spring中jndiName应当配置为KBSDS,即与jndi-name属性值等同。这里为了方便期间设置该属性为false
拷贝oracle驱动
拷贝oracle驱动 class12.jar到jboss的如下目录
D:\jboss-4.2.3.GA\lib
D:\jboss-4.2.3.GA\server\default\lib
切记数据库驱动拷贝到D:\jboss-4.2.3.GA\server\default\lib目录下,否则即使你jndi配置的再怎么正确都会报如下错误,该错误在jboss启动的时候并不会报出,只有在正式遇数据库进行交互的时候才会报此错误,大概错误是这样的。此处花了好长时间才解决。
org.springframework.transaction.CannotCreateTransactionException: Could not open JDBC Connection for transaction; nested exception is org.jboss.util.NestedSQLException: Could not create connection; - nested throwable: (org.jboss.resource.JBossResourceException: Apparently wrong driver class specified for URL: class: oracle.jdbc.driver.OracleDriver, url: jdbc:oracle:thin:@192.168.4.243:1521:future); - nested throwable: (org.jboss.resource.JBossResourceException: Could not create connection; - nested throwable: (org.jboss.resource.JBossResourceException: Apparently wrong driver class specified for URL: class: oracle.jdbc.driver.OracleDriver, url: jdbc:oracle:thin:@192.168.4.243:1521:future))
org.springframework.jdbc.datasource.DataSourceTransactionManager.doBegin(DataSourceTransactionManager.java:238)
org.springframework.transaction.support.AbstractPlatformTransactionManager.getTransaction(AbstractPlatformTransactionManager.java:374)
org.springframework.transaction.interceptor.TransactionAspectSupport.createTransactionIfNecessary(TransactionAspectSupport.java:263)
org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:101)
org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:171)
org.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(ExposeInvocationInterceptor.java:89)
org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:171)
org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:204)
$Proxy67.managerLogin(Unknown Source)
com.future.knowledges.action.ManagerAction.execute(ManagerAction.java:62)
sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
配置spring配置文件
在applicationContext.xml中配置如下信息:
<bean name="dataSource" class="org.springframework.jndi.JndiObjectFactoryBean">
<property name="jndiName">
<value>KBSDS</value>
</property>
</bean>此种方式指定jndiName为KBSDS并未java:前缀,需要你手动在jboss的jndi配置文件中设置use-java-context属性为fasle,若未设置该属性或设置为true那么此处应该是这样子的
<bean name="dataSource" class="org.springframework.jndi.JndiObjectFactoryBean">
<property name="jndiName">
<value>java:KBSDS</value>
</property>
</bean>需要你手动加上java:前缀后面跟jboss下配置的jndi的名称
其实这里的配置主要是根据jboss服务器启动时控制台给出的信息来配置的
设置use-java-context为false时控制台给出的jndi信息
11:13:34,250 INFO [ConnectionFactoryBindingService] Bound ConnectionManager 'jboss.jca:service=ConnectionFactoryBinding,name=JmsXA' to JNDI name 'java:JmsXA'
11:13:34,359 INFO [WrapperDataSourceService] Bound ConnectionManager 'jboss.jca:service=DataSourceBinding,name=KBSDS' to JNDI name 'KBSDS'
11:13:34,406 INFO [TomcatDeployer] deploy, ctxPath=/KBS, warUrl=/deploy/KBS.war/
11:13:34,781 INFO [[/KBS]] Initializing Spring root WebApplicationContext设置use-java-context为true或不设置时控制台给出的jndi信息
11:25:15,921 INFO [ConnectionFactoryBindingService] Bound ConnectionManager 'jboss.jca:service=ConnectionFactoryBinding,name=JmsXA' to JNDI name 'java:JmsXA'
11:25:15,984 INFO [ConnectionFactoryBindingService] Bound ConnectionManager 'jboss.jca:service=DataSourceBinding,name=KBSDS' to JNDI name 'java:KBSDS'
11:25:16,031 INFO [TomcatDeployer] deploy, ctxPath=/KBS, warUrl=/deploy/KBS.war/
注意对比两次控制台分别打印的信息,从中很容易发现,其实就是use-java-context属性的作用。关于该属性,大家可以去参看jboss的官方文档。这里就不细说了。
到此jboss下配置jndi 以及整合spring已经成功配置起来了,接下来就是一些细化了,大家可以去查询jboss的关于jndi配置的文档。
其实在jboss下配置jndi远远比在tomcat下配置jndi简单的多。
总结下来就这几步
拷贝jndi模板到server\default\deploy目录下,并做修改,这里面模板文件均是以数据库类型-ds.xml命名的。
拷贝数据库驱动到\server\default\lib目录和jboss安装目录\lib下即可。
分享到:
相关推荐
本文将深入解析如何在JBoss中配置MySQL的JNDI数据源,确保应用程序能够高效、稳定地访问数据库资源。 ### JBoss与JNDI的关联 JBoss作为一个高性能的Java应用服务器,提供了丰富的功能支持企业级应用开发。JNDI作为...
然而,有时我们可能希望在非Web环境下或不使用JNDI的情况下配置数据源,这时我们需要在Spring的配置文件中等价地实现JNDI的数据源配置。以下是如何在Spring中进行这种转换的详细步骤和知识点: 1. **理解JNDI配置**...
2. 在 weblogic 或 jboss 等应用服务器中配置 JNDI 数据源,然后在 Spring 配置文件中使用 JndiObjectFactoryBean 来引入数据源:<bean id="dataSource" class="org.springframework.jndi.JndiObjectFactoryBean">.....
- 在Java应用服务器(如Tomcat、JBoss、WebLogic等)中,你需要先配置一个JNDI数据源。这通常在服务器的管理控制台或者配置文件(如Tomcat的`context.xml`)中完成。例如,在Tomcat中,可以在`server.xml`或`...
1. **配置JNDI数据源**:在JBoss AS 7的`standalone.xml`或`domain.xml`配置文件中,你需要创建一个JNDI数据源。例如,创建名为`java:jboss/datasources/MyDB`的数据源,设置数据库驱动、URL、用户名和密码等。 ```...
1. **创建数据源配置文件**:这通常是在应用服务器(如Tomcat、JBoss)的配置文件中完成的。例如,在Tomcat中,我们可以在`conf/server.xml`的`GlobalNamingResources`元素下添加一个`Resource`元素,如下所示: ``...
除了通过Properties文件配置数据源外,还可以选择使用JNDI(Java Naming and Directory Interface)来管理数据源。这种方式常用于Web容器(如Tomcat、JBoss等)中,可以实现更高级别的连接池管理和配置。以下是在...
部署到 JBOSS EAP6.3 利用容器使用 JPA 管理实体使用 Postgresql 数据源连接到: JBOSS 事务管理器JNDI 数据源实体管理器初始设置创建一个 postgresql 数据源,其 JNDI 名称为: java:/postgresql_ds 。 注意 - 在 ...
2. 检查`JBOSS_HOME\server\default\deploy\oracle-ds.xml`,这是数据源配置文件。确保其中的JNDI名称(如`spis0131`)与你的项目配置文件中的一致。如果不一致,你需要根据项目需求进行相应的修改。 3. 在项目中,...
JBOSS是一个开源的应用服务器,基于Java EE(Java Platform, Enterprise Edition)规范,提供了一系列的服务,包括事务管理、ejb(Enterprise JavaBeans)、JMS(Java Message Service)以及数据源等。JBOSS 2.2.1是...
【Spring应用扩展】主要涉及了Spring框架中的一些高级特性,包括Spring配置的拓展、属性文件的引用、JNDI数据源的使用以及Bean的作用域。下面将详细解释这些知识点。 1. **拓展Spring的配置** - 在Spring框架中,...
JNDI是一种服务,它提供了一个接口来查找和管理Java对象的名称,这些对象可以是消息队列、数据源或者其他服务。在Spring中,JNDI通常用于查找消息队列的位置,这样应用就可以通过JMS模板发送或接收消息。JNDI查找...
3. **配置数据源**:在Web应用服务器如Tomcat、Jetty或JBoss中,数据源的配置通常在服务器的配置文件中完成,如Tomcat的`context.xml`或`server.xml`。配置项包括数据库驱动类、URL、用户名、密码等。在Spring框架中...
这些元素定义了应用程序如何与数据库或其他外部资源进行交互,通常包括数据源、JMS 队列和主题等。配置包括了如 `res-ref-name`、`res-type`、`res-auth` 和 `res-sharing-scope` 等属性,用于定义资源引用的名称、...
你可以在这里配置服务器的端口、内存大小、数据源、连接池等参数。 2. **部署应用**:将你的应用打包成 `.war` 或 `.ear` 文件,放入 `JBOSS_HOME/standalone/deployments` 目录,JBoss 会自动检测并部署这个应用。...
在应用启动后,Spring会根据配置创建并管理数据源,MyBatis则通过这个数据源来建立到数据库的连接,执行SQL语句。 总的来说,选择合适的数据库连接池需要考虑性能、稳定性、监控需求以及项目规模等因素。在实际开发...
7. **数据源与连接池**:理解JBoss的数据源配置,包括JNDI(Java Naming and Directory Interface)查找,以及连接池的管理和优化。 8. **集群与高可用性**:探索JBoss的集群功能,如何实现负载均衡和故障转移,以...
2. **配置过程**:可能会介绍如何在不同环境下(如Tomcat、Jboss等应用服务器)配置数据源,包括XML配置文件(如context.xml)的编写,或者在Spring框架中使用Java配置方式。 3. **源码解析**:博客可能深入到源码...
7. **JNDI(Java Naming and Directory Interface)**:JBoss使用JNDI来查找和绑定资源,如EJB、数据源和邮件会话,方便应用的配置和查找。 8. **集群与高可用性**:JBoss支持集群配置,可以实现负载均衡和故障转移...
在JBoss应用服务器上使用Druid,你需要在JBoss的类路径中包含Druid的相关jar包,并在配置文件中设置Druid的数据源。这通常涉及以下步骤: 1. 将Druid的jar包(包括druid-core.jar和ojdbc5-11.2.0.3.jar)放入JBoss...