获得jboss数据源 <use-java-context>false</use-java-context>的问题
来源:互联网 发布:王思聪与电魂网络关系 编辑:程序博客网 时间:2024/05/09 22:58
原文地址: 关于JBOSS数据源配置 <use-java-context>false</use-java-context>的问题
数据源定义文件**-ds.xml中,有个use-java-context属性,把它设为false的话,JNDIView里生成的数据源就会位于全局命名空间,没有java前缀了。
一、没有添加<use-java-context>false</use-java-context>
<local-tx-datasource> <jndi-name>platform</jndi-name> <connection-url>jdbc:oracle:thin:@59.65.233.199:1521:GIS</connection-url> <driver-class>oracle.jdbc.driver.OracleDriver</driver-class> <user-name>PLATFORM</user-name> <password>PLATFORM</password> <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>
获得数据源的代码
public Connection getConnection() {Connection connection = null;try {Context ctx = new InitialContext();// 得到初始化上下文DataSource ds = (DataSource) ctx.lookup("java:platform");// 这样查找数据源,不要lookup("platform");connection = ds.getConnection();} catch (SQLException e) {e.printStackTrace();} catch (NamingException e) {e.printStackTrace();}return connection;}
二、添加<use-java-context>false</use-java-context>
<jndi-name>flow</jndi-name> <use-java-context>false</use-java-context> <connection-url>jdbc:oracle:thin:@59.65.233.199:1521:GIS</connection-url> <driver-class>oracle.jdbc.driver.OracleDriver</driver-class> <user-name>FLOW</user-name> <password>FLOW</password> <exception-sorter-class-name>org.jboss.resource.adapter.jdbc.vendor.OracleExceptionSorter</exception-sorter-class-name>
获得数据源的代码
public Connection getConnection1() {Connection connection = null;try {Context ctx = new InitialContext();DataSource ds = (DataSource) ctx.lookup("flow");connection = ds.getConnection();} catch (SQLException e) {e.printStackTrace();} catch (NamingException e) {e.printStackTrace();}return connection;}
三、如果持久层使用了EJB,对应的persistence.xml配置文件为:
<persistence><persistence-unit name="test"><jta-data-source>java:/platform</jta-data-source><properties><property name="hibernate.dialect" value="org.hibernate.dialect.Oracle9Dialect" /><property name="com.arjuna.ats.jta.allowMultipleLastResources"value="true" /><property name="hibernate.hbm2ddl.auto" value="update" /></properties></persistence-unit><persistence-unit name="test1"><jta-data-source>flow</jta-data-source><properties><property name="hibernate.dialect" value="org.hibernate.dialect.Oracle9Dialect" /><property name="com.arjuna.ats.jta.allowMultipleLastResources"value="true" /><property name="hibernate.hbm2ddl.auto" value="update" /></properties></persistence-unit></persistence>
四、如果想跨JVM的话,需要有<use-java-context>false</use-java-context>,
这样做的好处就是解决了不在同一VM里导致的javax.naming.NameNotFoundException: *** not bound 异常。
新建一个类 TestDS.java 运行,此时,它们不在一个JVM中
import java.sql.Connection;import java.sql.SQLException;import java.util.Properties;import javax.naming.Context;import javax.naming.InitialContext;import javax.naming.NamingException;import javax.sql.DataSource;public class TestDS {public static void main(String[] args) {Properties prop = new Properties();prop.setProperty(Context.INITIAL_CONTEXT_FACTORY,"org.jnp.interfaces.NamingContextFactory");prop.setProperty(Context.PROVIDER_URL, "localhost:1099");InitialContext context = null;DataSource dataSource = null;try {context = new InitialContext(prop);//有<use-java-context>false</use-java-context> 在不同JVM可以访问,以下两种方式都可以dataSource = (DataSource) context.lookup("flow");dataSource = (DataSource) context.lookup("java:flow");System.out.println(dataSource);////没有<use-java-context>false</use-java-context>//报异常 javax.naming.NameNotFoundException: platform not bounddataSource = (DataSource) context.lookup("platform");//java:platform 也一样System.out.println(dataSource);} catch (NamingException e) {e.printStackTrace();}}}
代码如下:运行,报异常
javax.naming.NoInitialContextException: Cannot instantiate class: org.jnp.interfaces.NamingContextFactory
添加 jboss-4.2.3.GA\client\jbossall-client.jar后即可运行。
- 获得jboss数据源 <use-java-context>false</use-java-context>的问题
- context:component-scan标签的use-default-
- context:component-scan标签的use-default-filters属性
- java context
- Use-case Model: Writing Requirements In Context
- Use Cases: Requirements in Context, Second Edition
- Cannot use this in a static context
- Cannot use this in a static context
- Cannot use this in a static context
- Cannot use this in a static context
- Cannot use this in a static context
- 关于jboss 5.0.0 上配置数据源要注意的一个问题 Java获取JBOSS数据源
- Android Context.bindService 返回 false 问题
- Android获得程序的Context
- context:component-scan扫描使用上的容易忽略的use-default-filters
- context:component-scan扫描使用上的容易忽略的use-default-filters
- context:component-scan扫描使用上的容易忽略的use-default-filters
- context:component-scan扫描使用上的容易忽略的use-default-filters
- iOS即时语音聊天技术实践
- eclipse智能提示
- JSON入门讲解
- [坠露木兰]Kinect Face Tracking SDK[Kinect人脸跟踪]2013-4-10更新
- Oracle 索引 避免全表扫描
- 获得jboss数据源 <use-java-context>false</use-java-context>的问题
- 古代女性如何避孕
- oracle字符集AL32UTF8为ZHS16GBK
- Openssl
- 图像缩放的双线性内插值算法的原理解析
- Android 实用工具Hierarchy Viewer实战
- 黑马程序员_java连接数据库
- cocos2d-x for android (arm-linux-androideabi-gcc 缺失 )
- scrollViewDidScroll 不调用