环境:
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下即可。
分享到:
相关推荐
在IT领域,特别是Java应用服务器环境下,JBoss与MySQL数据库的集成是常见需求之一,而JNDI(Java Naming and Directory Interface)在此过程中扮演着关键角色。本文将深入解析如何在JBoss中配置MySQL的JNDI数据源,...
- `spring-setting.xml`: 如果你的项目使用Spring框架,这个文件可能包含了与JBoss的集成配置,如DataSource的定义。 - `jbpm.hibernate.cfg.xml`: 如果涉及Hibernate,这个文件可能是Hibernate的配置,确保数据库...
VFS允许Spring访问部署在JBOSS中的应用程序资源,如jar包内的XML配置文件等。 - **实现方式**:Spring可以通过JNDI或特定的文件协议访问JBOSS内部的资源。 - **优点**: - 提高了应用程序的灵活性和可移植性。 - ...
当在JBoss环境中使用Spring时,这个jar文件扮演着桥梁的角色,确保Spring的应用程序能在JBoss上正确运行并利用JBoss提供的服务,如EJB、JNDI等。 2. **jboss-spring-int-vfs.jar**:这个文件涉及到JBoss的虚拟文件...
这通常在JBoss的配置文件(如standalone.xml或domain.xml)中完成,以便应用程序可以通过JNDI查找这些资源。 3. **配置Spring**:在Spring的配置文件中,声明JMS的ConnectionFactory和Destination。使用`<jee:jndi-...
但在JBoss AS 7上部署Spring Boot应用时,需要进行一些额外的步骤: 1. **配置JNDI数据源**:在JBoss AS 7的`standalone.xml`或`domain.xml`配置文件中,你需要创建一个JNDI数据源。例如,创建名为`java:jboss/data...
4. **配置JNDI**:JBOSS可以通过JNDI(Java Naming and Directory Interface)查找并连接到TOMCAT,需要在JBOSS的`jboss-service.xml`中添加相应的配置。 5. **测试集成**:启动JBOSS,检查TOMCAT是否能正常工作,...
在 JBoss 中使用 JNDI 需要配置一系列的属性,例如: - `java.naming.factory.initial`:指定初始命名上下文工厂类。 - `java.naming.provider.url`:定义 JNDI 提供者的 URL。 - `java.naming.factory.url.pkgs`:...
2. **Web 应用**:通过 JSF、Spring MVC 等技术,你可以创建丰富的 Web 应用,并在 JBoss 上进行部署和测试。 3. **数据持久化**:利用 JPA 或 Hibernate,你可以轻松地在 JBoss 中实现数据库的数据持久化操作。 4...
部署到 JBOSS EAP6.3 利用容器使用 JPA 管理实体使用 Postgresql 数据源连接到: JBOSS 事务管理器JNDI 数据源实体管理器初始设置创建一个 postgresql 数据源,其 JNDI 名称为: java:/postgresql_ds 。 注意 - 在 ...
7. **JNDI(Java Naming and Directory Interface)**:JBoss使用JNDI来查找和绑定资源,如EJB、数据源和邮件会话,方便应用的配置和查找。 8. **集群与高可用性**:JBoss支持集群配置,可以实现负载均衡和故障转移...
你需要在Spring配置文件中声明一个`jee:jndi-lookup`元素,指定JNDI名称,这是你在Jboss上为EJB分配的名称。 - Struts2将处理用户请求,并调用Spring管理的Bean来执行业务逻辑。确保在Struts2配置文件中正确引用了...
7. **数据源与连接池**:理解JBoss的数据源配置,包括JNDI(Java Naming and Directory Interface)查找,以及连接池的管理和优化。 8. **集群与高可用性**:探索JBoss的集群功能,如何实现负载均衡和故障转移,以...
最后,书中可能还会涉及JBoss与其他技术的集成,如Spring框架、Hibernate ORM和Tomcat等,这些都是在实际开发中常见的场景。 附带的《JBoss Administration (3.2.x Series) - 2003.pdf》文件,可能是JBoss 3.2.x...
- **热部署**:JBOSS支持热部署,可以在不停止服务器的情况下更新EJB。 5. **EJB 3.x的新特性** - **轻量级**:引入了注解,减少了XML配置,简化了开发过程。 - **POJO(Plain Old Java Object)**:Bean可以是...
JBoss 支持与多种工具集成,例如 Apache Tomcat 作为 Servlet 容器,JNDI (Java Naming and Directory Interface) 用于服务发现,以及 Quartz 或 Spring Scheduler 进行任务调度。这些工具的整合使用可以实现更复杂...
在实际开发中,考虑到EJB3的部署需求,可能会选择JBoss这样的兼容EJB的服务器运行EJB组件,而Web应用部分(包括Struts和Spring)则可以部署在Tomcat这样的轻量级Servlet容器中。这种方式下,EJB和Web应用之间的通信...
1. 创建一个 JBoss 模块:在 `modules` 目录下,创建一个新的目录结构,如 `com/spring/globalcontext/main`,并放入 Spring 配置文件(如 `applicationContext.xml`)和其他相关依赖。 2. 编写模块描述符:在模块...
这部分内容解释了如何在不同的J2EE环境(如Tomcat、JBoss等)下配置和部署Hibernate应用程序,包括事务策略配置和JNDI绑定的SessionFactory等高级主题。 整体来看,这本电子书为Java开发者提供了一个全面了解和掌握...