用这些ejb+jboss7.1+jndi 访问mysql数据库怎么弄呢

解决方案 »

  1.   

    jboss7没有试过jboss6.1.0 final
    1 编辑jboss-6.1.0.Final/docs/examples/jca/mssql-ds.xml或者mssql-xa-ds.xml(xa resource)
      connection-url, user-name, password
    2 copy 以上文件到jboss-6.1.0.Final/server/default/deploy下
    3 以上是完成数据源的配置工作4 stateless session bean
      
    @Stateless
    @TransactionAttribute(TransactionAttributeType.REQUIRED)
    public class Service implements ServiceLocal {
        @Resource(mappedName = "java:/MysqlDS")
        private DataSource dataSource;
    }
    5 以上完成session bean的配置,注意MysqlDS与你配置的resource xml中一致。
    6 jndi look 代码         private static Object lookUpJndiObject(String jndiName) {
            InitialContext ctx = null;
            try {
                ctx = new InitialContext();
                Object object = ctx.lookup(jndiName);
                return object;
            } catch (NamingException e) {
                String errorMessage = "NamingException: jndiName:" + jndiName;
                throw new TMRuntimeException(errorMessage, e);
            } finally {
                SafeCloseUtil.close(ctx);
            }
        }jndi名称格式  DeployProjectName + "/" + beanname + "/" + local(or remote)
      

  2.   

    其实很简单。jndi 的概念, 其实是跟 map 是一样的。
    区别只是 前者 是可以 做分布式的。map.put(key,value);  
    value是一个对象。
    用jndi 是一样的jndi 你首先得有一个jndi.properties文件然后你把你的数据源 绑定在 jndi 上。
    InitialContext ctx = new InitialContext();
    ctx.bind(jndiName, obj); 
    如此而已。
    在你用的时候在把他取出来
    InitialContext ctx = new InitialContext();
    obj=ctx.look(jndiName);按照你的需求 obj就是一个 dataSource ..这个dataSource 你可以自己构造
    如果你用了 hibernate 那就简单了。(Jboss 自带的 JPA 是用的hibernate的)