`

关于JBOSS数据源配置 <use-java-context>false</use-java-context>的问题

阅读更多
其实这个问题可以归跟到只是一个JNDI查找时名字的问题。但是作用却不一样,一般来说,如果想跨VM的话,需要修改为<use-java-context>false</use-java-context>。具体的原因可以看:http://tomrose.iteye.com/blog/197368 这个帖子。

比如有XML配置:

<?xml version="1.0" encoding="UTF-8"?>


<datasources>
  <local-tx-datasource>
    <jndi-name>MySqlDS</jndi-name>
    <connection-url>jdbc:mysql://localhost:3306/openstarbbs</connection-url>
    <driver-class>com.mysql.jdbc.Driver</driver-class>
    <user-name>root</user-name>
    <password>sa</password>
    <use-java-context>false</use-java-context>
    <exception-sorter-class-name>org.jboss.resource.adapter.jdbc.vendor.MySQLExceptionSorter</exception-sorter-class-name>
    <metadata>
       <type-mapping>mySQL</type-mapping>
    </metadata>
  </local-tx-datasource>
</datasources>


很明显,我们添加了<use-java-context>false</use-java-context>。关于<use-java-context>false</use-java-context>的文档说明,自己GOOGLE一下就OK。

只要配置了<use-java-context>false</use-java-context>。我们使用JNDI查找就要这样去寻
找配置在JBOSS里的JNDI数据源:

Context ctx = new InitialContext(); //得到初始化上下文   
Object obj = ctx.lookup("MySqlDS");//这样查找数据源,不要 lookup("java:MySqlDS");


这样做的好处就是解决了不在同一VM里导致的javax.naming.NameNotFoundException: MySqlDS not bound 异常。

当然,包括所有依赖于JBOSS里JNDI数据源的所有BEAN都要改成lookup("MySqlDS")。如果DAO层使用了@PersistenceContext注解进行注入,那么需求该改该EJB组件的persistence.xml配置文件,改成:

<?xml version="1.0" encoding="UTF-8"?>
<persistence xmlns="http://java.sun.com/xml/ns/persistence"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://java.sun.com/xml/ns/persistence
    http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd" version="1.0">
    
	<persistence-unit name="OpenStarBBS" transaction-type="JTA">
  		<jta-data-source>MySqlDS</jta-data-source>
  		<properties>
			<property name="hibernate.hbm2ddl.auto" value="update" />
			<property name="hibernate.dialect" value="org.hibernate.dialect.MySQL5Dialect" />
			<property name="showSql" value="true"/> 
		</properties>
  		
	</persistence-unit>
  
</persistence>


主要就是修改:<jta-data-source>MySqlDS</jta-data-source>。


如果不配置<use-java-context>false</use-java-context>,我们需要:

Context ctx = new InitialContext(); //得到初始化上下文   
Object obj = ctx.lookup("java:MySqlDS");


而该EJB组件的persistence.xml配置文件为:

<?xml version="1.0" encoding="UTF-8"?>
<persistence xmlns="http://java.sun.com/xml/ns/persistence"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://java.sun.com/xml/ns/persistence
    http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd" version="1.0">
    
	<persistence-unit name="OpenStarBBS" transaction-type="JTA">
  		<jta-data-source>java:MySqlDS</jta-data-source>
  		<properties>
			<property name="hibernate.hbm2ddl.auto" value="update" />
			<property name="hibernate.dialect" value="org.hibernate.dialect.MySQL5Dialect" />
			<property name="showSql" value="true"/> 
		</properties>
  		
	</persistence-unit>
  
</persistence>


这样做之后只能在同一VM里lookup到MySqlDS数据源JNDI。

我一直在想,需要把数据源暴露开么?一般EJB应用是会话BEAN发布一个远程BEAN,之后展现层在通过这个BEAN取到数据,需要在展现层里写访问数据源的代码吗?所以,最后我又把<use-java-context>false</use-java-context>从配置文件里去掉了。感觉这到清爽。
分享到:
评论

相关推荐

    JBoss 下配置 Oracle 数据源

    &lt;use-java-context&gt;false&lt;/use-java-context&gt; &lt;connection-url&gt;jdbc:oracle:thin:@localhost:1521:orcl&lt;/connection-url&gt; &lt;driver-class&gt;oracle.jdbc.driver.OracleDriver&lt;/driver-class&gt; &lt;user-name&gt;root&lt;/user...

    JBoss7.1.1配置MySql数据源

    在JBoss中配置MySQL数据源是开发Java EE应用程序时的重要步骤,这允许应用与数据库进行交互。下面将详细介绍如何在JBoss 7.1.1中配置MySQL数据源。 首先,我们需要准备MySQL数据库的相关信息,包括数据库URL、...

    Jboss7.1.1p配置mysql和oracle以及项目调用参照.pdf

    &lt;datasource jndi-name="java:/MySqlDS" pool-name="MySqlDS" enabled="true" use-java-context="true"&gt; &lt;connection-url&gt;jdbc:mysql://localhost:3306/gg&lt;/connection-url&gt; &lt;driver&gt;mysql&lt;/driver&gt; &lt;pool&gt; ...

    jboss7连接oracle驱动及配置

    &lt;datasource jndi-name="java:jboss/datasources/OracleDS" pool-name="OracleDS" enabled="true" use-java-context="true"&gt; &lt;connection-url&gt;jdbc:oracle:thin:@your-oracle-host:port/service_name&lt;/connection-...

    jboss配置数据源(oracle)

    &lt;datasource jndi-name="java:jboss/datasources/OracleDS" pool-name="OracleDS" enabled="true" use-java-context="true"&gt; &lt;connection-url&gt;jdbc:oracle:thin:@//your-oracle-host:port/service-name&lt;/...

    jbpm7.3+mysql相关配置文件

    &lt;datasource jndi-name="java:jboss/datasources/ExampleDS" pool-name="ExampleDS" enabled="true" use-java-context="true"&gt; &lt;connection-url&gt;jdbc:h2:mem:testdb;DB_CLOSE_DELAY=-1;DB_CLOSE_ON_EXIT=FALSE&lt;/...

    Jboss_jndi-demo2.zip

    &lt;datasource jndi-name="java:jboss/datasources/MySQLDS" pool-name="MySQLDS" enabled="true" use-java-context="true"&gt; &lt;connection-url&gt;jdbc:mysql://localhost:3306/mydatabase?useSSL=false&amp;serverTime...

    tomcat、jboss 连接池配置

    在Java代码中使用JBoss的数据源与Tomcat类似: ```java import javax.naming.Context; import javax.naming.InitialContext; import javax.sql.DataSource; import java.sql.Connection; public class ...

    在jboss连接oracle

    &lt;datasource jndi-name="java:jboss/datasources/OracleDS" pool-name="OracleDS" enabled="true" use-java-context="true"&gt; &lt;connection-url&gt;jdbc:oracle:thin:@localhost:1521:ORCL&lt;/connection-url&gt; &lt;driver-...

    Jboss_jndi.zip

    &lt;datasource jndi-name="java:jboss/datasources/MySqlDS" pool-name="MySqlDS" enabled="true" use-java-context="true"&gt; &lt;connection-url&gt;jdbc:mysql://localhost:3306/mydb&lt;/connection-url&gt; &lt;driver-class&gt;...

    teradata DB connection在Jboss中的配置

    &lt;data-source jndi-name="java:jboss/datasources/TeradataDS" pool-name="TeradataDS" enabled="true" use-java-context="true"&gt; &lt;connection-url&gt;jdbc:teradata://your_db_server/DATABASE=your_database&lt;/...

    Jboss+EJB的配置与使用实验报告

    &lt;use-java-context&gt;false&lt;/use-java-context&gt; &lt;connection-url&gt;jdbc:mysql://localhost:3306/lab7&lt;/connection-url&gt; &lt;driver-class&gt;com.mysql.jdbc.Driver&lt;/driver-class&gt; &lt;user-name&gt;root&lt;/user-name&gt; ...

    datasource_application_xml_test:测试应用程序以帮助JBoss社区的人员重现错误

    &lt;datasource jndi-name="java:jboss/datasources/ExampleDS" pool-name="ExampleDS" enabled="true" use-java-context="true"&gt; &lt;connection-url&gt;jdbc:h2:mem:test;DB_CLOSE_DELAY=-1;DB_CLOSE_ON_EXIT=FALSE&lt;/...

    ssh(structs,spring,hibernate)框架中的上传下载

    -- 数据源的配置 //--> 3. <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" 4. destroy-method="close"> 5. <property name="driverClassName" value="oracle.jdbc.driver.OracleDriver...

Global site tag (gtag.js) - Google Analytics