`

关于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>从配置文件里去掉了。感觉这到清爽。
分享到:
评论

相关推荐

    jaxrs-api,javax.ws.rs.Path;

    &lt;servlet-class&gt;org.jboss.resteasy.plugins.server.servlet.HttpServlet30Dispatcher&lt;/servlet-class&gt; &lt;/servlet&gt; &lt;servlet-mapping&gt; &lt;servlet-name&gt;Resteasy&lt;/servlet-name&gt; &lt;url-pattern&gt;/app/service/*...

    easyflow表结构

    &lt;driver-class&gt;oracle.... &lt;track-statements&gt;false&lt;/track-statements&gt; &lt;exception-sorter-class-name&gt;org.jboss.resource.adapter.jdbc.vendor.OracleExceptionSorter&lt;/exception-sorter-class-name&gt; &lt;metadata&gt;

    EntityBean配置过程.txt

    1.1 添加数据源 在: \jboss-4.2.2.GA\docs\examples\jca\oracle-ds.xml,拷贝oracle-ds.xml 到: \jboss-4.2.2.GA\server\all\deploy 配置内容: &lt;jndi-name&gt;OracleDS&lt;/jndi-name&gt; &lt;connection-url&gt;jdbc:oracle:thin:...

    jboss 7.1.1 Final 的jsp热部署解决方案

    &lt;resource-root path="jboss-as-web-7.1.1.Final-RECOMPILE.jar"/&gt; 叙述的都很简单,我就不翻译了 原文详见:https://community.jboss.org/message/723945#723945#723945 按照作者所讲的方法操作了,问题奇迹般...

    EJB+JBOSS6.0+STRUT2简单登录实例

    -- 定义包管理配置的action 继承struts-default.xml中的配置 --&gt; &lt;package name="actions" extends="struts-default"&gt; &lt;!-- 定义Action(login.action) --&gt; &lt;action name="login" class="mypack.UserAction"&gt; &lt;!...

    在JBOSS下自定义JAAS登录模块的示例

    本示例利用JBoss提供的JAAS...&lt;/module-option&gt;&lt;br&gt; &lt;module-option name="hashAlgorithm"&gt;MD5&lt;/module-option&gt;&lt;br&gt; &lt;module-option name="hashEncoding"&gt;base64&lt;/module-option&gt; &lt;br&gt; &lt;module-option name="loginBo"&gt;...

    替换两个文件解决Tomcat6项目移植到JBoss5.1下的Logging异常

    &lt;jboss-web&gt; &lt;!-- For load class independently --&gt; &lt;class-loading java2ClassLoadingCompliance="true"&gt; &lt;loader-repository&gt; com.example:archive=Example.war &lt;loader-repository-config&gt; java2...

    JavaEE源代码 jboss-common

    JavaEE源代码 jboss-commonJavaEE源代码 jboss-commonJavaEE源代码 jboss-commonJavaEE源代码 jboss-commonJavaEE源代码 jboss-commonJavaEE源代码 jboss-commonJavaEE源代码 jboss-commonJavaEE源代码 jboss-...

    基于JBoss 4.x的J2EE 1.4应用开发指南

    J2EE发展趋势 &lt;br&gt;案例研究 &lt;br&gt;J2EE Tutorial&lt;br&gt;Java Pet Store&lt;br&gt;Java Adventure Builder&lt;br&gt;钟情JBoss 4.x&lt;br&gt;全书内容安排&lt;br&gt;1 安装JBoss 4.x&lt;br&gt;2 安装JBoss-IDE 1.4.0&lt;br&gt;3 基于JBoss 4.x的JSF应用开发&lt;br&gt;...

    JavaEE源代码 jboss-jmx

    JavaEE源代码 jboss-jmxJavaEE源代码 jboss-jmxJavaEE源代码 jboss-jmxJavaEE源代码 jboss-jmxJavaEE源代码 jboss-jmxJavaEE源代码 jboss-jmxJavaEE源代码 jboss-jmxJavaEE源代码 jboss-jmxJavaEE源代码 jboss-...

    JavaEE源代码 jboss-cache

    JavaEE源代码 jboss-cacheJavaEE源代码 jboss-cacheJavaEE源代码 jboss-cacheJavaEE源代码 jboss-cacheJavaEE源代码 jboss-cacheJavaEE源代码 jboss-cacheJavaEE源代码 jboss-cacheJavaEE源代码 jboss-cacheJavaEE源...

    JavaEE源代码 jboss-system

    JavaEE源代码 jboss-systemJavaEE源代码 jboss-systemJavaEE源代码 jboss-systemJavaEE源代码 jboss-systemJavaEE源代码 jboss-systemJavaEE源代码 jboss-systemJavaEE源代码 jboss-systemJavaEE源代码 jboss-...

    网上购物系统

    &lt;classpathentry kind="lib" path="WebRoot/WEB-INF/lib/jboss-archive-browsing.jar"/&gt; &lt;classpathentry kind="lib" path="WebRoot/WEB-INF/lib/jdbc2_0-stdext.jar"/&gt; &lt;classpathentry kind="lib" path="Web...

    jboss 5 原理 2 classloader

    JBoss has always had a unique way of dealing with classloading, and the new classloading layer that comes with Microcontainer is no exception (keep in mind that you can use Microcontainer without ...

    netty5.0权威指南

    建maven 工程 加依赖 &lt;dependency&gt; &lt;groupId&gt;io.netty&lt;/groupId&gt; &lt;artifactId&gt;netty-all&lt;/... &lt;artifactId&gt;jboss-marshalling-serial&lt;/artifactId&gt; &lt;version&gt;2.0.0.Beta2&lt;/version&gt; &lt;/dependency&gt;

    myclipse+jboss+ejbStateless

    &lt;br&gt;配置myclipse下的Jboss服务器&lt;br&gt;&lt;br&gt; EJBStatelss&lt;br&gt;&lt;br&gt;Jboss测试&lt;br&gt;&lt;br&gt; http://localhost:8080/&lt;br&gt;&lt;br&gt;准备工程&lt;br&gt; &lt;br&gt;新建bean&lt;br&gt; Session建立完毕,我们只建了remote的访问方式&lt;br&gt; 写入代码:&lt;br&gt; ...

    JAVA学习的参考学习流程

    04 JAVA SE 环境搭建 --&gt; 基础程序 --&gt; 面向对象 --&gt; 应用开发 --&gt; 高级应用 --&gt; Java新特性 --&gt; JDBC 05 JAVA EE WEB HTML --&gt; JavaScript --&gt; JSP --&gt; JavaBean --&gt; DAO --&gt; Smartupload --&gt; Servlet --&gt; MVC 06 ...

    jandex-maven-plugin:适用于Apache Maven的Jandex插件

    适用于Apache Maven的Jandex插件完整的文档可以在以下位置找到: : 基本用法&lt;build&gt; &lt;plugins&gt; &lt;plugin&gt; &lt;groupId&gt;org.jboss.jandex&lt;/groupId&gt; &lt;artifactId&gt;jandex-maven-plugin&lt;/artifactId&gt; &lt;version&gt;1.0.8&lt;/...

    MS系统下Quality Center9.0安装部署.doc

    &lt;license_identifier&gt;SN732563653&lt;/license_identifier&gt; &lt;edition&gt;enterprise&lt;/edition&gt; &lt;evaluation&gt;N&lt;/evaluation&gt; &lt;start_date&gt;12/13/2007&lt;/start_date&gt; &lt;expiration&gt;5/29/2099&lt;/expiration&gt; &lt;full_test_...

    jboss-logging-3.3.2.Final-API文档-中文版.zip

    赠送源代码:jboss-logging-3.3.2.Final-sources.jar; 赠送Maven依赖信息文件:jboss-logging-3.3.2.Final.pom; 包含翻译后的API文档:jboss-logging-3.3.2.Final-javadoc-API文档-中文(简体)版.zip; Maven坐标:...

Global site tag (gtag.js) - Google Analytics