jboss下部署配置spring jndi
来源:互联网 发布:微信扫码支付开发java 编辑:程序博客网 时间:2024/05/16 00:55
项目cros :
环境:
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<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>
其他几个属性不做过多解释
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配置文件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)
在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那么此处应该是这样子的<property name="jndiName">
<value>KBSDS</value>
</property>
</bean>
<bean name="dataSource" class="org.springframework.jndi.JndiObjectFactoryBean">
<property name="jndiName">
<value>java:KBSDS</value>
</property>
</bean>
需要你手动加上java:前缀后面跟jboss下配置的jndi的名称<property name="jndiName">
<value>java:KBSDS</value>
</property>
</bean>
其实这里的配置主要是根据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: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
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/
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下部署配置spring jndi
- jboss下部署配置spring jndi
- jboss下配置jndi利用spring的IOC来获得
- jboss下数据源jndi配置
- Linux下配置部署Jboss
- JBOSS JNDI的配置
- JBoss JNDI的配置
- JBoss JNDI的配置
- JBOSS 配置 数据源JNDI
- jboss配置jndi数据源
- jboss JNDI配置
- JBoss 配置JNDI
- jboss下配置和部署EJB简介
- Spring下的JNDI数据源配置
- Spring下Proxool和jndi配置
- JBOSS的JNDI数据源配置
- JBOSS的JNDI数据源配置
- jboss配置jndi连接池
- 微型计算机的总线简介
- texmaker中编译问题和\usepackage[dvipdfm]这个莫名其妙的包
- C#程序开发范例宝典(第三版)(奋斗的小鸟)_PDF 电子书
- UVa 11388 - GCD LCM
- dedecms 与 discuz 对比,最新的看法
- jboss下部署配置spring jndi
- 什么是内网、公网、NAT?
- 如何用游戏化改变拖延?
- error C2440: ‘static_cast‘ LRESULT LRESULT错误
- 期末临考小记-1。
- Highcharts进阶应用
- 计算机网络基础——体系结构
- C#编程宝典(十年典藏版)(奋斗的小鸟)_PDF 电子书
- CSDN第五天上课